From 3d42d46987e7712d06b8e8a750cd5acd7e89f7a7 Mon Sep 17 00:00:00 2001 From: ziajka Date: Tue, 27 Mar 2018 17:21:50 +0200 Subject: [PATCH] DrawingsDataSource --- src/app/app.module.ts | 16 +++++---- .../shared/datasources/datasource.spec.ts | 3 +- .../shared/datasources/datasource.ts | 2 +- .../datasources/drawings-datasource.spec.ts | 33 +++++++++++++++++++ .../shared/datasources/drawings-datasource.ts | 12 +++++++ .../datasources/links-datasource.spec.ts | 4 +-- .../shared/datasources/links-datasource.ts | 6 ++-- .../datasources/nodes-datasource.spec.ts | 4 +-- .../shared/datasources/nodes-datasource.ts | 7 ++-- .../datasources/symbols-datasource.spec.ts | 4 +-- .../shared/datasources/symbols-datasource.ts | 8 ++--- .../node-on-context-menu-listener.ts | 1 - .../shared/widgets/links.widget.ts | 1 - src/app/project-map/project-map.component.ts | 16 ++++++--- 14 files changed, 85 insertions(+), 32 deletions(-) create mode 100644 src/app/cartography/shared/datasources/drawings-datasource.spec.ts create mode 100644 src/app/cartography/shared/datasources/drawings-datasource.ts delete mode 100644 src/app/cartography/shared/listeners/node-on-context-menu-listener.ts diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 84437feb..18e6ae78 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -53,12 +53,13 @@ import { ApplianceListDialogComponent } from './appliance/appliance-list-dialog/ import { NodeSelectInterfaceComponent } from './shared/node-select-interface/node-select-interface.component'; import { CartographyModule } from './cartography/cartography.module'; import { ToasterService } from './shared/services/toaster.service'; -import {ProjectWebServiceHandler} from "./shared/handlers/project-web-service-handler"; -import {LinksDataSource} from "./cartography/shared/datasources/links-datasource"; -import {NodesDataSource} from "./cartography/shared/datasources/nodes-datasource"; -import {SymbolsDataSource} from "./cartography/shared/datasources/symbols-datasource"; -import {SelectionManager} from "./cartography/shared/managers/selection-manager"; -import {InRectangleHelper} from "./cartography/map/helpers/in-rectangle-helper"; +import { ProjectWebServiceHandler } from "./shared/handlers/project-web-service-handler"; +import { LinksDataSource } from "./cartography/shared/datasources/links-datasource"; +import { NodesDataSource } from "./cartography/shared/datasources/nodes-datasource"; +import { SymbolsDataSource } from "./cartography/shared/datasources/symbols-datasource"; +import { SelectionManager } from "./cartography/shared/managers/selection-manager"; +import { InRectangleHelper } from "./cartography/map/helpers/in-rectangle-helper"; +import { DrawingsDataSource } from "./cartography/shared/datasources/drawings-datasource"; @NgModule({ @@ -120,7 +121,8 @@ import {InRectangleHelper} from "./cartography/map/helpers/in-rectangle-helper"; NodesDataSource, SymbolsDataSource, SelectionManager, - InRectangleHelper + InRectangleHelper, + DrawingsDataSource ], entryComponents: [ AddServerDialogComponent, diff --git a/src/app/cartography/shared/datasources/datasource.spec.ts b/src/app/cartography/shared/datasources/datasource.spec.ts index f60e6572..a91efe22 100644 --- a/src/app/cartography/shared/datasources/datasource.spec.ts +++ b/src/app/cartography/shared/datasources/datasource.spec.ts @@ -1,4 +1,4 @@ -import {DataSource} from "./datasource"; +import { DataSource } from "./datasource"; class Item { constructor(public id: string, public property1?: string, public property2?: string) {} @@ -12,7 +12,6 @@ class TestDataSource extends DataSource { }; - describe('TestDataSource', () => { let dataSource: TestDataSource; let data: Item[]; diff --git a/src/app/cartography/shared/datasources/datasource.ts b/src/app/cartography/shared/datasources/datasource.ts index 97e31304..efaea88d 100644 --- a/src/app/cartography/shared/datasources/datasource.ts +++ b/src/app/cartography/shared/datasources/datasource.ts @@ -1,4 +1,4 @@ -import {BehaviorSubject} from "rxjs/BehaviorSubject"; +import { BehaviorSubject } from "rxjs/BehaviorSubject"; export abstract class DataSource { protected data: T[] = []; diff --git a/src/app/cartography/shared/datasources/drawings-datasource.spec.ts b/src/app/cartography/shared/datasources/drawings-datasource.spec.ts new file mode 100644 index 00000000..5d9c6116 --- /dev/null +++ b/src/app/cartography/shared/datasources/drawings-datasource.spec.ts @@ -0,0 +1,33 @@ +import { DrawingsDataSource } from "./drawings-datasource"; +import { Drawing } from "../models/drawing"; + + +describe('DrawingsDataSource', () => { + let dataSource: DrawingsDataSource; + let data: Drawing[]; + + beforeEach(() => { + dataSource = new DrawingsDataSource(); + dataSource.connect().subscribe((drawings: Drawing[]) => { + data = drawings; + }); + }); + + describe('Drawing can be updated', () => { + beforeEach(() => { + const drawing = new Drawing(); + drawing.drawing_id = "1"; + drawing.project_id = "project1"; + dataSource.add(drawing); + + drawing.project_id = "project2"; + dataSource.update(drawing); + }); + + it('project_id should change', () => { + expect(data[0].drawing_id).toEqual("1"); + expect(data[0].project_id).toEqual("project2"); + }); + }); + +}); diff --git a/src/app/cartography/shared/datasources/drawings-datasource.ts b/src/app/cartography/shared/datasources/drawings-datasource.ts new file mode 100644 index 00000000..bb10bb75 --- /dev/null +++ b/src/app/cartography/shared/datasources/drawings-datasource.ts @@ -0,0 +1,12 @@ +import { Injectable } from "@angular/core"; + +import { Drawing } from "../models/drawing"; +import { DataSource } from "./datasource"; + + +@Injectable() +export class DrawingsDataSource extends DataSource { + protected findIndex(drawing: Drawing) { + return this.data.findIndex((d: Drawing) => d.drawing_id === drawing.drawing_id); + } +} diff --git a/src/app/cartography/shared/datasources/links-datasource.spec.ts b/src/app/cartography/shared/datasources/links-datasource.spec.ts index 9556028c..e30a617c 100644 --- a/src/app/cartography/shared/datasources/links-datasource.spec.ts +++ b/src/app/cartography/shared/datasources/links-datasource.spec.ts @@ -1,5 +1,5 @@ -import {LinksDataSource} from "./links-datasource"; -import {Link} from "../models/link"; +import { LinksDataSource } from "./links-datasource"; +import { Link } from "../models/link"; describe('LinksDataSource', () => { diff --git a/src/app/cartography/shared/datasources/links-datasource.ts b/src/app/cartography/shared/datasources/links-datasource.ts index cd747b43..c0fd8238 100644 --- a/src/app/cartography/shared/datasources/links-datasource.ts +++ b/src/app/cartography/shared/datasources/links-datasource.ts @@ -1,7 +1,7 @@ -import {Injectable} from "@angular/core"; +import { Injectable } from "@angular/core"; -import {DataSource} from "./datasource"; -import {Link} from "../models/link"; +import { DataSource } from "./datasource"; +import { Link} from "../models/link"; @Injectable() diff --git a/src/app/cartography/shared/datasources/nodes-datasource.spec.ts b/src/app/cartography/shared/datasources/nodes-datasource.spec.ts index fca5534b..7df11835 100644 --- a/src/app/cartography/shared/datasources/nodes-datasource.spec.ts +++ b/src/app/cartography/shared/datasources/nodes-datasource.spec.ts @@ -1,5 +1,5 @@ -import {NodesDataSource} from "./nodes-datasource"; -import {Node} from "../models/node"; +import { NodesDataSource } from "./nodes-datasource"; +import { Node } from "../models/node"; describe('NodesDataSource', () => { diff --git a/src/app/cartography/shared/datasources/nodes-datasource.ts b/src/app/cartography/shared/datasources/nodes-datasource.ts index c5c58eb4..d18985df 100644 --- a/src/app/cartography/shared/datasources/nodes-datasource.ts +++ b/src/app/cartography/shared/datasources/nodes-datasource.ts @@ -1,6 +1,7 @@ -import {Node} from "../models/node"; -import {DataSource} from "./datasource"; -import {Injectable} from "@angular/core"; +import { Injectable } from "@angular/core"; + +import { Node } from "../models/node"; +import { DataSource } from "./datasource"; @Injectable() diff --git a/src/app/cartography/shared/datasources/symbols-datasource.spec.ts b/src/app/cartography/shared/datasources/symbols-datasource.spec.ts index 84deecaa..959afb2e 100644 --- a/src/app/cartography/shared/datasources/symbols-datasource.spec.ts +++ b/src/app/cartography/shared/datasources/symbols-datasource.spec.ts @@ -1,5 +1,5 @@ -import {SymbolsDataSource} from "./symbols-datasource"; -import {Symbol} from "../models/symbol"; +import { SymbolsDataSource } from "./symbols-datasource"; +import { Symbol } from "../models/symbol"; describe('SymbolsDataSource', () => { diff --git a/src/app/cartography/shared/datasources/symbols-datasource.ts b/src/app/cartography/shared/datasources/symbols-datasource.ts index b08b36ca..effd9f12 100644 --- a/src/app/cartography/shared/datasources/symbols-datasource.ts +++ b/src/app/cartography/shared/datasources/symbols-datasource.ts @@ -1,7 +1,7 @@ -import {Node} from "../models/node"; -import {DataSource} from "./datasource"; -import {Injectable} from "@angular/core"; -import {Symbol} from "../models/symbol"; +import { Injectable } from "@angular/core"; + +import { DataSource } from "./datasource"; +import { Symbol } from "../models/symbol"; @Injectable() diff --git a/src/app/cartography/shared/listeners/node-on-context-menu-listener.ts b/src/app/cartography/shared/listeners/node-on-context-menu-listener.ts deleted file mode 100644 index 8b137891..00000000 --- a/src/app/cartography/shared/listeners/node-on-context-menu-listener.ts +++ /dev/null @@ -1 +0,0 @@ - diff --git a/src/app/cartography/shared/widgets/links.widget.ts b/src/app/cartography/shared/widgets/links.widget.ts index 4dfb9f61..a0025626 100644 --- a/src/app/cartography/shared/widgets/links.widget.ts +++ b/src/app/cartography/shared/widgets/links.widget.ts @@ -101,7 +101,6 @@ export class LinksWidget implements Widget { const link = view .selectAll("g.link") .data((layer: Layer) => { - console.log(layer.links); if (layer.links) { const layer_links = layer.links.filter((l: Link) => { return l.target && l.source; diff --git a/src/app/project-map/project-map.component.ts b/src/app/project-map/project-map.component.ts index 78e4236a..db615238 100644 --- a/src/app/project-map/project-map.component.ts +++ b/src/app/project-map/project-map.component.ts @@ -1,4 +1,4 @@ -import {Component, Inject, OnInit, ViewChild, ViewEncapsulation} from '@angular/core'; +import {Component, Inject, OnInit, ViewChild, ViewEncapsulation } from '@angular/core'; import { ActivatedRoute, ParamMap } from '@angular/router'; import { Observable } from 'rxjs/Observable'; @@ -19,7 +19,7 @@ import { MapComponent } from "../cartography/map/map.component"; import { ServerService } from "../shared/services/server.service"; import { ProjectService } from '../shared/services/project.service'; import { Server } from "../shared/models/server"; -import { MAT_DIALOG_DATA, MatDialog, MatDialogRef} from "@angular/material"; +import { MAT_DIALOG_DATA, MatDialog, MatDialogRef } from "@angular/material"; import { SnapshotService } from "../shared/services/snapshot.service"; import { Snapshot } from "../shared/models/snapshot"; import { ProgressDialogService } from "../shared/progress-dialog/progress-dialog.service"; @@ -36,9 +36,9 @@ import { ToasterService } from '../shared/services/toaster.service'; import { NodesDataSource } from "../cartography/shared/datasources/nodes-datasource"; import { LinksDataSource } from "../cartography/shared/datasources/links-datasource"; import { ProjectWebServiceHandler } from "../shared/handlers/project-web-service-handler"; -import { Rectangle } from "../cartography/shared/models/rectangle"; import { SelectionManager } from "../cartography/shared/managers/selection-manager"; import { InRectangleHelper } from "../cartography/map/helpers/in-rectangle-helper"; +import { DrawingsDataSource } from "../cartography/shared/datasources/drawings-datasource"; @Component({ @@ -81,6 +81,7 @@ export class ProjectMapComponent implements OnInit { private projectWebServiceHandler: ProjectWebServiceHandler, protected nodesDataSource: NodesDataSource, protected linksDataSource: LinksDataSource, + protected drawingsDataSource: DrawingsDataSource ) { } @@ -114,6 +115,13 @@ export class ProjectMapComponent implements OnInit { this.symbols = symbols; }); + this.drawingsDataSource.connect().subscribe((drawings: Drawing[]) => { + this.drawings = drawings; + if (this.mapChild) { + this.mapChild.reload(); + } + }); + this.nodesDataSource.connect().subscribe((nodes: Node[]) => { this.nodes = nodes; if (this.mapChild) { @@ -136,7 +144,7 @@ export class ProjectMapComponent implements OnInit { return this.projectService.drawings(this.server, project.project_id); }) .flatMap((drawings: Drawing[]) => { - this.drawings = drawings; + this.drawingsDataSource.set(drawings); return this.projectService.links(this.server, project.project_id); }) .flatMap((links: Link[]) => {