- - -
- - - - - - - - - - - - {{ title }} app is running! - - - - - -
- - -

Resources

-

Here are some links to help you get started:

- - - - -

Next Steps

-

What do you want to do next with your app?

- - - -
-
- - - New Component -
- -
- - - Angular Material -
- -
- - - Add Dependency -
- -
- - - Run and Watch Tests -
- -
- - - Build for Production -
-
- - -
-
ng generate component xyz
-
ng add @angular/material
-
ng add _____
-
ng test
-
ng build --prod
-
- - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
+
+
- - - - - - - -
- - - - - - - - - - - - \ No newline at end of file diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 2c3ba29..836cf26 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -3,16 +3,23 @@ import { NgModule } from '@angular/core'; import { AppRoutingModule } from './app-routing.module'; import { AppComponent } from './app.component'; +import { TreeComponent } from './tree/tree.component'; +import {ButtonModule, MessageService, TreeModule} from 'primeng/primeng'; +import {HttpClientModule} from '@angular/common/http'; @NgModule({ declarations: [ - AppComponent + AppComponent, + TreeComponent ], imports: [ BrowserModule, - AppRoutingModule + AppRoutingModule, + TreeModule, + HttpClientModule, + ButtonModule ], - providers: [], + providers: [ MessageService], bootstrap: [AppComponent] }) export class AppModule { } diff --git a/src/app/node.service.spec.ts b/src/app/node.service.spec.ts new file mode 100644 index 0000000..d8589c0 --- /dev/null +++ b/src/app/node.service.spec.ts @@ -0,0 +1,12 @@ +import { TestBed } from '@angular/core/testing'; + +import { NodeService } from './node.service'; + +describe('NodeService', () => { + beforeEach(() => TestBed.configureTestingModule({})); + + it('should be created', () => { + const service: NodeService = TestBed.get(NodeService); + expect(service).toBeTruthy(); + }); +}); diff --git a/src/app/node.service.ts b/src/app/node.service.ts new file mode 100644 index 0000000..4b9eb36 --- /dev/null +++ b/src/app/node.service.ts @@ -0,0 +1,16 @@ +import {HttpClient, HttpClientModule} from '@angular/common/http'; +import { Injectable } from '@angular/core'; + +import { TreeNode } from 'primeng/api'; + +@Injectable({providedIn: 'root'}) +export class NodeService { + + constructor(private http: HttpClient) { } + + getFiles() { + return this.http.get('http://localhost:4200/assets/files.json') + .toPromise() + .then(res => res.data as TreeNode[]); + } +} diff --git a/src/app/tree/tree.component.css b/src/app/tree/tree.component.css new file mode 100644 index 0000000..e69de29 diff --git a/src/app/tree/tree.component.html b/src/app/tree/tree.component.html new file mode 100644 index 0000000..c8cd4d0 --- /dev/null +++ b/src/app/tree/tree.component.html @@ -0,0 +1,6 @@ + + +
+ + +
diff --git a/src/app/tree/tree.component.spec.ts b/src/app/tree/tree.component.spec.ts new file mode 100644 index 0000000..e3df2c3 --- /dev/null +++ b/src/app/tree/tree.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { TreeComponent } from './tree.component'; + +describe('TreeComponent', () => { + let component: TreeComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ TreeComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(TreeComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/tree/tree.component.ts b/src/app/tree/tree.component.ts new file mode 100644 index 0000000..fb6a84b --- /dev/null +++ b/src/app/tree/tree.component.ts @@ -0,0 +1,66 @@ +import {Component, OnInit, ViewChild} from '@angular/core'; +import {Tree} from 'primeng/tree'; +import {MessageService, TreeNode} from 'primeng/api'; +import {NodeService} from '../node.service'; + +@Component({ + selector: 'app-tree', + templateUrl: './tree.component.html', + styleUrls: ['./tree.component.css'] +}) +export class TreeComponent implements OnInit { + @ViewChild('expandingTree', {static: false}) + expandingTree: Tree; + filesTree10: TreeNode[]; + + constructor(private nodeService: NodeService, private messageService: MessageService) { } + + ngOnInit() { + this.nodeService.getFiles().then(files => this.filesTree10 = files); + } + + // nodeSelect(event) { + // this.messageService.add({severity: 'info', summary: 'Node Selected', detail: event.node.label}); + // } + // + // nodeUnselect(event) { + // this.messageService.add({severity: 'info', summary: 'Node Unselected', detail: event.node.label}); + // } + // + // nodeExpandMessage(event) { + // this.messageService.add({severity: 'info', summary: 'Node Expanded', detail: event.node.label}); + // } + // + // nodeExpand(event) { + // if(event.node) { + // // in a real application, make a call to a remote url to load children of the current node and add the new nodes as children + // this.nodeService.getLazyFiles().then(nodes => event.node.children = nodes); + // } + // } + // + // viewFile(file: TreeNode) { + // this.messageService.add({severity: 'info', summary: 'Node Selected with Right Click', detail: file.label}); + // } + + expandAll(){ + this.filesTree10.forEach( node => { + this.expandRecursive(node, true); + } ); + } + + collapseAll(){ + this.filesTree10.forEach( node => { + this.expandRecursive(node, false); + } ); + } + + private expandRecursive(node: TreeNode, isExpand: boolean){ + node.expanded = isExpand; + if(node.children){ + node.children.forEach( childNode => { + this.expandRecursive(childNode, isExpand); + } ); + } + } + +} diff --git a/src/assets/files.json b/src/assets/files.json new file mode 100644 index 0000000..9fd7f97 --- /dev/null +++ b/src/assets/files.json @@ -0,0 +1,78 @@ +{ + "data": + [ + { + "label": "XA 1", + "data": "XA 1 Folder", + "expandedIcon": "fa fa-folder-open", + "collapsedIcon": "fa fa-folder", + "children": + [ + { + "label": "XB 1-1", + "data": "XB 1-1 Folder", + "expandedIcon": "fa fa-folder-open", + "collapsedIcon": "fa fa-folder", + "children": [{"label": "CI 1-1-1", "icon": "fa fa-file-word-o", "data": ""}, + {"label": "CI 1-1-2", "icon": "fa fa-file-word-o", "data": ""}] + }, + { + "label": "XB 1-2", + "data": "XB 1-2 Folder", + "expandedIcon": "fa fa-folder-open", + "collapsedIcon": "fa fa-folder", + "children": [{"label": "CI 1-2-1", "icon": "fa fa-file-word-o", "data": ""}] + } + ] + }, + { + "label": "XA 2", + "data": "XA 2 Folder", + "expandedIcon": "fa fa-folder-open", + "collapsedIcon": "fa fa-folder", + "children": + [ + { + "label": "XB 2-1", + "data": "XB 2-1 Folder", + "expandedIcon": "fa fa-folder-open", + "collapsedIcon": "fa fa-folder", + "children": + [ + { "label": "XB 2-1-1", + "data": "XB 2-1-1 Folder", + "expandedIcon": "fa fa-folder-open", + "collapsedIcon": "fa fa-folder", + "children": [{"label": "CI 2-1-1-1", "icon": "fa fa-file-image-o", "data":""}] + }, + {"label": "CI 2-1-1", "icon": "fa fa-file-image-o", "data": ""}, + {"label": "CI 2-1-2", "icon": "fa fa-file-image-o", "data": ""}, + {"label": "CI 2-1-3", "icon": "fa fa-file-image-o", "data": ""}] + } + ] + }, + { + "label": "XA 3", + "data": "XA 3 Folder", + "expandedIcon": "fa fa-folder-open", + "collapsedIcon": "fa fa-folder", + "children": + [ + { + "label": "XB 3-1", + "data": "XB 3-1 Folder", + "children": + [{"label": "CI 3-1-1", "icon": "fa fa-file-video-o", "data": ""}, + {"label": "CI 3-1-2", "icon": "fa fa-file-video-o", "data": ""}] + }, + { + "label": "XB 3-2", + "data": "XB 3-2 Folder", + "children": + [{"label": "CI 3-2-1", "icon": "fa fa-file-video-o", "data": ""}, + {"label": "CI 3-2-2", "icon": "fa fa-file-video-o", "data": ""}] + } + ] + } + ] +} From 026f106f7ddf7a69436f5fb377b3d44151e450d8 Mon Sep 17 00:00:00 2001 From: Samantha Hunsley Date: Mon, 10 Feb 2020 17:39:45 -0500 Subject: [PATCH 2/7] Updated tree component --- src/app/tree/tree.component.html | 2 +- src/app/tree/tree.component.ts | 31 ++++--------------------------- 2 files changed, 5 insertions(+), 28 deletions(-) diff --git a/src/app/tree/tree.component.html b/src/app/tree/tree.component.html index c8cd4d0..a668666 100644 --- a/src/app/tree/tree.component.html +++ b/src/app/tree/tree.component.html @@ -1,5 +1,5 @@ - +
diff --git a/src/app/tree/tree.component.ts b/src/app/tree/tree.component.ts index fb6a84b..bf7a665 100644 --- a/src/app/tree/tree.component.ts +++ b/src/app/tree/tree.component.ts @@ -11,45 +11,22 @@ import {NodeService} from '../node.service'; export class TreeComponent implements OnInit { @ViewChild('expandingTree', {static: false}) expandingTree: Tree; - filesTree10: TreeNode[]; + filesTree: TreeNode[]; constructor(private nodeService: NodeService, private messageService: MessageService) { } ngOnInit() { - this.nodeService.getFiles().then(files => this.filesTree10 = files); + this.nodeService.getFiles().then(files => this.filesTree = files); } - // nodeSelect(event) { - // this.messageService.add({severity: 'info', summary: 'Node Selected', detail: event.node.label}); - // } - // - // nodeUnselect(event) { - // this.messageService.add({severity: 'info', summary: 'Node Unselected', detail: event.node.label}); - // } - // - // nodeExpandMessage(event) { - // this.messageService.add({severity: 'info', summary: 'Node Expanded', detail: event.node.label}); - // } - // - // nodeExpand(event) { - // if(event.node) { - // // in a real application, make a call to a remote url to load children of the current node and add the new nodes as children - // this.nodeService.getLazyFiles().then(nodes => event.node.children = nodes); - // } - // } - // - // viewFile(file: TreeNode) { - // this.messageService.add({severity: 'info', summary: 'Node Selected with Right Click', detail: file.label}); - // } - expandAll(){ - this.filesTree10.forEach( node => { + this.filesTree.forEach( node => { this.expandRecursive(node, true); } ); } collapseAll(){ - this.filesTree10.forEach( node => { + this.filesTree.forEach( node => { this.expandRecursive(node, false); } ); } From 1ac151358cb57979d31e1ed803b0ce34c84e9bc4 Mon Sep 17 00:00:00 2001 From: Johnny Sit Date: Mon, 10 Feb 2020 21:36:46 -0500 Subject: [PATCH 3/7] Changed tree to match pdf --- src/assets/files.json | 107 +++++++++++++++++++++++++++--------------- 1 file changed, 69 insertions(+), 38 deletions(-) diff --git a/src/assets/files.json b/src/assets/files.json index 9fd7f97..6dc3a5e 100644 --- a/src/assets/files.json +++ b/src/assets/files.json @@ -2,77 +2,108 @@ "data": [ { - "label": "XA 1", - "data": "XA 1 Folder", + "label": "32 Landing Gear", + "data": "32 Landing Gear", + "expandedIcon": "fa fa-folder-open", + "collapsedIcon": "fa fa-folder", + "children":[] + }, + { + "label": "32-11 Main Landing Gear", + "data": "32-11 Main Landing Gear", "expandedIcon": "fa fa-folder-open", "collapsedIcon": "fa fa-folder", "children": [ { - "label": "XB 1-1", - "data": "XB 1-1 Folder", + "label": "32-11-01 Pivot", + "data": "32-11-01 Pivot", + "expandedIcon": "fa fa-folder-open", + "collapsedIcon": "fa fa-folder", + "children":[] + }, + { + "label": "32-11-02 Main Landing Gear Shock Strut", + "data": "32-11-02 Main Landing Gear Shock Strut", "expandedIcon": "fa fa-folder-open", "collapsedIcon": "fa fa-folder", - "children": [{"label": "CI 1-1-1", "icon": "fa fa-file-word-o", "data": ""}, - {"label": "CI 1-1-2", "icon": "fa fa-file-word-o", "data": ""}] + "children":[] }, { - "label": "XB 1-2", - "data": "XB 1-2 Folder", + "label": "32-11-03 TORQUE ARM upper", + "data": "32-11-03 TORQUE ARM upper", "expandedIcon": "fa fa-folder-open", "collapsedIcon": "fa fa-folder", - "children": [{"label": "CI 1-2-1", "icon": "fa fa-file-word-o", "data": ""}] + "children":[] + }, + { + "label": "32-11-04 TORQUE ARM lower", + "data": "32-11-04 TORQUE ARM lower", + "expandedIcon": "fa fa-folder-open", + "collapsedIcon": "fa fa-folder", + "children":[] } ] }, { - "label": "XA 2", - "data": "XA 2 Folder", + "label": "32-30 Extension and Retraction System", + "data": "32-30 Extension and Retraction System", "expandedIcon": "fa fa-folder-open", "collapsedIcon": "fa fa-folder", "children": [ { - "label": "XB 2-1", - "data": "XB 2-1 Folder", - "expandedIcon": "fa fa-folder-open", - "collapsedIcon": "fa fa-folder", - "children": - [ - { "label": "XB 2-1-1", - "data": "XB 2-1-1 Folder", - "expandedIcon": "fa fa-folder-open", - "collapsedIcon": "fa fa-folder", - "children": [{"label": "CI 2-1-1-1", "icon": "fa fa-file-image-o", "data":""}] - }, - {"label": "CI 2-1-1", "icon": "fa fa-file-image-o", "data": ""}, - {"label": "CI 2-1-2", "icon": "fa fa-file-image-o", "data": ""}, - {"label": "CI 2-1-3", "icon": "fa fa-file-image-o", "data": ""}] + "label": "30-30-01 MLG Retract Actuator Support", + "data": "30-30-01 MLG Retract Actuator Support", + "children":[] + }, + { + "label": "30-30-02 Retaining Pin", + "data": "30-30-02 Retaining Pin", + "children": [] } ] }, { - "label": "XA 3", - "data": "XA 3 Folder", + "label": "32-31 Landing Gear Control", + "data": "32-31 Landing Gear Control", + "expandedIcon": "fa fa-folder-open", + "collapsedIcon": "fa fa-folder", + "children":[] + }, + { + "label": "32-41 Wheels", + "data": "32-41 Wheels", "expandedIcon": "fa fa-folder-open", "collapsedIcon": "fa fa-folder", "children": [ { - "label": "XB 3-1", - "data": "XB 3-1 Folder", - "children": - [{"label": "CI 3-1-1", "icon": "fa fa-file-video-o", "data": ""}, - {"label": "CI 3-1-2", "icon": "fa fa-file-video-o", "data": ""}] + "label": "32-41-01 Landing Gear Wheels Tire Assembly", + "data": "32-41-01 Landing Gear Wheels Tire Assembly", + "children":[] }, { - "label": "XB 3-2", - "data": "XB 3-2 Folder", - "children": - [{"label": "CI 3-2-1", "icon": "fa fa-file-video-o", "data": ""}, - {"label": "CI 3-2-2", "icon": "fa fa-file-video-o", "data": ""}] + "label": "32-41-02 Main Landing Gear Shock Strut", + "data": "32-41-02 Main Landing Gear Shock Strut", + "children": [] + } + ] + }, + { + "label": "32-42 Brakes", + "data": "32-42 Brakes", + "expandedIcon": "fa fa-folder-open", + "collapsedIcon": "fa fa-folder", + "children": + [ + { + "label": "32-42-04 Parking Brake Valve", + "data": "32-42-04 Parking Brake Valve", + "children":[] } ] } + ] } From 9dc83404f6cb091c29c3ab6f0ef57e44710afbcb Mon Sep 17 00:00:00 2001 From: Johnny Sit Date: Mon, 10 Feb 2020 23:55:51 -0500 Subject: [PATCH 4/7] Just added blank main, center, and left components --- src/app/app.module.ts | 8 +++++++- src/app/center/center.component.css | 0 src/app/center/center.component.html | 1 + src/app/center/center.component.spec.ts | 25 +++++++++++++++++++++++++ src/app/center/center.component.ts | 15 +++++++++++++++ src/app/left/left.component.css | 0 src/app/left/left.component.html | 1 + src/app/left/left.component.spec.ts | 25 +++++++++++++++++++++++++ src/app/left/left.component.ts | 15 +++++++++++++++ src/app/main/main.component.css | 0 src/app/main/main.component.html | 1 + src/app/main/main.component.spec.ts | 25 +++++++++++++++++++++++++ src/app/main/main.component.ts | 15 +++++++++++++++ src/app/tree/tree.component.html | 16 +++++++++++++--- src/app/tree/tree.component.spec.ts | 13 ++++++------- 15 files changed, 149 insertions(+), 11 deletions(-) create mode 100644 src/app/center/center.component.css create mode 100644 src/app/center/center.component.html create mode 100644 src/app/center/center.component.spec.ts create mode 100644 src/app/center/center.component.ts create mode 100644 src/app/left/left.component.css create mode 100644 src/app/left/left.component.html create mode 100644 src/app/left/left.component.spec.ts create mode 100644 src/app/left/left.component.ts create mode 100644 src/app/main/main.component.css create mode 100644 src/app/main/main.component.html create mode 100644 src/app/main/main.component.spec.ts create mode 100644 src/app/main/main.component.ts diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 836cf26..23c2e99 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -6,11 +6,17 @@ import { AppComponent } from './app.component'; import { TreeComponent } from './tree/tree.component'; import {ButtonModule, MessageService, TreeModule} from 'primeng/primeng'; import {HttpClientModule} from '@angular/common/http'; +import { MainComponent } from './main/main.component'; +import { CenterComponent } from './center/center.component'; +import { LeftComponent } from './left/left.component'; @NgModule({ declarations: [ AppComponent, - TreeComponent + TreeComponent, + MainComponent, + CenterComponent, + LeftComponent ], imports: [ BrowserModule, diff --git a/src/app/center/center.component.css b/src/app/center/center.component.css new file mode 100644 index 0000000..e69de29 diff --git a/src/app/center/center.component.html b/src/app/center/center.component.html new file mode 100644 index 0000000..03eae30 --- /dev/null +++ b/src/app/center/center.component.html @@ -0,0 +1 @@ +

center works!

diff --git a/src/app/center/center.component.spec.ts b/src/app/center/center.component.spec.ts new file mode 100644 index 0000000..da7698d --- /dev/null +++ b/src/app/center/center.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { CenterComponent } from './center.component'; + +describe('CenterComponent', () => { + let component: CenterComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ CenterComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(CenterComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/center/center.component.ts b/src/app/center/center.component.ts new file mode 100644 index 0000000..7ab645a --- /dev/null +++ b/src/app/center/center.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-center', + templateUrl: './center.component.html', + styleUrls: ['./center.component.css'] +}) +export class CenterComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/app/left/left.component.css b/src/app/left/left.component.css new file mode 100644 index 0000000..e69de29 diff --git a/src/app/left/left.component.html b/src/app/left/left.component.html new file mode 100644 index 0000000..a244bb7 --- /dev/null +++ b/src/app/left/left.component.html @@ -0,0 +1 @@ +

left works!

diff --git a/src/app/left/left.component.spec.ts b/src/app/left/left.component.spec.ts new file mode 100644 index 0000000..b127005 --- /dev/null +++ b/src/app/left/left.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { LeftComponent } from './left.component'; + +describe('LeftComponent', () => { + let component: LeftComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ LeftComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(LeftComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/left/left.component.ts b/src/app/left/left.component.ts new file mode 100644 index 0000000..48e6e77 --- /dev/null +++ b/src/app/left/left.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-left', + templateUrl: './left.component.html', + styleUrls: ['./left.component.css'] +}) +export class LeftComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/app/main/main.component.css b/src/app/main/main.component.css new file mode 100644 index 0000000..e69de29 diff --git a/src/app/main/main.component.html b/src/app/main/main.component.html new file mode 100644 index 0000000..17c1228 --- /dev/null +++ b/src/app/main/main.component.html @@ -0,0 +1 @@ +

main works!

diff --git a/src/app/main/main.component.spec.ts b/src/app/main/main.component.spec.ts new file mode 100644 index 0000000..0878044 --- /dev/null +++ b/src/app/main/main.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { MainComponent } from './main.component'; + +describe('MainComponent', () => { + let component: MainComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ MainComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(MainComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/main/main.component.ts b/src/app/main/main.component.ts new file mode 100644 index 0000000..355d203 --- /dev/null +++ b/src/app/main/main.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-main', + templateUrl: './main.component.html', + styleUrls: ['./main.component.css'] +}) +export class MainComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/app/tree/tree.component.html b/src/app/tree/tree.component.html index a668666..0dfec7c 100644 --- a/src/app/tree/tree.component.html +++ b/src/app/tree/tree.component.html @@ -1,6 +1,16 @@ -
- - + +
diff --git a/src/app/tree/tree.component.spec.ts b/src/app/tree/tree.component.spec.ts index e3df2c3..e758395 100644 --- a/src/app/tree/tree.component.spec.ts +++ b/src/app/tree/tree.component.spec.ts @@ -1,16 +1,15 @@ -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import { async, ComponentFixture, TestBed } from "@angular/core/testing"; -import { TreeComponent } from './tree.component'; +import { TreeComponent } from "./tree.component"; -describe('TreeComponent', () => { +describe("TreeComponent", () => { let component: TreeComponent; let fixture: ComponentFixture; beforeEach(async(() => { TestBed.configureTestingModule({ - declarations: [ TreeComponent ] - }) - .compileComponents(); + declarations: [TreeComponent] + }).compileComponents(); })); beforeEach(() => { @@ -19,7 +18,7 @@ describe('TreeComponent', () => { fixture.detectChanges(); }); - it('should create', () => { + it("should create", () => { expect(component).toBeTruthy(); }); }); From b3dc6df1424a24f56ee947768f49d458819b57b4 Mon Sep 17 00:00:00 2001 From: Johnny Sit Date: Fri, 14 Feb 2020 17:45:45 -0500 Subject: [PATCH 5/7] Restructured code components. Addd tree service to allow node updates to be listened to. Added bootstrap + jquery for style simplicity. Changed tree data from string to object (including target pdf name). --- angular.json | 9 +- package-lock.json | 10 ++ package.json | 2 + src/app/app.component.html | 6 +- src/app/app.component.ts | 8 +- src/app/app.module.ts | 31 +++--- src/app/center/center.component.html | 1 - src/app/center/center.component.ts | 15 --- src/app/left/left.component.css | 0 src/app/left/left.component.html | 1 - src/app/left/left.component.ts | 15 --- .../main-center/main-center.component.css} | 0 .../main-center/main-center.component.html | 8 ++ .../main-center.component.spec.ts} | 12 +-- .../main/main-center/main-center.component.ts | 49 ++++++++++ src/app/main/main.component.html | 3 +- src/app/{ => main}/tree/tree.component.css | 0 src/app/main/tree/tree.component.html | 1 + .../tree/tree.component.spec.ts} | 12 +-- src/app/main/tree/tree.component.ts | 28 ++++++ src/app/node.service.ts | 10 +- src/app/services/api/resource.service.ts | 3 + src/app/services/tree.service.ts | 16 ++++ src/app/tree/tree.component.html | 16 ---- src/app/tree/tree.component.spec.ts | 24 ----- src/app/tree/tree.component.ts | 43 --------- src/assets/files.json | 96 ++++++++++++------- 27 files changed, 221 insertions(+), 198 deletions(-) delete mode 100644 src/app/center/center.component.html delete mode 100644 src/app/center/center.component.ts delete mode 100644 src/app/left/left.component.css delete mode 100644 src/app/left/left.component.html delete mode 100644 src/app/left/left.component.ts rename src/app/{center/center.component.css => main/main-center/main-center.component.css} (100%) create mode 100644 src/app/main/main-center/main-center.component.html rename src/app/{center/center.component.spec.ts => main/main-center/main-center.component.spec.ts} (54%) create mode 100644 src/app/main/main-center/main-center.component.ts rename src/app/{ => main}/tree/tree.component.css (100%) create mode 100644 src/app/main/tree/tree.component.html rename src/app/{left/left.component.spec.ts => main/tree/tree.component.spec.ts} (58%) create mode 100644 src/app/main/tree/tree.component.ts create mode 100644 src/app/services/tree.service.ts delete mode 100644 src/app/tree/tree.component.html delete mode 100644 src/app/tree/tree.component.spec.ts delete mode 100644 src/app/tree/tree.component.ts diff --git a/angular.json b/angular.json index b1dda10..d4b3ecd 100644 --- a/angular.json +++ b/angular.json @@ -25,11 +25,15 @@ ], "styles": [ "src/styles.css", + "node_modules/bootstrap/dist/css/bootstrap.min.css", "node_modules/primeicons/primeicons.css", "node_modules/primeng/resources/themes/nova-light/theme.css", "node_modules/primeng/resources/primeng.min.css" ], - "scripts": [] + "scripts": [ + "node_modules/jquery/dist/jquery.min.js", + "node_modules/bootstrap/dist/js/bootstrap.min.js" + ] }, "configurations": { "production": { @@ -148,6 +152,7 @@ } } } - }}, + } + }, "defaultProject": "SystemNavigationFrontend" } \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 7154f6c..cfc96af 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2841,6 +2841,11 @@ "multicast-dns-service-types": "^1.1.0" } }, + "bootstrap": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.4.1.tgz", + "integrity": "sha512-tbx5cHubwE6e2ZG7nqM3g/FZ5PQEDMWmMGNrCUBVRPHXTJaH7CBDdsLeu3eCh3B1tzAxTnAbtmrzvWEvT2NNEA==" + }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -6262,6 +6267,11 @@ } } }, + "jquery": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.4.1.tgz", + "integrity": "sha512-36+AdBzCL+y6qjw5Tx7HgzeGCzC81MDDgaUP8ld2zhx58HdqXGoBd+tHdrBMiyjGQs0Hxs/MLZTu/eHNJJuWPw==" + }, "js-levenshtein": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz", diff --git a/package.json b/package.json index 5537319..16b1ce2 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,9 @@ "@angular/platform-browser": "~8.2.14", "@angular/platform-browser-dynamic": "~8.2.14", "@angular/router": "~8.2.14", + "bootstrap": "^4.4.1", "chart.js": "^2.9.3", + "jquery": "^3.4.1", "primeicons": "^2.0.0", "primeng": "^8.1.1", "quill": "^1.3.7", diff --git a/src/app/app.component.html b/src/app/app.component.html index 472cc95..8e0a821 100644 --- a/src/app/app.component.html +++ b/src/app/app.component.html @@ -1,5 +1 @@ -
-
- -
-
+ \ No newline at end of file diff --git a/src/app/app.component.ts b/src/app/app.component.ts index 311d503..bb570c8 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -1,5 +1,6 @@ import { Component, OnInit } from '@angular/core'; import { ResourceService } from './services/api/resource.service'; +import { HttpErrorResponse } from '@angular/common/http'; @Component({ selector: 'app-root', @@ -12,7 +13,7 @@ export class AppComponent implements OnInit { constructor( private resourceService: ResourceService - ) {} + ) { } ngOnInit() { // Example usage of resource service. @@ -26,7 +27,10 @@ export class AppComponent implements OnInit { console.log('Adblock prevents it from opening'); // window.open(url); }) - .catch(err => console.log(err)); + .catch((err: HttpErrorResponse) => { + console.log('Error occurred with status value', err.status); + console.log(err); + }); } } diff --git a/src/app/app.module.ts b/src/app/app.module.ts index f5b733a..23930f3 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -1,23 +1,16 @@ -import { BrowserModule } from "@angular/platform-browser"; -import { NgModule } from "@angular/core"; +import { BrowserModule } from '@angular/platform-browser'; +import { NgModule } from '@angular/core'; -import { AppRoutingModule } from "./app-routing.module"; -import { AppComponent } from "./app.component"; -import { TreeComponent } from "./tree/tree.component"; -import { ButtonModule, MessageService, TreeModule } from "primeng/primeng"; -import { MainComponent } from "./main/main.component"; -import { CenterComponent } from "./center/center.component"; -import { LeftComponent } from "./left/left.component"; -import { HttpClientModule } from "@angular/common/http"; +import { AppRoutingModule } from './app-routing.module'; +import { AppComponent } from './app.component'; +import { ButtonModule, MessageService, TreeModule } from 'primeng/primeng'; +import { HttpClientModule } from '@angular/common/http'; +import { MainComponent } from './main/main.component'; +import { MainCenterComponent } from './main/main-center/main-center.component'; +import { TreeComponent } from './main/tree/tree.component'; @NgModule({ - declarations: [ - AppComponent, - TreeComponent, - MainComponent, - CenterComponent, - LeftComponent - ], + declarations: [AppComponent, TreeComponent, MainComponent, MainCenterComponent], imports: [ BrowserModule, AppRoutingModule, @@ -25,7 +18,7 @@ import { HttpClientModule } from "@angular/common/http"; HttpClientModule, ButtonModule ], - providers: [MessageService], + providers: [], bootstrap: [AppComponent] }) -export class AppModule {} +export class AppModule { } diff --git a/src/app/center/center.component.html b/src/app/center/center.component.html deleted file mode 100644 index 03eae30..0000000 --- a/src/app/center/center.component.html +++ /dev/null @@ -1 +0,0 @@ -

center works!

diff --git a/src/app/center/center.component.ts b/src/app/center/center.component.ts deleted file mode 100644 index 7ab645a..0000000 --- a/src/app/center/center.component.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { Component, OnInit } from '@angular/core'; - -@Component({ - selector: 'app-center', - templateUrl: './center.component.html', - styleUrls: ['./center.component.css'] -}) -export class CenterComponent implements OnInit { - - constructor() { } - - ngOnInit() { - } - -} diff --git a/src/app/left/left.component.css b/src/app/left/left.component.css deleted file mode 100644 index e69de29..0000000 diff --git a/src/app/left/left.component.html b/src/app/left/left.component.html deleted file mode 100644 index a244bb7..0000000 --- a/src/app/left/left.component.html +++ /dev/null @@ -1 +0,0 @@ -

left works!

diff --git a/src/app/left/left.component.ts b/src/app/left/left.component.ts deleted file mode 100644 index 48e6e77..0000000 --- a/src/app/left/left.component.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { Component, OnInit } from '@angular/core'; - -@Component({ - selector: 'app-left', - templateUrl: './left.component.html', - styleUrls: ['./left.component.css'] -}) -export class LeftComponent implements OnInit { - - constructor() { } - - ngOnInit() { - } - -} diff --git a/src/app/center/center.component.css b/src/app/main/main-center/main-center.component.css similarity index 100% rename from src/app/center/center.component.css rename to src/app/main/main-center/main-center.component.css diff --git a/src/app/main/main-center/main-center.component.html b/src/app/main/main-center/main-center.component.html new file mode 100644 index 0000000..35923f7 --- /dev/null +++ b/src/app/main/main-center/main-center.component.html @@ -0,0 +1,8 @@ + +

Current node is {{this.currentNode.label}}

+ +
+ + +

No node selected

+
\ No newline at end of file diff --git a/src/app/center/center.component.spec.ts b/src/app/main/main-center/main-center.component.spec.ts similarity index 54% rename from src/app/center/center.component.spec.ts rename to src/app/main/main-center/main-center.component.spec.ts index da7698d..99d8a7b 100644 --- a/src/app/center/center.component.spec.ts +++ b/src/app/main/main-center/main-center.component.spec.ts @@ -1,20 +1,20 @@ import { async, ComponentFixture, TestBed } from '@angular/core/testing'; -import { CenterComponent } from './center.component'; +import { MainCenterComponent } from './main-center.component'; -describe('CenterComponent', () => { - let component: CenterComponent; - let fixture: ComponentFixture; +describe('MainCenterComponent', () => { + let component: MainCenterComponent; + let fixture: ComponentFixture; beforeEach(async(() => { TestBed.configureTestingModule({ - declarations: [ CenterComponent ] + declarations: [ MainCenterComponent ] }) .compileComponents(); })); beforeEach(() => { - fixture = TestBed.createComponent(CenterComponent); + fixture = TestBed.createComponent(MainCenterComponent); component = fixture.componentInstance; fixture.detectChanges(); }); diff --git a/src/app/main/main-center/main-center.component.ts b/src/app/main/main-center/main-center.component.ts new file mode 100644 index 0000000..337a70b --- /dev/null +++ b/src/app/main/main-center/main-center.component.ts @@ -0,0 +1,49 @@ +import { Component, OnInit, OnDestroy } from '@angular/core'; +import { TreeService } from 'src/app/services/tree.service'; +import { Subscription } from 'rxjs'; +import { TreeNode } from 'primeng/api'; +import { ResourceService } from 'src/app/services/api/resource.service'; +import { HttpErrorResponse } from '@angular/common/http'; + +@Component({ + selector: 'app-main-center', + templateUrl: './main-center.component.html', + styleUrls: ['./main-center.component.css'] +}) +export class MainCenterComponent implements OnInit, OnDestroy { + + private treeSubscription: Subscription; + currentNode: TreeNode; + + constructor( + private treeService: TreeService, + private resourceService: ResourceService + ) { } + + ngOnInit() { + this.treeSubscription = this.treeService.node$.subscribe(async (node) => { + if (node == null) { + return; + } + console.log('Selected node is', node); + this.currentNode = node; + const data = node.data as { pdfName: string }; + try { + console.log('I will load', data.pdfName); + const pdfData = await this.resourceService.getResourcePDF(data.pdfName); + // render pdf to screen + + } catch (err) { + console.log(err); + if ((err as HttpErrorResponse).status === 404) { + // handle not found + } + } + + }); + } + + ngOnDestroy() { + this.treeSubscription.unsubscribe(); + } +} diff --git a/src/app/main/main.component.html b/src/app/main/main.component.html index 17c1228..89b5a69 100644 --- a/src/app/main/main.component.html +++ b/src/app/main/main.component.html @@ -1 +1,2 @@ -

main works!

+ + \ No newline at end of file diff --git a/src/app/tree/tree.component.css b/src/app/main/tree/tree.component.css similarity index 100% rename from src/app/tree/tree.component.css rename to src/app/main/tree/tree.component.css diff --git a/src/app/main/tree/tree.component.html b/src/app/main/tree/tree.component.html new file mode 100644 index 0000000..19c0f99 --- /dev/null +++ b/src/app/main/tree/tree.component.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/app/left/left.component.spec.ts b/src/app/main/tree/tree.component.spec.ts similarity index 58% rename from src/app/left/left.component.spec.ts rename to src/app/main/tree/tree.component.spec.ts index b127005..e3df2c3 100644 --- a/src/app/left/left.component.spec.ts +++ b/src/app/main/tree/tree.component.spec.ts @@ -1,20 +1,20 @@ import { async, ComponentFixture, TestBed } from '@angular/core/testing'; -import { LeftComponent } from './left.component'; +import { TreeComponent } from './tree.component'; -describe('LeftComponent', () => { - let component: LeftComponent; - let fixture: ComponentFixture; +describe('TreeComponent', () => { + let component: TreeComponent; + let fixture: ComponentFixture; beforeEach(async(() => { TestBed.configureTestingModule({ - declarations: [ LeftComponent ] + declarations: [ TreeComponent ] }) .compileComponents(); })); beforeEach(() => { - fixture = TestBed.createComponent(LeftComponent); + fixture = TestBed.createComponent(TreeComponent); component = fixture.componentInstance; fixture.detectChanges(); }); diff --git a/src/app/main/tree/tree.component.ts b/src/app/main/tree/tree.component.ts new file mode 100644 index 0000000..fd3342c --- /dev/null +++ b/src/app/main/tree/tree.component.ts @@ -0,0 +1,28 @@ +import { Component, OnInit } from '@angular/core'; +import { TreeNode } from 'primeng/api'; +import { NodeService } from 'src/app/node.service'; +import { TreeService } from 'src/app/services/tree.service'; + +@Component({ + selector: 'app-tree', + templateUrl: './tree.component.html', + styleUrls: ['./tree.component.css'] +}) +export class TreeComponent implements OnInit { + + filesTree: TreeNode[]; + + constructor( + private treeService: TreeService, + private nodeService: NodeService + ) { } + + ngOnInit() { + this.nodeService.getFiles().then(files => (this.filesTree = files)); + } + + nodeSelect(event: { node: TreeNode }) { + this.treeService.changeNode(event.node); + } + +} diff --git a/src/app/node.service.ts b/src/app/node.service.ts index 4b9eb36..499c0c5 100644 --- a/src/app/node.service.ts +++ b/src/app/node.service.ts @@ -1,16 +1,14 @@ -import {HttpClient, HttpClientModule} from '@angular/common/http'; +import { HttpClient } from '@angular/common/http'; import { Injectable } from '@angular/core'; import { TreeNode } from 'primeng/api'; -@Injectable({providedIn: 'root'}) +@Injectable({ providedIn: 'root' }) export class NodeService { constructor(private http: HttpClient) { } - getFiles() { - return this.http.get('http://localhost:4200/assets/files.json') - .toPromise() - .then(res => res.data as TreeNode[]); + async getFiles() { + return (await this.http.get('http://localhost:4200/assets/files.json').toPromise()).data as TreeNode[]; } } diff --git a/src/app/services/api/resource.service.ts b/src/app/services/api/resource.service.ts index 1bbfcf0..e6cef09 100644 --- a/src/app/services/api/resource.service.ts +++ b/src/app/services/api/resource.service.ts @@ -32,6 +32,9 @@ export class ResourceService extends APIService { } getResourcePDF(key: string) { + if (key == null) { + throw new TypeError('Key must not be null!'); + } return this.get(`pdf/${key}`, { responseType: 'arraybuffer' }); diff --git a/src/app/services/tree.service.ts b/src/app/services/tree.service.ts new file mode 100644 index 0000000..6b01162 --- /dev/null +++ b/src/app/services/tree.service.ts @@ -0,0 +1,16 @@ +import { BehaviorSubject } from 'rxjs'; +import { TreeNode } from 'primeng/api'; +import { Injectable } from '@angular/core'; + +@Injectable({ + providedIn: 'root' +}) +export class TreeService { + + private nodeChange = new BehaviorSubject(null); + node$ = this.nodeChange.asObservable(); + + changeNode(newNode: TreeNode) { + this.nodeChange.next(newNode); + } +} diff --git a/src/app/tree/tree.component.html b/src/app/tree/tree.component.html deleted file mode 100644 index 0dfec7c..0000000 --- a/src/app/tree/tree.component.html +++ /dev/null @@ -1,16 +0,0 @@ - -
- - -
diff --git a/src/app/tree/tree.component.spec.ts b/src/app/tree/tree.component.spec.ts deleted file mode 100644 index e758395..0000000 --- a/src/app/tree/tree.component.spec.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { async, ComponentFixture, TestBed } from "@angular/core/testing"; - -import { TreeComponent } from "./tree.component"; - -describe("TreeComponent", () => { - let component: TreeComponent; - let fixture: ComponentFixture; - - beforeEach(async(() => { - TestBed.configureTestingModule({ - declarations: [TreeComponent] - }).compileComponents(); - })); - - beforeEach(() => { - fixture = TestBed.createComponent(TreeComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it("should create", () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/src/app/tree/tree.component.ts b/src/app/tree/tree.component.ts deleted file mode 100644 index bf7a665..0000000 --- a/src/app/tree/tree.component.ts +++ /dev/null @@ -1,43 +0,0 @@ -import {Component, OnInit, ViewChild} from '@angular/core'; -import {Tree} from 'primeng/tree'; -import {MessageService, TreeNode} from 'primeng/api'; -import {NodeService} from '../node.service'; - -@Component({ - selector: 'app-tree', - templateUrl: './tree.component.html', - styleUrls: ['./tree.component.css'] -}) -export class TreeComponent implements OnInit { - @ViewChild('expandingTree', {static: false}) - expandingTree: Tree; - filesTree: TreeNode[]; - - constructor(private nodeService: NodeService, private messageService: MessageService) { } - - ngOnInit() { - this.nodeService.getFiles().then(files => this.filesTree = files); - } - - expandAll(){ - this.filesTree.forEach( node => { - this.expandRecursive(node, true); - } ); - } - - collapseAll(){ - this.filesTree.forEach( node => { - this.expandRecursive(node, false); - } ); - } - - private expandRecursive(node: TreeNode, isExpand: boolean){ - node.expanded = isExpand; - if(node.children){ - node.children.forEach( childNode => { - this.expandRecursive(childNode, isExpand); - } ); - } - } - -} diff --git a/src/assets/files.json b/src/assets/files.json index 6dc3a5e..dfaed6c 100644 --- a/src/assets/files.json +++ b/src/assets/files.json @@ -1,109 +1,133 @@ { - "data": - [ + "data": [ { "label": "32 Landing Gear", - "data": "32 Landing Gear", + "data": { + "pdfName": "radar.pdf" + }, "expandedIcon": "fa fa-folder-open", "collapsedIcon": "fa fa-folder", - "children":[] + "children": [] }, { "label": "32-11 Main Landing Gear", - "data": "32-11 Main Landing Gear", + "data": { + "pdfName": "radar.pdf" + }, "expandedIcon": "fa fa-folder-open", "collapsedIcon": "fa fa-folder", - "children": - [ + "children": [ { "label": "32-11-01 Pivot", - "data": "32-11-01 Pivot", + "data": { + "pdfName": "radar.pdf" + }, "expandedIcon": "fa fa-folder-open", "collapsedIcon": "fa fa-folder", - "children":[] + "children": [] }, { "label": "32-11-02 Main Landing Gear Shock Strut", - "data": "32-11-02 Main Landing Gear Shock Strut", + "data": { + "pdfName": "radar.pdf" + }, "expandedIcon": "fa fa-folder-open", "collapsedIcon": "fa fa-folder", - "children":[] + "children": [] }, { "label": "32-11-03 TORQUE ARM upper", - "data": "32-11-03 TORQUE ARM upper", + "data": { + "pdfName": "radar.pdf" + }, "expandedIcon": "fa fa-folder-open", "collapsedIcon": "fa fa-folder", - "children":[] + "children": [] }, { "label": "32-11-04 TORQUE ARM lower", - "data": "32-11-04 TORQUE ARM lower", + "data": { + "pdfName": "radar.pdf" + }, "expandedIcon": "fa fa-folder-open", "collapsedIcon": "fa fa-folder", - "children":[] + "children": [] } ] }, { "label": "32-30 Extension and Retraction System", - "data": "32-30 Extension and Retraction System", + "data": { + "pdfName": "radar.pdf" + }, "expandedIcon": "fa fa-folder-open", "collapsedIcon": "fa fa-folder", - "children": - [ + "children": [ { "label": "30-30-01 MLG Retract Actuator Support", - "data": "30-30-01 MLG Retract Actuator Support", - "children":[] + "data": { + "pdfName": "radar.pdf" + }, + "children": [] }, { "label": "30-30-02 Retaining Pin", - "data": "30-30-02 Retaining Pin", + "data": { + "pdfName": "radar.pdf" + }, "children": [] } ] }, { "label": "32-31 Landing Gear Control", - "data": "32-31 Landing Gear Control", + "data": { + "pdfName": "radar.pdf" + }, "expandedIcon": "fa fa-folder-open", "collapsedIcon": "fa fa-folder", - "children":[] + "children": [] }, { "label": "32-41 Wheels", - "data": "32-41 Wheels", + "data": { + "pdfName": "radar.pdf" + }, "expandedIcon": "fa fa-folder-open", "collapsedIcon": "fa fa-folder", - "children": - [ + "children": [ { "label": "32-41-01 Landing Gear Wheels Tire Assembly", - "data": "32-41-01 Landing Gear Wheels Tire Assembly", - "children":[] + "data": { + "pdfName": "radar.pdf" + }, + "children": [] }, { "label": "32-41-02 Main Landing Gear Shock Strut", - "data": "32-41-02 Main Landing Gear Shock Strut", + "data": { + "pdfName": "radar.pdf" + }, "children": [] } ] }, { "label": "32-42 Brakes", - "data": "32-42 Brakes", + "data": { + "pdfName": "radar.pdf" + }, "expandedIcon": "fa fa-folder-open", "collapsedIcon": "fa fa-folder", - "children": - [ + "children": [ { "label": "32-42-04 Parking Brake Valve", - "data": "32-42-04 Parking Brake Valve", - "children":[] + "data": { + "pdfName": "radar.pdf" + }, + "children": [] } ] } - ] -} +} \ No newline at end of file From 20d2167a5691e974f153b3e38ff3ae6d12f91403 Mon Sep 17 00:00:00 2001 From: Daniel Scalzi Date: Sun, 16 Feb 2020 20:28:05 -0500 Subject: [PATCH 6/7] Implement PDF rendering based on tree node data. --- .../main/main-center/main-center.component.html | 17 +++++++++++++---- .../main/main-center/main-center.component.ts | 17 ++++++++++------- src/app/main/main.component.html | 6 ++++-- src/app/main/tree/tree.component.css | 5 +++++ src/app/main/tree/tree.component.html | 8 +++++++- src/assets/files.json | 2 +- src/styles.css | 10 ++++++++++ 7 files changed, 50 insertions(+), 15 deletions(-) diff --git a/src/app/main/main-center/main-center.component.html b/src/app/main/main-center/main-center.component.html index 35923f7..1a12322 100644 --- a/src/app/main/main-center/main-center.component.html +++ b/src/app/main/main-center/main-center.component.html @@ -1,8 +1,17 @@ + -

Current node is {{this.currentNode.label}}

- +
+

{{this.currentNode.label}}

+ + + +
-

No node selected

-
\ No newline at end of file +

No node selected

+ + + +

PDF not found

+
diff --git a/src/app/main/main-center/main-center.component.ts b/src/app/main/main-center/main-center.component.ts index 337a70b..a60a11b 100644 --- a/src/app/main/main-center/main-center.component.ts +++ b/src/app/main/main-center/main-center.component.ts @@ -4,6 +4,7 @@ import { Subscription } from 'rxjs'; import { TreeNode } from 'primeng/api'; import { ResourceService } from 'src/app/services/api/resource.service'; import { HttpErrorResponse } from '@angular/common/http'; +import { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser'; @Component({ selector: 'app-main-center', @@ -14,10 +15,13 @@ export class MainCenterComponent implements OnInit, OnDestroy { private treeSubscription: Subscription; currentNode: TreeNode; + blobUrl: SafeResourceUrl; + notFound = false; constructor( private treeService: TreeService, - private resourceService: ResourceService + private resourceService: ResourceService, + private domSanitizer: DomSanitizer ) { } ngOnInit() { @@ -25,21 +29,20 @@ export class MainCenterComponent implements OnInit, OnDestroy { if (node == null) { return; } + this.notFound = false; console.log('Selected node is', node); this.currentNode = node; const data = node.data as { pdfName: string }; try { - console.log('I will load', data.pdfName); - const pdfData = await this.resourceService.getResourcePDF(data.pdfName); - // render pdf to screen - + const pdfData = await this.resourceService.getResourcePDF(data.pdfName).toPromise(); + this.blobUrl = this.domSanitizer.bypassSecurityTrustResourceUrl( + URL.createObjectURL(new Blob([pdfData], { type: 'application/pdf' }))); } catch (err) { console.log(err); if ((err as HttpErrorResponse).status === 404) { - // handle not found + this.notFound = true; } } - }); } diff --git a/src/app/main/main.component.html b/src/app/main/main.component.html index 89b5a69..425ed99 100644 --- a/src/app/main/main.component.html +++ b/src/app/main/main.component.html @@ -1,2 +1,4 @@ - - \ No newline at end of file +
+ + +
\ No newline at end of file diff --git a/src/app/main/tree/tree.component.css b/src/app/main/tree/tree.component.css index e69de29..9ea0083 100644 --- a/src/app/main/tree/tree.component.css +++ b/src/app/main/tree/tree.component.css @@ -0,0 +1,5 @@ +.tree { + height: 100%; + display: flex; + justify-content: space-between; +} \ No newline at end of file diff --git a/src/app/main/tree/tree.component.html b/src/app/main/tree/tree.component.html index 19c0f99..1246370 100644 --- a/src/app/main/tree/tree.component.html +++ b/src/app/main/tree/tree.component.html @@ -1 +1,7 @@ - \ No newline at end of file + + +
+
{{ node.label }}
+
+
+
\ No newline at end of file diff --git a/src/assets/files.json b/src/assets/files.json index dfaed6c..d77a9ba 100644 --- a/src/assets/files.json +++ b/src/assets/files.json @@ -12,7 +12,7 @@ { "label": "32-11 Main Landing Gear", "data": { - "pdfName": "radar.pdf" + "pdfName": "radar2.pdf" }, "expandedIcon": "fa fa-folder-open", "collapsedIcon": "fa fa-folder", diff --git a/src/styles.css b/src/styles.css index 90d4ee0..0d458dd 100644 --- a/src/styles.css +++ b/src/styles.css @@ -1 +1,11 @@ /* You can add global styles to this file, and also import other style files */ +html, body, app-root { + height: 100%; + width: 100%; + margin: 0; +} + +app-tree .ui-tree { + height: 100%; + width: 100%; +} \ No newline at end of file From 26f3a465ae284fdda8ad4c82ec2be2c8fb98fd16 Mon Sep 17 00:00:00 2001 From: Daniel Scalzi Date: Sun, 16 Feb 2020 20:48:58 -0500 Subject: [PATCH 7/7] Branch cleanup. Import from primeng/api Remove quill, chart.js Move node service to correct directory. --- package-lock.json | 653 ++++++++++-------- package.json | 10 +- src/app/app.component.ts | 28 +- src/app/app.module.ts | 5 +- .../main-center/main-center.component.html | 1 - src/app/main/tree/tree.component.ts | 2 +- src/app/node.service.spec.ts | 12 - src/app/services/api/api.service.ts | 2 +- src/app/{ => services}/node.service.ts | 11 +- 9 files changed, 404 insertions(+), 320 deletions(-) delete mode 100644 src/app/node.service.spec.ts rename src/app/{ => services}/node.service.ts (50%) diff --git a/package-lock.json b/package-lock.json index cfc96af..2050c16 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,37 +5,37 @@ "requires": true, "dependencies": { "@angular-devkit/architect": { - "version": "0.803.23", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.803.23.tgz", - "integrity": "sha512-BRDbnmdULrle2l7WFZHEW/OAwS8RRg08+jiNG3gEP0BxDN6QMNMKmWhxmX67pgq3e/xMvu2DH0z71mAPNtJDAw==", + "version": "0.803.25", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.803.25.tgz", + "integrity": "sha512-usV/zEncKCKQuF6AD3pRU6N5i5fbaAux/qZb+nbOz9/2G5jrXwe5sH+y3vxbgqB83e3LqusEQCTu7/tfg6LwZg==", "dev": true, "requires": { - "@angular-devkit/core": "8.3.23", + "@angular-devkit/core": "8.3.25", "rxjs": "6.4.0" } }, "@angular-devkit/build-angular": { - "version": "0.803.23", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.803.23.tgz", - "integrity": "sha512-hlaDMuScRbgdsH3Toyze5G5NhmJypWIPGcIt4CAcXAnVdSltrBPKzu5Psr+ACcDLH3TYtlMKBrkAG9xXS3it1g==", - "dev": true, - "requires": { - "@angular-devkit/architect": "0.803.23", - "@angular-devkit/build-optimizer": "0.803.23", - "@angular-devkit/build-webpack": "0.803.23", - "@angular-devkit/core": "8.3.23", - "@babel/core": "7.7.5", - "@babel/preset-env": "7.7.6", - "@ngtools/webpack": "8.3.23", + "version": "0.803.25", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.803.25.tgz", + "integrity": "sha512-WY0E7NgXuog3phhz5ZdutZPWQ9nbOr+omGN5KI1e8MZs1sJO4xkyaGRT8zOulkogkqJ2NboTBq3j9uSbZkcYeg==", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.803.25", + "@angular-devkit/build-optimizer": "0.803.25", + "@angular-devkit/build-webpack": "0.803.25", + "@angular-devkit/core": "8.3.25", + "@babel/core": "7.8.3", + "@babel/preset-env": "7.8.3", + "@ngtools/webpack": "8.3.25", "ajv": "6.10.2", "autoprefixer": "9.6.1", - "browserslist": "4.8.3", + "browserslist": "4.8.6", "cacache": "12.0.2", - "caniuse-lite": "1.0.30001019", + "caniuse-lite": "1.0.30001024", "circular-dependency-plugin": "5.2.0", "clean-css": "4.2.1", "copy-webpack-plugin": "5.1.1", - "core-js": "3.2.1", + "core-js": "3.6.4", "coverage-istanbul-loader": "2.0.3", "file-loader": "4.2.0", "find-cache-dir": "3.0.0", @@ -66,7 +66,7 @@ "style-loader": "1.0.0", "stylus": "0.54.5", "stylus-loader": "3.0.2", - "terser": "4.3.9", + "terser": "4.6.3", "terser-webpack-plugin": "1.4.3", "tree-kill": "1.2.2", "webpack": "4.39.2", @@ -79,9 +79,9 @@ } }, "@angular-devkit/build-optimizer": { - "version": "0.803.23", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.803.23.tgz", - "integrity": "sha512-0MJAnGjpmE1hNrwDBi/7b9G1qyt2qN/wcZOj6QseZeWuoxIVXIWgdM6gBpJdgB7HI7vv4l4LpyFX9Doq+2r7Xg==", + "version": "0.803.25", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.803.25.tgz", + "integrity": "sha512-MiQimuEs8QeM3xo7bR3Yk1OWHHlp2pGCc2GLUMIcWhKqM+QjoRky0HoGoBazbznx292l+xjFjANvPEKbqJ2v7Q==", "dev": true, "requires": { "loader-utils": "1.2.3", @@ -92,20 +92,20 @@ } }, "@angular-devkit/build-webpack": { - "version": "0.803.23", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.803.23.tgz", - "integrity": "sha512-ttsvUpoMHAr84I3YQmr2Yyu1qPIjw3m+aYgeEh1cAN+Ck8/F/q+Z+nWsmcgIXEC2f8xN7uZWy4PIkCZR8YETOg==", + "version": "0.803.25", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.803.25.tgz", + "integrity": "sha512-WR7HWJIWL6TB3WHG7ZFn8s0z3WlojeQlod75UIKl5i+f4OU90kp8kxcoH5G6OCXu56x5w40oIi1ve5ljjWSJkw==", "dev": true, "requires": { - "@angular-devkit/architect": "0.803.23", - "@angular-devkit/core": "8.3.23", + "@angular-devkit/architect": "0.803.25", + "@angular-devkit/core": "8.3.25", "rxjs": "6.4.0" } }, "@angular-devkit/core": { - "version": "8.3.23", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-8.3.23.tgz", - "integrity": "sha512-y++LN6R/fu+obPUKEMDSKZ5FzeWN5rV0Z8vrdC+uF02VJLv/5QI/dUx3ROKFzJO3m2LU6EAuo5b/TLAPq4ving==", + "version": "8.3.25", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-8.3.25.tgz", + "integrity": "sha512-l7Gqy1tMrTpRmPVlovcFX8UA3mtXRlgO8kcSsbJ9MKRKNTCcxlfsWEYY5igyDBUVh6ADkgSIu0nuk31ZGTe0lw==", "dev": true, "requires": { "ajv": "6.10.2", @@ -116,12 +116,12 @@ } }, "@angular-devkit/schematics": { - "version": "8.3.23", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-8.3.23.tgz", - "integrity": "sha512-O8i/vn6YfqbT0q7o4jsVOTnWE07T1tcvk2zJ4O/1ete2z+Z2aw1YtIddwXEGJNCDpeE0B7f2sUHoLOS4Jc4O9w==", + "version": "8.3.25", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-8.3.25.tgz", + "integrity": "sha512-/p1MkfursfLy+JRGXlJGPEmX55lrFCsR/2khWAVXZcMaFR3QlR/b6/zvB8I2pHFfr0/XWnYTT/BsF7rJjO3RmA==", "dev": true, "requires": { - "@angular-devkit/core": "8.3.23", + "@angular-devkit/core": "8.3.25", "rxjs": "6.4.0" } }, @@ -151,16 +151,16 @@ } }, "@angular/cli": { - "version": "8.3.23", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-8.3.23.tgz", - "integrity": "sha512-umr5puS6j8elTIhhsjyb/psTmwL00oeBbsnnz5K3fkbWB2wgdMsJvLi9aR/oAyh2NlSA2ZzgB62I38VjoDR0yQ==", + "version": "8.3.25", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-8.3.25.tgz", + "integrity": "sha512-CPJI5nnbBvvyBUFwOHfRXy/KVwsiYlcbDAeIk1klcjQjbVFYZbnY0iAhNupy9j7rPQhb7jle5oslU3TLfbqOTQ==", "dev": true, "requires": { - "@angular-devkit/architect": "0.803.23", - "@angular-devkit/core": "8.3.23", - "@angular-devkit/schematics": "8.3.23", - "@schematics/angular": "8.3.23", - "@schematics/update": "0.803.23", + "@angular-devkit/architect": "0.803.25", + "@angular-devkit/core": "8.3.25", + "@angular-devkit/schematics": "8.3.25", + "@schematics/angular": "8.3.25", + "@schematics/update": "0.803.25", "@yarnpkg/lockfile": "1.1.0", "ansi-colors": "4.1.1", "debug": "^4.1.1", @@ -1057,21 +1057,41 @@ "@babel/highlight": "^7.8.3" } }, + "@babel/compat-data": { + "version": "7.8.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.8.5.tgz", + "integrity": "sha512-jWYUqQX/ObOhG1UiEkbH5SANsE/8oKXiQWjj7p7xgj9Zmnt//aUvyz4dBkK0HNsS8/cbyC5NmmH87VekW+mXFg==", + "dev": true, + "requires": { + "browserslist": "^4.8.5", + "invariant": "^2.2.4", + "semver": "^5.5.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, "@babel/core": { - "version": "7.7.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.7.5.tgz", - "integrity": "sha512-M42+ScN4+1S9iB6f+TL7QBpoQETxbclx+KNoKJABghnKYE+fMzSGqst0BZJc8CpI625bwPwYgUyRvxZ+0mZzpw==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.8.3.tgz", + "integrity": "sha512-4XFkf8AwyrEG7Ziu3L2L0Cv+WyY47Tcsp70JFmpftbAA1K7YL/sgE9jh9HyNj08Y/U50ItUchpN0w6HxAoX1rA==", "dev": true, "requires": { - "@babel/code-frame": "^7.5.5", - "@babel/generator": "^7.7.4", - "@babel/helpers": "^7.7.4", - "@babel/parser": "^7.7.5", - "@babel/template": "^7.7.4", - "@babel/traverse": "^7.7.4", - "@babel/types": "^7.7.4", + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.8.3", + "@babel/helpers": "^7.8.3", + "@babel/parser": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.3", "convert-source-map": "^1.7.0", "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", "json5": "^2.1.0", "lodash": "^4.17.13", "resolve": "^1.3.2", @@ -1152,6 +1172,27 @@ "@babel/types": "^7.8.3" } }, + "@babel/helper-compilation-targets": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.4.tgz", + "integrity": "sha512-3k3BsKMvPp5bjxgMdrFyq0UaEO48HciVrOVF0+lon8pp95cyJ2ujAh0TrBHNMnJGT2rr0iKOJPFFbSqjDyf/Pg==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.8.4", + "browserslist": "^4.8.5", + "invariant": "^2.2.4", + "levenary": "^1.1.1", + "semver": "^5.5.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, "@babel/helper-create-regexp-features-plugin": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.3.tgz", @@ -1325,14 +1366,57 @@ } }, "@babel/helpers": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.8.3.tgz", - "integrity": "sha512-LmU3q9Pah/XyZU89QvBgGt+BCsTPoQa+73RxAQh8fb8qkDyIfeQnmgs+hvzhTCKTzqOyk7JTkS3MS1S8Mq5yrQ==", + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.8.4.tgz", + "integrity": "sha512-VPbe7wcQ4chu4TDQjimHv/5tj73qz88o12EPkO2ValS2QiQS/1F2SsjyIGNnAD0vF/nZS6Cf9i+vW6HIlnaR8w==", "dev": true, "requires": { "@babel/template": "^7.8.3", - "@babel/traverse": "^7.8.3", + "@babel/traverse": "^7.8.4", "@babel/types": "^7.8.3" + }, + "dependencies": { + "@babel/generator": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.4.tgz", + "integrity": "sha512-PwhclGdRpNAf3IxZb0YVuITPZmmrXz9zf6fH8lT4XbrmfQKr6ryBzhv593P5C6poJRciFCL/eHGW2NuGrgEyxA==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/parser": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.4.tgz", + "integrity": "sha512-0fKu/QqildpXmPVaRBoXOlyBb3MC+J0A66x97qEfLOMkn3u6nfY5esWogQwi/K0BjASYy4DbnsEWnpNL6qT5Mw==", + "dev": true + }, + "@babel/traverse": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.4.tgz", + "integrity": "sha512-NGLJPZwnVEyBPLI+bl9y9aSnxMhsKz42so7ApAv9D+b4vAFPpY013FTS9LdKxcABoIYFU52HcYga1pPlx454mg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.8.4", + "@babel/helper-function-name": "^7.8.3", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/parser": "^7.8.4", + "@babel/types": "^7.8.3", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } } }, "@babel/highlight": { @@ -1383,6 +1467,16 @@ "@babel/plugin-syntax-json-strings": "^7.8.0" } }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" + } + }, "@babel/plugin-proposal-object-rest-spread": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.8.3.tgz", @@ -1403,6 +1497,16 @@ "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" } }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.8.3.tgz", + "integrity": "sha512-QIoIR9abkVn+seDE3OjA08jWcs3eZ9+wJCKSRgo3WdEU2csFYgdScb+8qHB3+WXsGJD55u+5hWCISI7ejXS+kg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.0" + } + }, "@babel/plugin-proposal-unicode-property-regex": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.3.tgz", @@ -1440,6 +1544,15 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, "@babel/plugin-syntax-object-rest-spread": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", @@ -1458,6 +1571,15 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, "@babel/plugin-syntax-top-level-await": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.8.3.tgz", @@ -1570,9 +1692,9 @@ } }, "@babel/plugin-transform-for-of": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.8.3.tgz", - "integrity": "sha512-ZjXznLNTxhpf4Q5q3x1NsngzGA38t9naWH8Gt+0qYZEJAcvPI9waSStSh56u19Ofjr7QmD0wUsQ8hw8s/p1VnA==", + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.8.4.tgz", + "integrity": "sha512-iAXNlOWvcYUYoV8YIxwS7TxGRJcxyl8eQCfT+A5j8sKUzRFvJdcyjp97jL2IghWSRDaL2PU2O2tX8Cu9dTBq5A==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.3" @@ -1680,9 +1802,9 @@ } }, "@babel/plugin-transform-parameters": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.8.3.tgz", - "integrity": "sha512-/pqngtGb54JwMBZ6S/D3XYylQDFtGjWrnoCF4gXZOUpFV/ujbxnoNGNvDGu6doFWRPBveE72qTx/RRU44j5I/Q==", + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.8.4.tgz", + "integrity": "sha512-IsS3oTxeTsZlE5KqzTbcC2sV0P9pXdec53SU+Yxv7o/6dvGM5AkTotQKhoSffhNgZ/dftsSiOoxy7evCYJXzVA==", "dev": true, "requires": { "@babel/helper-call-delegate": "^7.8.3", @@ -1756,9 +1878,9 @@ } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.8.3.tgz", - "integrity": "sha512-3TrkKd4LPqm4jHs6nPtSDI/SV9Cm5PRJkHLUgTcqRQQTMAZ44ZaAdDZJtvWFSaRcvT0a1rTmJ5ZA5tDKjleF3g==", + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.8.4.tgz", + "integrity": "sha512-2QKyfjGdvuNfHsb7qnBBlKclbD4CfshH2KvDabiijLMGXPHJXGxtDzwIF7bQP+T0ysw8fYTtxPafgfs/c1Lrqg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.3" @@ -1775,61 +1897,67 @@ } }, "@babel/preset-env": { - "version": "7.7.6", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.7.6.tgz", - "integrity": "sha512-k5hO17iF/Q7tR9Jv8PdNBZWYW6RofxhnxKjBMc0nG4JTaWvOTiPoO/RLFwAKcA4FpmuBFm6jkoqaRJLGi0zdaQ==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.7.4", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-async-generator-functions": "^7.7.4", - "@babel/plugin-proposal-dynamic-import": "^7.7.4", - "@babel/plugin-proposal-json-strings": "^7.7.4", - "@babel/plugin-proposal-object-rest-spread": "^7.7.4", - "@babel/plugin-proposal-optional-catch-binding": "^7.7.4", - "@babel/plugin-proposal-unicode-property-regex": "^7.7.4", - "@babel/plugin-syntax-async-generators": "^7.7.4", - "@babel/plugin-syntax-dynamic-import": "^7.7.4", - "@babel/plugin-syntax-json-strings": "^7.7.4", - "@babel/plugin-syntax-object-rest-spread": "^7.7.4", - "@babel/plugin-syntax-optional-catch-binding": "^7.7.4", - "@babel/plugin-syntax-top-level-await": "^7.7.4", - "@babel/plugin-transform-arrow-functions": "^7.7.4", - "@babel/plugin-transform-async-to-generator": "^7.7.4", - "@babel/plugin-transform-block-scoped-functions": "^7.7.4", - "@babel/plugin-transform-block-scoping": "^7.7.4", - "@babel/plugin-transform-classes": "^7.7.4", - "@babel/plugin-transform-computed-properties": "^7.7.4", - "@babel/plugin-transform-destructuring": "^7.7.4", - "@babel/plugin-transform-dotall-regex": "^7.7.4", - "@babel/plugin-transform-duplicate-keys": "^7.7.4", - "@babel/plugin-transform-exponentiation-operator": "^7.7.4", - "@babel/plugin-transform-for-of": "^7.7.4", - "@babel/plugin-transform-function-name": "^7.7.4", - "@babel/plugin-transform-literals": "^7.7.4", - "@babel/plugin-transform-member-expression-literals": "^7.7.4", - "@babel/plugin-transform-modules-amd": "^7.7.5", - "@babel/plugin-transform-modules-commonjs": "^7.7.5", - "@babel/plugin-transform-modules-systemjs": "^7.7.4", - "@babel/plugin-transform-modules-umd": "^7.7.4", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.7.4", - "@babel/plugin-transform-new-target": "^7.7.4", - "@babel/plugin-transform-object-super": "^7.7.4", - "@babel/plugin-transform-parameters": "^7.7.4", - "@babel/plugin-transform-property-literals": "^7.7.4", - "@babel/plugin-transform-regenerator": "^7.7.5", - "@babel/plugin-transform-reserved-words": "^7.7.4", - "@babel/plugin-transform-shorthand-properties": "^7.7.4", - "@babel/plugin-transform-spread": "^7.7.4", - "@babel/plugin-transform-sticky-regex": "^7.7.4", - "@babel/plugin-transform-template-literals": "^7.7.4", - "@babel/plugin-transform-typeof-symbol": "^7.7.4", - "@babel/plugin-transform-unicode-regex": "^7.7.4", - "@babel/types": "^7.7.4", - "browserslist": "^4.6.0", - "core-js-compat": "^3.4.7", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.8.3.tgz", + "integrity": "sha512-Rs4RPL2KjSLSE2mWAx5/iCH+GC1ikKdxPrhnRS6PfFVaiZeom22VFKN4X8ZthyN61kAaR05tfXTbCvatl9WIQg==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.8.0", + "@babel/helper-compilation-targets": "^7.8.3", + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-proposal-async-generator-functions": "^7.8.3", + "@babel/plugin-proposal-dynamic-import": "^7.8.3", + "@babel/plugin-proposal-json-strings": "^7.8.3", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-proposal-object-rest-spread": "^7.8.3", + "@babel/plugin-proposal-optional-catch-binding": "^7.8.3", + "@babel/plugin-proposal-optional-chaining": "^7.8.3", + "@babel/plugin-proposal-unicode-property-regex": "^7.8.3", + "@babel/plugin-syntax-async-generators": "^7.8.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.0", + "@babel/plugin-syntax-top-level-await": "^7.8.3", + "@babel/plugin-transform-arrow-functions": "^7.8.3", + "@babel/plugin-transform-async-to-generator": "^7.8.3", + "@babel/plugin-transform-block-scoped-functions": "^7.8.3", + "@babel/plugin-transform-block-scoping": "^7.8.3", + "@babel/plugin-transform-classes": "^7.8.3", + "@babel/plugin-transform-computed-properties": "^7.8.3", + "@babel/plugin-transform-destructuring": "^7.8.3", + "@babel/plugin-transform-dotall-regex": "^7.8.3", + "@babel/plugin-transform-duplicate-keys": "^7.8.3", + "@babel/plugin-transform-exponentiation-operator": "^7.8.3", + "@babel/plugin-transform-for-of": "^7.8.3", + "@babel/plugin-transform-function-name": "^7.8.3", + "@babel/plugin-transform-literals": "^7.8.3", + "@babel/plugin-transform-member-expression-literals": "^7.8.3", + "@babel/plugin-transform-modules-amd": "^7.8.3", + "@babel/plugin-transform-modules-commonjs": "^7.8.3", + "@babel/plugin-transform-modules-systemjs": "^7.8.3", + "@babel/plugin-transform-modules-umd": "^7.8.3", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.8.3", + "@babel/plugin-transform-new-target": "^7.8.3", + "@babel/plugin-transform-object-super": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.8.3", + "@babel/plugin-transform-property-literals": "^7.8.3", + "@babel/plugin-transform-regenerator": "^7.8.3", + "@babel/plugin-transform-reserved-words": "^7.8.3", + "@babel/plugin-transform-shorthand-properties": "^7.8.3", + "@babel/plugin-transform-spread": "^7.8.3", + "@babel/plugin-transform-sticky-regex": "^7.8.3", + "@babel/plugin-transform-template-literals": "^7.8.3", + "@babel/plugin-transform-typeof-symbol": "^7.8.3", + "@babel/plugin-transform-unicode-regex": "^7.8.3", + "@babel/types": "^7.8.3", + "browserslist": "^4.8.2", + "core-js-compat": "^3.6.2", "invariant": "^2.2.2", - "js-levenshtein": "^1.1.3", + "levenary": "^1.1.0", "semver": "^5.5.0" }, "dependencies": { @@ -1887,12 +2015,12 @@ "dev": true }, "@ngtools/webpack": { - "version": "8.3.23", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-8.3.23.tgz", - "integrity": "sha512-+XekeThky6+Upped3hOwjHwYTsXJiDuCA5ZZLmGHkTxGzjB4ZHSlBaj75yTS+s+/Ab1WgdRo2P2BxOUS7oogtw==", + "version": "8.3.25", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-8.3.25.tgz", + "integrity": "sha512-yHvgxXUXlgdWijtzcRjTaUqzK+6TVK/8p7PreBR00GsLxhl4U1jQSC6yDaZUCjOaEkiczFWl4hEuC4wTU/hLdg==", "dev": true, "requires": { - "@angular-devkit/core": "8.3.23", + "@angular-devkit/core": "8.3.25", "enhanced-resolve": "4.1.0", "rxjs": "6.4.0", "tree-kill": "1.2.2", @@ -1900,23 +2028,23 @@ } }, "@schematics/angular": { - "version": "8.3.23", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-8.3.23.tgz", - "integrity": "sha512-yisP1iCLGC4VnZNC3kOnYyTS5cmfKEnLM9bMzhZGMWwov9RRfdxKKeSnG9FJNwHxI0WjQ0UWwfiz1dj0YacG3g==", + "version": "8.3.25", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-8.3.25.tgz", + "integrity": "sha512-/vEPtE+fvgsWPml/MVqzmlGPBujadPPNwaTuuj5Uz1aVcKeEYzLkbN8YQOpml4vxZHCF8RDwNdGiU4SZg63Jfg==", "dev": true, "requires": { - "@angular-devkit/core": "8.3.23", - "@angular-devkit/schematics": "8.3.23" + "@angular-devkit/core": "8.3.25", + "@angular-devkit/schematics": "8.3.25" } }, "@schematics/update": { - "version": "0.803.23", - "resolved": "https://registry.npmjs.org/@schematics/update/-/update-0.803.23.tgz", - "integrity": "sha512-pLd5PseFTYF3VZ+IgMeNEFATQY5A80ylot7Dcg9FDeihqr5R9Rd1maCWIR43oKXvtK5C5+ackwR0QaPBAZ9bdw==", + "version": "0.803.25", + "resolved": "https://registry.npmjs.org/@schematics/update/-/update-0.803.25.tgz", + "integrity": "sha512-VIlqhJsCStA3aO4llxZ7lAOvQUqppyZdrEO7f/ApIJmuofPQTkO5Hx21tnv0dyExwoqPCSIHzEu4Tmc0/TWM1A==", "dev": true, "requires": { - "@angular-devkit/core": "8.3.23", - "@angular-devkit/schematics": "8.3.23", + "@angular-devkit/core": "8.3.25", + "@angular-devkit/schematics": "8.3.25", "@yarnpkg/lockfile": "1.1.0", "ini": "1.3.5", "pacote": "9.5.5", @@ -1976,9 +2104,9 @@ "dev": true }, "@types/selenium-webdriver": { - "version": "3.0.16", - "resolved": "https://registry.npmjs.org/@types/selenium-webdriver/-/selenium-webdriver-3.0.16.tgz", - "integrity": "sha512-lMC2G0ItF2xv4UCiwbJGbnJlIuUixHrioOhNGHSCsYCJ8l4t9hMCUimCytvFv7qy6AfSzRxhRHoGa+UqaqwyeA==", + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/@types/selenium-webdriver/-/selenium-webdriver-3.0.17.tgz", + "integrity": "sha512-tGomyEuzSC1H28y2zlW6XPCaDaXFaD6soTdb4GNdmte2qfHtrKqhy0ZFs4r/1hpazCfEZqeTSRLvSasmEx89uw==", "dev": true }, "@types/source-list-map": { @@ -2227,9 +2355,9 @@ "dev": true }, "adm-zip": { - "version": "0.4.13", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.13.tgz", - "integrity": "sha512-fERNJX8sOXfel6qCBCMPvZLzENBEhZTzKqg6vrOW5pvoEaQuJhRU4ndTAh6lHOxn1I6jnz2NHra56ZODM751uw==", + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.14.tgz", + "integrity": "sha512-/9aQCnQHF+0IiCl0qhXoK7qs//SwYE7zX8lsr/DNk1BRAHYxeLZPL4pguwK29gUEqasYQjqPtEpDRSWEkdHn9g==", "dev": true }, "after": { @@ -2943,14 +3071,14 @@ } }, "browserslist": { - "version": "4.8.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.8.3.tgz", - "integrity": "sha512-iU43cMMknxG1ClEZ2MDKeonKE1CCrFVkQK2AqO2YWFmvIrx4JWrvQ4w4hQez6EpVI8rHTtqh/ruHHDHSOKxvUg==", + "version": "4.8.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.8.6.tgz", + "integrity": "sha512-ZHao85gf0eZ0ESxLfCp73GG9O/VTytYDIkIiZDlURppLTI9wErSM/5yAKEq6rcUdxBLjMELmrYUJGg5sxGKMHg==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001017", - "electron-to-chromium": "^1.3.322", - "node-releases": "^1.1.44" + "caniuse-lite": "^1.0.30001023", + "electron-to-chromium": "^1.3.341", + "node-releases": "^1.1.47" } }, "browserstack": { @@ -3114,9 +3242,9 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30001019", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001019.tgz", - "integrity": "sha512-6ljkLtF1KM5fQ+5ZN0wuyVvvebJxgJPTmScOMaFuQN2QuOzvRJnWSKfzQskQU5IOU4Gap3zasYPIinzwUjoj/g==", + "version": "1.0.30001024", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001024.tgz", + "integrity": "sha512-LubRSEPpOlKlhZw9wGlLHo8ZVj6ugGU3xGUfLPneNBledSd9lIM5cCGZ9Mz/mMCJUhEt4jZpYteZNVRdJw5FRA==", "dev": true }, "canonical-path": { @@ -3148,32 +3276,6 @@ "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", "dev": true }, - "chart.js": { - "version": "2.9.3", - "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-2.9.3.tgz", - "integrity": "sha512-+2jlOobSk52c1VU6fzkh3UwqHMdSlgH1xFv9FKMqHiNCpXsGPQa/+81AFa+i3jZ253Mq9aAycPwDjnn1XbRNNw==", - "requires": { - "chartjs-color": "^2.1.0", - "moment": "^2.10.2" - } - }, - "chartjs-color": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chartjs-color/-/chartjs-color-2.4.1.tgz", - "integrity": "sha512-haqOg1+Yebys/Ts/9bLo/BqUcONQOdr/hoEr2LLTRl6C5LXctUdHxsCYfvQVg5JIxITrfCNUDr4ntqmQk9+/0w==", - "requires": { - "chartjs-color-string": "^0.6.0", - "color-convert": "^1.9.3" - } - }, - "chartjs-color-string": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/chartjs-color-string/-/chartjs-color-string-0.6.0.tgz", - "integrity": "sha512-TIB5OKn1hPJvO7JcteW4WY/63v6KwEdt6udfnDE9iCAZgy+V4SrbSxoIbTw/xkUIapjEI4ExGtD0+6D3KyFd7A==", - "requires": { - "color-name": "^1.0.0" - } - }, "chokidar": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.1.tgz", @@ -3202,9 +3304,9 @@ } }, "chownr": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.3.tgz", - "integrity": "sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", "dev": true }, "chrome-trace-event": { @@ -3318,7 +3420,8 @@ "clone": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=" + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", + "dev": true }, "clone-deep": { "version": "4.0.1", @@ -3382,6 +3485,7 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, "requires": { "color-name": "1.1.3" } @@ -3389,7 +3493,8 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true }, "colors": { "version": "1.1.2", @@ -3661,9 +3766,9 @@ } }, "core-js": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.2.1.tgz", - "integrity": "sha512-Qa5XSVefSVPRxy2XfUC13WbvqkxhkwB3ve+pgCQveNgYzbM/UxZeu1dcOX/xr4UmfUd+muuvsaxilQzCyUurMw==", + "version": "3.6.4", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.4.tgz", + "integrity": "sha512-4paDGScNgZP2IXXilaffL9X7968RuvwlkK3xWtZRVqgd8SYNiVKRJvkFd1aqqEuPfN7E68ZHEp9hDj6lHj4Hyw==", "dev": true }, "core-js-compat": { @@ -3934,6 +4039,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "dev": true, "requires": { "is-arguments": "^1.0.4", "is-date-object": "^1.0.1", @@ -3966,6 +4072,7 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, "requires": { "object-keys": "^1.0.12" } @@ -4203,9 +4310,9 @@ "dev": true }, "electron-to-chromium": { - "version": "1.3.340", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.340.tgz", - "integrity": "sha512-hRFBAglhcj5iVYH+o8QU0+XId1WGoc0VGowJB1cuJAt3exHGrivZvWeAO5BRgBZqwZtwxjm8a5MQeGoT/Su3ww==", + "version": "1.3.353", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.353.tgz", + "integrity": "sha512-CkG24biyy9qQTQs8U2vGQaiyWSFDxAXP/UGHBveXZ1TGoWOAw+eYZXryrX0UeIMKnQjcaHx33hzYuydv98kqGQ==", "dev": true }, "elliptic": { @@ -4418,6 +4525,7 @@ "version": "1.17.4", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", + "dev": true, "requires": { "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", @@ -4436,6 +4544,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, "requires": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", @@ -4684,7 +4793,8 @@ "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true }, "extend-shallow": { "version": "3.0.2", @@ -4795,11 +4905,6 @@ "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", "dev": true }, - "fast-diff": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.1.2.tgz", - "integrity": "sha512-KaJUt+M9t1qaIteSvjc6P3RbMdXsNhK61GRftR6SNxqmhthcd9MGIi4T+o0jD8LUSpSnSKXE20nLtJ3fOHxQig==" - }, "fast-json-stable-stringify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", @@ -4828,9 +4933,9 @@ "dev": true }, "figures": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.1.0.tgz", - "integrity": "sha512-ravh8VRXqHuMvZt/d8GblBeqDMkdJMBdv/2KntFH+ra5MXkO7nxNKpzQ3n6QD/2da1kH0aWmNISdvhM7gl2gVg==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", "dev": true, "requires": { "escape-string-regexp": "^1.0.5" @@ -4947,9 +5052,9 @@ } }, "make-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.0.tgz", - "integrity": "sha512-grNJDhb8b1Jm1qeqW5R/O63wUo4UXo2v2HMic6YT9i/HBlF93S8jkMgH7yugvY9ABDShH4VZMn8I+U8+fCNegw==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.2.tgz", + "integrity": "sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w==", "dev": true, "requires": { "semver": "^6.0.0" @@ -5137,7 +5242,8 @@ "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true }, "genfun": { "version": "5.0.0", @@ -5145,6 +5251,12 @@ "integrity": "sha512-KGDOARWVga7+rnB3z9Sd2Letx515owfk0hSxHGuqjANb1M+x2bGZGqHLiozPsYMdM2OubeMni/Hpwmjq6qIUhA==", "dev": true }, + "gensync": { + "version": "1.0.0-beta.1", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", + "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==", + "dev": true + }, "get-caller-file": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", @@ -5270,6 +5382,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, "requires": { "function-bind": "^1.1.1" } @@ -5315,7 +5428,8 @@ "has-symbols": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==" + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true }, "has-value": { "version": "1.0.0", @@ -5839,7 +5953,8 @@ "is-arguments": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", - "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==" + "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", + "dev": true }, "is-arrayish": { "version": "0.2.1", @@ -5865,7 +5980,8 @@ "is-callable": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", - "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==" + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "dev": true }, "is-data-descriptor": { "version": "0.1.4", @@ -5890,7 +6006,8 @@ "is-date-object": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", - "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==" + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", + "dev": true }, "is-descriptor": { "version": "0.1.6", @@ -5999,6 +6116,7 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "dev": true, "requires": { "has": "^1.0.3" } @@ -6013,6 +6131,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, "requires": { "has-symbols": "^1.0.1" } @@ -6128,9 +6247,9 @@ } }, "istanbul-lib-instrument": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.0.tgz", - "integrity": "sha512-Nm4wVHdo7ZXSG30KjZ2Wl5SU/Bw7bDx1PdaiIFzEStdjs0H12mOTncn1GVYuqQSaZxpg87VGBRsVRPGD2cD1AQ==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.1.tgz", + "integrity": "sha512-imIchxnodll7pvQBYOqUu88EufLCU56LMeFPZZM/fJZ1irYcYdqroaV+ACK1Ila8ls09iEYArp+nqyC6lW1Vfg==", "dev": true, "requires": { "@babel/core": "^7.7.5", @@ -6272,12 +6391,6 @@ "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.4.1.tgz", "integrity": "sha512-36+AdBzCL+y6qjw5Tx7HgzeGCzC81MDDgaUP8ld2zhx58HdqXGoBd+tHdrBMiyjGQs0Hxs/MLZTu/eHNJJuWPw==" }, - "js-levenshtein": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz", - "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==", - "dev": true - }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -7161,9 +7274,9 @@ } }, "karma-jasmine-html-reporter": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-1.5.1.tgz", - "integrity": "sha512-LlLqsoGyxT1981z46BRaC1SaY4pTo4EHCA/qZvJEMQXzTtGMyIlmwtxny6FiLO/N/OmZh69eaoNzvBkbHVVFQA==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-1.5.2.tgz", + "integrity": "sha512-ILBPsXqQ3eomq+oaQsM311/jxsypw5/d0LnZXj26XkfThwq7jZ55A2CFSKJVA5VekbbOGvMyv7d3juZj0SeTxA==", "dev": true }, "karma-source-map-support": { @@ -7233,6 +7346,21 @@ "pify": "^4.0.1" } }, + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true + }, + "levenary": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz", + "integrity": "sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ==", + "dev": true, + "requires": { + "leven": "^3.1.0" + } + }, "license-webpack-plugin": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-2.1.2.tgz", @@ -7305,9 +7433,9 @@ } }, "loglevel": { - "version": "1.6.6", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.6.tgz", - "integrity": "sha512-Sgr5lbboAUBo3eXCSPL4/KoVz3ROKquOjcctxmHIt+vol2DrqTQe3SwkKKuYhEiWB5kYa13YyopJ69deJ1irzQ==", + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.7.tgz", + "integrity": "sha512-cY2eLFrQSAfVPhCgH1s7JI73tMbg9YC3v3+ZHVW67sBS7UxWzNEk/ZBbSfLykBWHp33dqqtOv82gjhKEi81T/A==", "dev": true }, "loose-envify": { @@ -7739,11 +7867,6 @@ } } }, - "moment": { - "version": "2.24.0", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz", - "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==" - }, "move-concurrently": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", @@ -7887,9 +8010,9 @@ } }, "node-releases": { - "version": "1.1.47", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.47.tgz", - "integrity": "sha512-k4xjVPx5FpwBUj0Gw7uvFOTF4Ep8Hok1I6qjwL3pLfwe7Y0REQSAqOwwv9TWBCUtMHxcXfY4PgRLRozcChvTcA==", + "version": "1.1.49", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.49.tgz", + "integrity": "sha512-xH8t0LS0disN0mtRCh+eByxFPie+msJUBL/lJDBuap53QGiYPa9joh83K4pCZgWJ+2L4b9h88vCVdXQ60NO2bg==", "dev": true, "requires": { "semver": "^6.3.0" @@ -8005,9 +8128,9 @@ } }, "npm-registry-fetch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-4.0.2.tgz", - "integrity": "sha512-Z0IFtPEozNdeZRPh3aHHxdG+ZRpzcbQaJLthsm3VhNf6DScicTFRHZzK82u8RsJUsUHkX+QH/zcB/5pmd20H4A==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-4.0.3.tgz", + "integrity": "sha512-WGvUx0lkKFhu9MbiGFuT9nG2NpfQ+4dCJwRwwtK2HK5izJEvwDxMeUyqbuMS7N/OkpVCqDorV6rO5E4V9F8lJw==", "dev": true, "requires": { "JSONStream": "^1.3.4", @@ -8106,17 +8229,20 @@ "object-inspect": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", - "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==" + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true }, "object-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.0.2.tgz", - "integrity": "sha512-Epah+btZd5wrrfjkJZq1AOB9O6OxUQto45hzFd7lXGrpHPGE0W1k+426yrZV+k6NJOzLNNW/nVsmZdIWsAqoOQ==" + "integrity": "sha512-Epah+btZd5wrrfjkJZq1AOB9O6OxUQto45hzFd7lXGrpHPGE0W1k+426yrZV+k6NJOzLNNW/nVsmZdIWsAqoOQ==", + "dev": true }, "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true }, "object-visit": { "version": "1.0.1", @@ -8131,6 +8257,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "dev": true, "requires": { "define-properties": "^1.1.2", "function-bind": "^1.1.1", @@ -8409,11 +8536,6 @@ "readable-stream": "^2.1.5" } }, - "parchment": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/parchment/-/parchment-1.1.4.tgz", - "integrity": "sha512-J5FBQt/pM2inLzg4hEWmzQx/8h8D0CiDxaG3vyp9rKrQRSDgBlhjdP5jQGgosEajXPSQouXGHOmVdgo7QmJuOg==" - }, "parse-asn1": { "version": "5.1.5", "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", @@ -8776,9 +8898,9 @@ } }, "protractor": { - "version": "5.4.2", - "resolved": "https://registry.npmjs.org/protractor/-/protractor-5.4.2.tgz", - "integrity": "sha512-zlIj64Cr6IOWP7RwxVeD8O4UskLYPoyIcg0HboWJL9T79F1F0VWtKkGTr/9GN6BKL+/Q/GmM7C9kFVCfDbP5sA==", + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/protractor/-/protractor-5.4.3.tgz", + "integrity": "sha512-7pMAolv8Ah1yJIqaorDTzACtn3gk7BamVKPTeO5lqIGOrfosjPgXFx/z1dqSI+m5EeZc2GMJHPr5DYlodujDNA==", "dev": true, "requires": { "@types/q": "^0.0.32", @@ -9051,36 +9173,6 @@ "integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==", "dev": true }, - "quill": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/quill/-/quill-1.3.7.tgz", - "integrity": "sha512-hG/DVzh/TiknWtE6QmWAF/pxoZKYxfe3J/d/+ShUWkDvvkZQVTPeVmUJVu1uE6DDooC4fWTiCLh84ul89oNz5g==", - "requires": { - "clone": "^2.1.1", - "deep-equal": "^1.0.1", - "eventemitter3": "^2.0.3", - "extend": "^3.0.2", - "parchment": "^1.1.4", - "quill-delta": "^3.6.2" - }, - "dependencies": { - "eventemitter3": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-2.0.3.tgz", - "integrity": "sha1-teEHm1n7XhuidxwKmTvgYKWMmbo=" - } - } - }, - "quill-delta": { - "version": "3.6.3", - "resolved": "https://registry.npmjs.org/quill-delta/-/quill-delta-3.6.3.tgz", - "integrity": "sha512-wdIGBlcX13tCHOXGMVnnTVFtGRLoP0imqxM696fIPwIf5ODIYUHIvHbZcyvGlZFiFhK5XzDC2lpjbxRhnM05Tg==", - "requires": { - "deep-equal": "^1.0.1", - "extend": "^3.0.2", - "fast-diff": "1.1.2" - } - }, "randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -9275,6 +9367,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz", "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==", + "dev": true, "requires": { "define-properties": "^1.1.3", "es-abstract": "^1.17.0-next.1" @@ -9301,9 +9394,9 @@ "dev": true }, "regjsparser": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.2.tgz", - "integrity": "sha512-E9ghzUtoLwDekPT0DYCp+c4h+bvuUpe6rRHCTYn6eGoqj1LgKXxT6I0Il4WbjhQkOghzi/V+y03bPKvbllL93Q==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.3.tgz", + "integrity": "sha512-8uZvYbnfAtEm9Ab8NTb3hdLwL4g/LQzEYP7Xs27T96abJCCE2d6r3cPZPQEsLKy0vRSGVNG+/zVGtLr86HQduA==", "dev": true, "requires": { "jsesc": "~0.5.0" @@ -10317,9 +10410,9 @@ }, "dependencies": { "readable-stream": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.5.0.tgz", - "integrity": "sha512-gSz026xs2LfxBPudDuI41V1lka8cxg64E66SGe78zJlsUofOg/yqwezdIcdfwik6B4h8LFmWPA9ef9X3FiNFLA==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "dev": true, "requires": { "inherits": "^2.0.3", @@ -10506,6 +10599,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==", + "dev": true, "requires": { "define-properties": "^1.1.3", "function-bind": "^1.1.1" @@ -10515,6 +10609,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", + "dev": true, "requires": { "define-properties": "^1.1.3", "function-bind": "^1.1.1" @@ -10659,9 +10754,9 @@ } }, "terser": { - "version": "4.3.9", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.3.9.tgz", - "integrity": "sha512-NFGMpHjlzmyOtPL+fDw3G7+6Ueh/sz4mkaUYa4lJCxOPTNzd0Uj0aZJOmsDYoSQyfuVoWDMSWTPU3huyOm2zdA==", + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.6.3.tgz", + "integrity": "sha512-Lw+ieAXmY69d09IIc/yqeBqXpEQIpDGZqT34ui1QWXIUpR2RjbqEkT8X7Lgex19hslSqcWM5iMN2kM11eMsESQ==", "dev": true, "requires": { "commander": "^2.20.0", diff --git a/package.json b/package.json index 16b1ce2..16c15d1 100644 --- a/package.json +++ b/package.json @@ -27,18 +27,16 @@ "@angular/platform-browser-dynamic": "~8.2.14", "@angular/router": "~8.2.14", "bootstrap": "^4.4.1", - "chart.js": "^2.9.3", "jquery": "^3.4.1", "primeicons": "^2.0.0", "primeng": "^8.1.1", - "quill": "^1.3.7", "rxjs": "~6.4.0", "tslib": "^1.10.0", "zone.js": "~0.9.1" }, "devDependencies": { - "@angular-devkit/build-angular": "~0.803.23", - "@angular/cli": "~8.3.23", + "@angular-devkit/build-angular": "~0.803.25", + "@angular/cli": "~8.3.25", "@angular/compiler-cli": "~8.2.14", "@angular/language-service": "~8.2.14", "@types/node": "~8.9.4", @@ -51,8 +49,8 @@ "karma-chrome-launcher": "~2.2.0", "karma-coverage-istanbul-reporter": "~2.0.1", "karma-jasmine": "~2.0.1", - "karma-jasmine-html-reporter": "^1.4.0", - "protractor": "~5.4.0", + "karma-jasmine-html-reporter": "^1.5.2", + "protractor": "~5.4.3", "ts-node": "~7.0.0", "tslint": "~5.15.0", "typescript": "~3.5.3" diff --git a/src/app/app.component.ts b/src/app/app.component.ts index bb570c8..f6da590 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -17,20 +17,20 @@ export class AppComponent implements OnInit { ngOnInit() { // Example usage of resource service. - this.resourceService.getResourceStandard('test.txt', 'text').toPromise().then(val => console.log('Test file', val)) - .catch(err => console.log(err)); - this.resourceService.getResourcePDF('radar.pdf').toPromise().then(val => { - console.log('Radar pdf', val); - const file = new Blob([val], { type: 'application/pdf' }); - const url = URL.createObjectURL(file); - console.log('PDF Viewable at', url); - console.log('Adblock prevents it from opening'); - // window.open(url); - }) - .catch((err: HttpErrorResponse) => { - console.log('Error occurred with status value', err.status); - console.log(err); - }); + // this.resourceService.getResourceStandard('test.txt', 'text').toPromise().then(val => console.log('Test file', val)) + // .catch(err => console.log(err)); + // this.resourceService.getResourcePDF('radar.pdf').toPromise().then(val => { + // console.log('Radar pdf', val); + // const file = new Blob([val], { type: 'application/pdf' }); + // const url = URL.createObjectURL(file); + // console.log('PDF Viewable at', url); + // console.log('Adblock prevents it from opening'); + // // window.open(url); + // }) + // .catch((err: HttpErrorResponse) => { + // console.log('Error occurred with status value', err.status); + // console.log(err); + // }); } } diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 23930f3..0f35882 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -3,8 +3,8 @@ import { NgModule } from '@angular/core'; import { AppRoutingModule } from './app-routing.module'; import { AppComponent } from './app.component'; -import { ButtonModule, MessageService, TreeModule } from 'primeng/primeng'; import { HttpClientModule } from '@angular/common/http'; +import { TreeModule } from 'primeng/tree'; import { MainComponent } from './main/main.component'; import { MainCenterComponent } from './main/main-center/main-center.component'; import { TreeComponent } from './main/tree/tree.component'; @@ -15,8 +15,7 @@ import { TreeComponent } from './main/tree/tree.component'; BrowserModule, AppRoutingModule, TreeModule, - HttpClientModule, - ButtonModule + HttpClientModule ], providers: [], bootstrap: [AppComponent] diff --git a/src/app/main/main-center/main-center.component.html b/src/app/main/main-center/main-center.component.html index 1a12322..3d7c2a9 100644 --- a/src/app/main/main-center/main-center.component.html +++ b/src/app/main/main-center/main-center.component.html @@ -1,4 +1,3 @@ -

{{this.currentNode.label}}

diff --git a/src/app/main/tree/tree.component.ts b/src/app/main/tree/tree.component.ts index fd3342c..aaf8bf6 100644 --- a/src/app/main/tree/tree.component.ts +++ b/src/app/main/tree/tree.component.ts @@ -1,6 +1,6 @@ import { Component, OnInit } from '@angular/core'; import { TreeNode } from 'primeng/api'; -import { NodeService } from 'src/app/node.service'; +import { NodeService } from 'src/app/services/node.service'; import { TreeService } from 'src/app/services/tree.service'; @Component({ diff --git a/src/app/node.service.spec.ts b/src/app/node.service.spec.ts deleted file mode 100644 index d8589c0..0000000 --- a/src/app/node.service.spec.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { TestBed } from '@angular/core/testing'; - -import { NodeService } from './node.service'; - -describe('NodeService', () => { - beforeEach(() => TestBed.configureTestingModule({})); - - it('should be created', () => { - const service: NodeService = TestBed.get(NodeService); - expect(service).toBeTruthy(); - }); -}); diff --git a/src/app/services/api/api.service.ts b/src/app/services/api/api.service.ts index accc39c..74e73e3 100644 --- a/src/app/services/api/api.service.ts +++ b/src/app/services/api/api.service.ts @@ -1,4 +1,4 @@ -import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http'; +import { HttpClient } from '@angular/common/http'; import { environment } from 'src/environments/environment'; export class APIService { diff --git a/src/app/node.service.ts b/src/app/services/node.service.ts similarity index 50% rename from src/app/node.service.ts rename to src/app/services/node.service.ts index 499c0c5..665b802 100644 --- a/src/app/node.service.ts +++ b/src/app/services/node.service.ts @@ -3,12 +3,17 @@ import { Injectable } from '@angular/core'; import { TreeNode } from 'primeng/api'; -@Injectable({ providedIn: 'root' }) +@Injectable({ + providedIn: 'root' +}) export class NodeService { - constructor(private http: HttpClient) { } + constructor( + private http: HttpClient + ) { } async getFiles() { - return (await this.http.get('http://localhost:4200/assets/files.json').toPromise()).data as TreeNode[]; + return (await this.http.get('assets/files.json').toPromise()).data as TreeNode[]; } + }