mirror of
https://github.com/GNS3/gns3-web-ui.git
synced 2025-01-03 03:26:42 +00:00
Removing listeners from project map component
This commit is contained in:
parent
085b099e96
commit
0691a17d29
@ -77,6 +77,11 @@ import { DrawLinkToolComponent } from './components/project-map/draw-link-tool/d
|
|||||||
import { AddDrawingComponent } from './components/project-map/add-drawing/add-drawing.component';
|
import { AddDrawingComponent } from './components/project-map/add-drawing/add-drawing.component';
|
||||||
import { DrawingResizedComponent } from './components/drawings-listeners/drawing-resized/drawing-resized.component';
|
import { DrawingResizedComponent } from './components/drawings-listeners/drawing-resized/drawing-resized.component';
|
||||||
import { TextEditedComponent } from './components/drawings-listeners/text-edited/text-edited.component';
|
import { TextEditedComponent } from './components/drawings-listeners/text-edited/text-edited.component';
|
||||||
|
import { NodeDraggedComponent } from './components/drawings-listeners/node-dragged/node-dragged.component';
|
||||||
|
import { NodeLabelDraggedComponent } from './components/drawings-listeners/node-label-dragged/node-label-dragged.component';
|
||||||
|
import { DrawingDraggedComponent } from './components/drawings-listeners/drawing-dragged/drawing-dragged.component';
|
||||||
|
import { LinkCreatedComponent } from './components/drawings-listeners/link-created/link-created.component';
|
||||||
|
import { InterfaceLabelDraggedComponent } from './components/drawings-listeners/interface-label-dragged/interface-label-dragged.component';
|
||||||
|
|
||||||
|
|
||||||
if (environment.production) {
|
if (environment.production) {
|
||||||
@ -122,7 +127,12 @@ if (environment.production) {
|
|||||||
DrawLinkToolComponent,
|
DrawLinkToolComponent,
|
||||||
AddDrawingComponent,
|
AddDrawingComponent,
|
||||||
DrawingResizedComponent,
|
DrawingResizedComponent,
|
||||||
TextEditedComponent
|
TextEditedComponent,
|
||||||
|
NodeDraggedComponent,
|
||||||
|
NodeLabelDraggedComponent,
|
||||||
|
DrawingDraggedComponent,
|
||||||
|
LinkCreatedComponent,
|
||||||
|
InterfaceLabelDraggedComponent
|
||||||
],
|
],
|
||||||
imports: [
|
imports: [
|
||||||
BrowserModule,
|
BrowserModule,
|
||||||
|
@ -14,3 +14,4 @@
|
|||||||
<app-text-adding></app-text-adding>
|
<app-text-adding></app-text-adding>
|
||||||
<app-text-editing></app-text-editing>
|
<app-text-editing></app-text-editing>
|
||||||
<app-draggable-selection [svg]="svg"></app-draggable-selection>
|
<app-draggable-selection [svg]="svg"></app-draggable-selection>
|
||||||
|
<!-- markup z odwolaniem do svg przekazany do toola-->
|
||||||
|
Before Width: | Height: | Size: 446 B After Width: | Height: | Size: 501 B |
@ -0,0 +1,46 @@
|
|||||||
|
import { Component, Input, OnInit, OnDestroy } from "@angular/core";
|
||||||
|
import { Subscription } from 'rxjs';
|
||||||
|
import { DrawingsDataSource } from '../../../cartography/datasources/drawings-datasource';
|
||||||
|
import { Server } from '../../../models/server';
|
||||||
|
import { DrawingService } from '../../../services/drawing.service';
|
||||||
|
import { DraggedDataEvent } from '../../../cartography/events/event-source';
|
||||||
|
import { MapDrawing } from '../../../cartography/models/map/map-drawing';
|
||||||
|
import { Drawing } from '../../../cartography/models/drawing';
|
||||||
|
import { DrawingsEventSource } from '../../../cartography/events/drawings-event-source';
|
||||||
|
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-drawing-dragged',
|
||||||
|
templateUrl: './drawing-dragged.component.html',
|
||||||
|
styleUrls: ['./drawing-dragged.component.css']
|
||||||
|
})
|
||||||
|
export class DrawingDraggedComponent implements OnInit, OnDestroy{
|
||||||
|
@Input() server: Server;
|
||||||
|
private drawingDragged: Subscription;
|
||||||
|
|
||||||
|
constructor(
|
||||||
|
private drawingService: DrawingService,
|
||||||
|
private drawingsDataSource: DrawingsDataSource,
|
||||||
|
private drawingsEventSource: DrawingsEventSource
|
||||||
|
){}
|
||||||
|
|
||||||
|
ngOnInit(){
|
||||||
|
this.drawingDragged = this.drawingsEventSource.dragged.subscribe((evt) => this.onDrawingDragged(evt));
|
||||||
|
}
|
||||||
|
|
||||||
|
onDrawingDragged(draggedEvent: DraggedDataEvent<MapDrawing>) {
|
||||||
|
const drawing = this.drawingsDataSource.get(draggedEvent.datum.id);
|
||||||
|
drawing.x += draggedEvent.dx;
|
||||||
|
drawing.y += draggedEvent.dy;
|
||||||
|
|
||||||
|
this.drawingService
|
||||||
|
.updatePosition(this.server, drawing, drawing.x, drawing.y)
|
||||||
|
.subscribe((serverDrawing: Drawing) => {
|
||||||
|
this.drawingsDataSource.update(serverDrawing);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
ngOnDestroy(){
|
||||||
|
this.drawingDragged.unsubscribe();
|
||||||
|
}
|
||||||
|
}
|
@ -30,13 +30,13 @@ export class DrawingResizedComponent implements OnInit, OnDestroy{
|
|||||||
this.drawingResized = this.drawingsEventSource.resized.subscribe((evt) => this.onDrawingResized(evt))
|
this.drawingResized = this.drawingsEventSource.resized.subscribe((evt) => this.onDrawingResized(evt))
|
||||||
}
|
}
|
||||||
|
|
||||||
public onDrawingResized(resizedEvent: ResizedDataEvent<MapDrawing>) {
|
onDrawingResized(resizedEvent: ResizedDataEvent<MapDrawing>) {
|
||||||
const drawing = this.drawingsDataSource.get(resizedEvent.datum.id);
|
const drawing = this.drawingsDataSource.get(resizedEvent.datum.id);
|
||||||
let svgString = this.mapDrawingToSvgConverter.convert(resizedEvent.datum);
|
let svgString = this.mapDrawingToSvgConverter.convert(resizedEvent.datum);
|
||||||
|
|
||||||
this.drawingService
|
this.drawingService
|
||||||
.updateSizeAndPosition(this.server, drawing, resizedEvent.x, resizedEvent.y, svgString)
|
.updateSizeAndPosition(this.server, drawing, resizedEvent.x, resizedEvent.y, svgString)
|
||||||
.subscribe((serverDrawing: Drawing) => {
|
.subscribe((serverDrawing: Drawing) => {
|
||||||
this.drawingsDataSource.update(serverDrawing);
|
this.drawingsDataSource.update(serverDrawing);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,52 @@
|
|||||||
|
import { Component, Input } from "@angular/core";
|
||||||
|
import { Server } from '../../../models/server';
|
||||||
|
import { LinksDataSource } from '../../../cartography/datasources/links-datasource';
|
||||||
|
import { LinkService } from '../../../services/link.service';
|
||||||
|
import { DraggedDataEvent } from '../../../cartography/events/event-source';
|
||||||
|
import { MapLinkNode } from '../../../cartography/models/map/map-link-node';
|
||||||
|
import { Link } from '../../../models/link';
|
||||||
|
import { Subscription } from 'rxjs';
|
||||||
|
import { LinksEventSource } from '../../../cartography/events/links-event-source';
|
||||||
|
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-interface-label-dragged',
|
||||||
|
templateUrl: './interface-label-dragged.component.html',
|
||||||
|
styleUrls: ['./interface-label-dragged.component.css']
|
||||||
|
})
|
||||||
|
export class InterfaceLabelDraggedComponent{
|
||||||
|
@Input() server: Server;
|
||||||
|
private interfaceDragged: Subscription;
|
||||||
|
|
||||||
|
constructor(
|
||||||
|
private linkService: LinkService,
|
||||||
|
private linksDataSource: LinksDataSource,
|
||||||
|
private linksEventSource: LinksEventSource
|
||||||
|
){}
|
||||||
|
|
||||||
|
ngOnInit(){
|
||||||
|
this.interfaceDragged = this.linksEventSource.interfaceDragged.subscribe((evt) => this.onInterfaceLabelDragged(evt));
|
||||||
|
}
|
||||||
|
|
||||||
|
onInterfaceLabelDragged(draggedEvent: DraggedDataEvent<MapLinkNode>) {
|
||||||
|
const link = this.linksDataSource.get(draggedEvent.datum.linkId);
|
||||||
|
if (link.nodes[0].node_id === draggedEvent.datum.nodeId) {
|
||||||
|
link.nodes[0].label.x += draggedEvent.dx;
|
||||||
|
link.nodes[0].label.y += draggedEvent.dy;
|
||||||
|
}
|
||||||
|
if (link.nodes[1].node_id === draggedEvent.datum.nodeId) {
|
||||||
|
link.nodes[1].label.x += draggedEvent.dx;
|
||||||
|
link.nodes[1].label.y += draggedEvent.dy;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.linkService
|
||||||
|
.updateNodes(this.server, link, link.nodes)
|
||||||
|
.subscribe((serverLink: Link) => {
|
||||||
|
this.linksDataSource.update(serverLink);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
ngOnDestroy(){
|
||||||
|
this.interfaceDragged.unsubscribe();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,56 @@
|
|||||||
|
import { Component, OnDestroy, Input, OnInit } from "@angular/core";
|
||||||
|
import { Server } from '../../../models/server';
|
||||||
|
import { LinkService } from '../../../services/link.service';
|
||||||
|
import { ProjectService } from '../../../services/project.service';
|
||||||
|
import { MapNodeToNodeConverter } from '../../../cartography/converters/map/map-node-to-node-converter';
|
||||||
|
import { MapPortToPortConverter } from '../../../cartography/converters/map/map-port-to-port-converter';
|
||||||
|
import { LinksDataSource } from '../../../cartography/datasources/links-datasource';
|
||||||
|
import { Subscription } from 'rxjs';
|
||||||
|
import { Project } from '../../../models/project';
|
||||||
|
import { MapLinkCreated } from '../../../cartography/events/links';
|
||||||
|
import { Link } from "../../../models/link";
|
||||||
|
import { LinksEventSource } from '../../../cartography/events/links-event-source';
|
||||||
|
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-link-created',
|
||||||
|
templateUrl: './link-created.component.html',
|
||||||
|
styleUrls: ['./link-created.component.css']
|
||||||
|
})
|
||||||
|
export class LinkCreatedComponent implements OnInit, OnDestroy{
|
||||||
|
@Input() server: Server;
|
||||||
|
@Input() project: Project;
|
||||||
|
private linkCreated: Subscription;
|
||||||
|
|
||||||
|
constructor(
|
||||||
|
private projectService: ProjectService,
|
||||||
|
private linkService: LinkService,
|
||||||
|
private linksDataSource: LinksDataSource,
|
||||||
|
private linksEventSource: LinksEventSource,
|
||||||
|
private mapNodeToNode: MapNodeToNodeConverter,
|
||||||
|
private mapPortToPort: MapPortToPortConverter
|
||||||
|
){}
|
||||||
|
|
||||||
|
ngOnInit(){
|
||||||
|
this.linkCreated = this.linksEventSource.created.subscribe((evt) => this.onLinkCreated(evt));
|
||||||
|
}
|
||||||
|
|
||||||
|
onLinkCreated(linkCreated: MapLinkCreated) {
|
||||||
|
const sourceNode = this.mapNodeToNode.convert(linkCreated.sourceNode);
|
||||||
|
const sourcePort = this.mapPortToPort.convert(linkCreated.sourcePort);
|
||||||
|
const targetNode = this.mapNodeToNode.convert(linkCreated.targetNode);
|
||||||
|
const targetPort = this.mapPortToPort.convert(linkCreated.targetPort);
|
||||||
|
|
||||||
|
this.linkService
|
||||||
|
.createLink(this.server, sourceNode, sourcePort, targetNode, targetPort)
|
||||||
|
.subscribe(() => {
|
||||||
|
this.projectService.links(this.server, this.project.project_id).subscribe((links: Link[]) => {
|
||||||
|
this.linksDataSource.set(links);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
ngOnDestroy(){
|
||||||
|
this.linkCreated.unsubscribe();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,46 @@
|
|||||||
|
import { Component, Input, OnInit, OnDestroy } from "@angular/core";
|
||||||
|
import { NodesDataSource } from '../../../cartography/datasources/nodes-datasource';
|
||||||
|
import { NodeService } from '../../../services/node.service';
|
||||||
|
import { DraggedDataEvent } from '../../../cartography/events/event-source';
|
||||||
|
import { Node } from '../../../cartography/models/node';
|
||||||
|
import { Server } from '../../../models/server';
|
||||||
|
import { NodesEventSource } from '../../../cartography/events/nodes-event-source';
|
||||||
|
import { MapNode } from '../../../cartography/models/map/map-node';
|
||||||
|
import { Subscription } from 'rxjs';
|
||||||
|
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-node-dragged',
|
||||||
|
templateUrl: './node-dragged.component.html',
|
||||||
|
styleUrls: ['./node-dragged.component.css']
|
||||||
|
})
|
||||||
|
export class NodeDraggedComponent implements OnInit, OnDestroy{
|
||||||
|
@Input() server: Server;
|
||||||
|
private nodeDragged: Subscription;
|
||||||
|
|
||||||
|
constructor(
|
||||||
|
private nodesDataSource: NodesDataSource,
|
||||||
|
private nodeService: NodeService,
|
||||||
|
private nodesEventSource: NodesEventSource
|
||||||
|
){}
|
||||||
|
|
||||||
|
ngOnInit(){
|
||||||
|
this.nodeDragged = this.nodesEventSource.dragged.subscribe((evt) => this.onNodeDragged(evt));
|
||||||
|
}
|
||||||
|
|
||||||
|
onNodeDragged(draggedEvent: DraggedDataEvent<MapNode>) {
|
||||||
|
const node = this.nodesDataSource.get(draggedEvent.datum.id);
|
||||||
|
node.x += draggedEvent.dx;
|
||||||
|
node.y += draggedEvent.dy;
|
||||||
|
|
||||||
|
this.nodeService
|
||||||
|
.updatePosition(this.server, node, node.x, node.y)
|
||||||
|
.subscribe((serverNode: Node) => {
|
||||||
|
this.nodesDataSource.update(serverNode);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
ngOnDestroy(){
|
||||||
|
this.nodeDragged.unsubscribe();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,52 @@
|
|||||||
|
import { Component, Input, OnInit, OnDestroy } from "@angular/core";
|
||||||
|
import { NodesDataSource } from '../../../cartography/datasources/nodes-datasource';
|
||||||
|
import { NodesEventSource } from '../../../cartography/events/nodes-event-source';
|
||||||
|
import { NodeService } from '../../../services/node.service';
|
||||||
|
import { MapLabelToLabelConverter } from '../../../cartography/converters/map/map-label-to-label-converter';
|
||||||
|
import { Node } from '../../../cartography/models/node';
|
||||||
|
import { Server } from '../../../models/server';
|
||||||
|
import { Subscription } from 'rxjs';
|
||||||
|
import { DraggedDataEvent } from '../../../cartography/events/event-source';
|
||||||
|
import { MapLabel } from '../../../cartography/models/map/map-label';
|
||||||
|
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-node-label-dragged',
|
||||||
|
templateUrl: './node-label-dragged.component.html',
|
||||||
|
styleUrls: ['./node-label-dragged.component.css']
|
||||||
|
})
|
||||||
|
export class NodeLabelDraggedComponent implements OnInit, OnDestroy{
|
||||||
|
@Input() server: Server;
|
||||||
|
private nodeLabelDragged: Subscription;
|
||||||
|
|
||||||
|
constructor(
|
||||||
|
private nodesDataSource: NodesDataSource,
|
||||||
|
private nodeService: NodeService,
|
||||||
|
private nodesEventSource: NodesEventSource,
|
||||||
|
private mapLabelToLabel: MapLabelToLabelConverter
|
||||||
|
){}
|
||||||
|
|
||||||
|
ngOnInit(){
|
||||||
|
this.nodeLabelDragged = this.nodesEventSource.labelDragged.subscribe((evt) => this.onNodeLabelDragged(evt));
|
||||||
|
}
|
||||||
|
|
||||||
|
onNodeLabelDragged(draggedEvent: DraggedDataEvent<MapLabel>) {
|
||||||
|
const node = this.nodesDataSource.get(draggedEvent.datum.nodeId);
|
||||||
|
const mapLabel = draggedEvent.datum;
|
||||||
|
mapLabel.x += draggedEvent.dx;
|
||||||
|
mapLabel.y += draggedEvent.dy;
|
||||||
|
|
||||||
|
const label = this.mapLabelToLabel.convert(mapLabel);
|
||||||
|
node.label = label;
|
||||||
|
|
||||||
|
this.nodeService
|
||||||
|
.updateLabel(this.server, node, node.label)
|
||||||
|
.subscribe((serverNode: Node) => {
|
||||||
|
this.nodesDataSource.update(serverNode);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
ngOnDestroy(){
|
||||||
|
this.nodeLabelDragged.unsubscribe();
|
||||||
|
}
|
||||||
|
}
|
@ -31,7 +31,7 @@ export class TextEditedComponent implements OnInit, OnDestroy{
|
|||||||
this.textEdited = this.drawingsEventSource.textEdited.subscribe((evt) => this.onTextEdited(evt));
|
this.textEdited = this.drawingsEventSource.textEdited.subscribe((evt) => this.onTextEdited(evt));
|
||||||
}
|
}
|
||||||
|
|
||||||
public onTextEdited(evt: TextEditedDataEvent){
|
onTextEdited(evt: TextEditedDataEvent){
|
||||||
let mapDrawing: MapDrawing = new MapDrawing();
|
let mapDrawing: MapDrawing = new MapDrawing();
|
||||||
mapDrawing.element = evt.textElement;
|
mapDrawing.element = evt.textElement;
|
||||||
(mapDrawing.element as TextElement).text = evt.editedText;
|
(mapDrawing.element as TextElement).text = evt.editedText;
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
[selection-tool]="tools.selection"
|
[selection-tool]="tools.selection"
|
||||||
[moving-tool]="tools.moving"
|
[moving-tool]="tools.moving"
|
||||||
[text-editing-tool]="tools.text_editing"
|
[text-editing-tool]="tools.text_editing"
|
||||||
[text-adding-tool]="drawTools.isAddingTextChosen"
|
[text-adding-tool]="drawTools.isTextChosen"
|
||||||
[draw-link-tool]="tools.draw_link"
|
[draw-link-tool]="tools.draw_link"
|
||||||
[readonly]="inReadOnlyMode"
|
[readonly]="inReadOnlyMode"
|
||||||
(nodeDragged)="onNodeDragged($event)"
|
(nodeDragged)="onNodeDragged($event)"
|
||||||
@ -155,5 +155,10 @@
|
|||||||
(drawingSaved)="onDrawingSaved($event)">
|
(drawingSaved)="onDrawingSaved($event)">
|
||||||
</app-add-drawing>
|
</app-add-drawing>
|
||||||
|
|
||||||
|
<app-drawing-dragged [server]="server"></app-drawing-dragged>
|
||||||
<app-drawing-resized [server]="server"></app-drawing-resized>
|
<app-drawing-resized [server]="server"></app-drawing-resized>
|
||||||
|
<app-interface-label-dragged [server]="server"></app-interface-label-dragged>
|
||||||
|
<app-link-created [server]="server" [project]="project"></app-link-created>
|
||||||
|
<app-node-dragged [server]="server"></app-node-dragged>
|
||||||
|
<app-node-label-dragged [server]="server"></app-node-label-dragged>
|
||||||
<app-text-edited [server]="server"></app-text-edited>
|
<app-text-edited [server]="server"></app-text-edited>
|
||||||
|
@ -16,7 +16,6 @@ import { NodeContextMenuComponent } from "./node-context-menu/node-context-menu.
|
|||||||
import { Template } from "../../models/template";
|
import { Template } from "../../models/template";
|
||||||
import { NodeService } from "../../services/node.service";
|
import { NodeService } from "../../services/node.service";
|
||||||
import { Symbol } from "../../models/symbol";
|
import { Symbol } from "../../models/symbol";
|
||||||
import { LinkService } from "../../services/link.service";
|
|
||||||
import { NodesDataSource } from "../../cartography/datasources/nodes-datasource";
|
import { NodesDataSource } from "../../cartography/datasources/nodes-datasource";
|
||||||
import { LinksDataSource } from "../../cartography/datasources/links-datasource";
|
import { LinksDataSource } from "../../cartography/datasources/links-datasource";
|
||||||
import { ProjectWebServiceHandler } from "../../handlers/project-web-service-handler";
|
import { ProjectWebServiceHandler } from "../../handlers/project-web-service-handler";
|
||||||
@ -24,24 +23,12 @@ import { DrawingsDataSource } from "../../cartography/datasources/drawings-datas
|
|||||||
import { ProgressService } from "../../common/progress/progress.service";
|
import { ProgressService } from "../../common/progress/progress.service";
|
||||||
import { MapChangeDetectorRef } from '../../cartography/services/map-change-detector-ref';
|
import { MapChangeDetectorRef } from '../../cartography/services/map-change-detector-ref';
|
||||||
import { NodeContextMenu } from '../../cartography/events/nodes';
|
import { NodeContextMenu } from '../../cartography/events/nodes';
|
||||||
import { MapLinkCreated } from '../../cartography/events/links';
|
|
||||||
import { NodeWidget } from '../../cartography/widgets/node';
|
import { NodeWidget } from '../../cartography/widgets/node';
|
||||||
import { DraggedDataEvent } from '../../cartography/events/event-source';
|
|
||||||
import { DrawingService } from '../../services/drawing.service';
|
import { DrawingService } from '../../services/drawing.service';
|
||||||
import { MapNodeToNodeConverter } from '../../cartography/converters/map/map-node-to-node-converter';
|
import { MapNodeToNodeConverter } from '../../cartography/converters/map/map-node-to-node-converter';
|
||||||
import { NodesEventSource } from '../../cartography/events/nodes-event-source';
|
|
||||||
import { DrawingsEventSource } from '../../cartography/events/drawings-event-source';
|
|
||||||
import { MapNode } from '../../cartography/models/map/map-node';
|
|
||||||
import { LinksEventSource } from '../../cartography/events/links-event-source';
|
import { LinksEventSource } from '../../cartography/events/links-event-source';
|
||||||
import { MapDrawing } from '../../cartography/models/map/map-drawing';
|
|
||||||
import { MapPortToPortConverter } from '../../cartography/converters/map/map-port-to-port-converter';
|
|
||||||
import { MapDrawingToSvgConverter } from '../../cartography/converters/map/map-drawing-to-svg-converter';
|
|
||||||
import { SettingsService, Settings } from '../../services/settings.service';
|
import { SettingsService, Settings } from '../../services/settings.service';
|
||||||
import { MapLabel } from '../../cartography/models/map/map-label';
|
|
||||||
import { D3MapComponent } from '../../cartography/components/d3-map/d3-map.component';
|
import { D3MapComponent } from '../../cartography/components/d3-map/d3-map.component';
|
||||||
import { MapLinkNode } from '../../cartography/models/map/map-link-node';
|
|
||||||
import { MapLabelToLabelConverter } from '../../cartography/converters/map/map-label-to-label-converter';
|
|
||||||
import { DefaultDrawingsFactory } from '../../cartography/helpers/default-drawings-factory';
|
|
||||||
|
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
@ -57,7 +44,6 @@ export class ProjectMapComponent implements OnInit, OnDestroy {
|
|||||||
public symbols: Symbol[] = [];
|
public symbols: Symbol[] = [];
|
||||||
public project: Project;
|
public project: Project;
|
||||||
public server: Server;
|
public server: Server;
|
||||||
private drawListener: Function;
|
|
||||||
private ws: Subject<any>;
|
private ws: Subject<any>;
|
||||||
|
|
||||||
tools = {
|
tools = {
|
||||||
@ -91,24 +77,17 @@ export class ProjectMapComponent implements OnInit, OnDestroy {
|
|||||||
private serverService: ServerService,
|
private serverService: ServerService,
|
||||||
private projectService: ProjectService,
|
private projectService: ProjectService,
|
||||||
private nodeService: NodeService,
|
private nodeService: NodeService,
|
||||||
private linkService: LinkService,
|
|
||||||
public drawingService: DrawingService,
|
public drawingService: DrawingService,
|
||||||
private progressService: ProgressService,
|
private progressService: ProgressService,
|
||||||
private projectWebServiceHandler: ProjectWebServiceHandler,
|
private projectWebServiceHandler: ProjectWebServiceHandler,
|
||||||
private mapChangeDetectorRef: MapChangeDetectorRef,
|
private mapChangeDetectorRef: MapChangeDetectorRef,
|
||||||
private nodeWidget: NodeWidget,
|
private nodeWidget: NodeWidget,
|
||||||
private mapNodeToNode: MapNodeToNodeConverter,
|
private mapNodeToNode: MapNodeToNodeConverter,
|
||||||
private mapPortToPort: MapPortToPortConverter,
|
|
||||||
private nodesDataSource: NodesDataSource,
|
private nodesDataSource: NodesDataSource,
|
||||||
private linksDataSource: LinksDataSource,
|
private linksDataSource: LinksDataSource,
|
||||||
private drawingsDataSource: DrawingsDataSource,
|
private drawingsDataSource: DrawingsDataSource,
|
||||||
private nodesEventSource: NodesEventSource,
|
|
||||||
private drawingsEventSource: DrawingsEventSource,
|
|
||||||
private linksEventSource: LinksEventSource,
|
private linksEventSource: LinksEventSource,
|
||||||
private mapDrawingToSvgConverter: MapDrawingToSvgConverter,
|
private settingsService: SettingsService
|
||||||
private settingsService: SettingsService,
|
|
||||||
private mapLabelToLabel: MapLabelToLabelConverter,
|
|
||||||
private drawingsFactory: DefaultDrawingsFactory
|
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
@ -174,22 +153,6 @@ export class ProjectMapComponent implements OnInit, OnDestroy {
|
|||||||
})
|
})
|
||||||
);
|
);
|
||||||
|
|
||||||
this.subscriptions.push(
|
|
||||||
this.nodesEventSource.dragged.subscribe((evt) => this.onNodeDragged(evt))
|
|
||||||
);
|
|
||||||
|
|
||||||
this.subscriptions.push(
|
|
||||||
this.nodesEventSource.labelDragged.subscribe((evt) => this.onNodeLabelDragged(evt))
|
|
||||||
);
|
|
||||||
|
|
||||||
this.subscriptions.push(
|
|
||||||
this.drawingsEventSource.dragged.subscribe((evt) => this.onDrawingDragged(evt))
|
|
||||||
);
|
|
||||||
|
|
||||||
this.subscriptions.push(
|
|
||||||
this.linksEventSource.created.subscribe((evt) => this.onLinkCreated(evt))
|
|
||||||
);
|
|
||||||
|
|
||||||
this.subscriptions.push(
|
this.subscriptions.push(
|
||||||
this.linksEventSource.interfaceDragged.subscribe((evt) => this.onInterfaceLabelDragged(evt))
|
this.linksEventSource.interfaceDragged.subscribe((evt) => this.onInterfaceLabelDragged(evt))
|
||||||
);
|
);
|
||||||
@ -213,7 +176,7 @@ export class ProjectMapComponent implements OnInit, OnDestroy {
|
|||||||
.subscribe((drawings: Drawing[]) => {
|
.subscribe((drawings: Drawing[]) => {
|
||||||
this.drawingsDataSource.set(drawings);
|
this.drawingsDataSource.set(drawings);
|
||||||
|
|
||||||
this.setUpMapCallbacks(project);
|
this.setUpMapCallbacks();
|
||||||
this.setUpWS(project);
|
this.setUpWS(project);
|
||||||
|
|
||||||
this.progressService.deactivate();
|
this.progressService.deactivate();
|
||||||
@ -230,7 +193,7 @@ export class ProjectMapComponent implements OnInit, OnDestroy {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
setUpMapCallbacks(project: Project) {
|
setUpMapCallbacks() {
|
||||||
const onContextMenu = this.nodeWidget.onContextMenu.subscribe((eventNode: NodeContextMenu) => {
|
const onContextMenu = this.nodeWidget.onContextMenu.subscribe((eventNode: NodeContextMenu) => {
|
||||||
const node = this.mapNodeToNode.convert(eventNode.node);
|
const node = this.mapNodeToNode.convert(eventNode.node);
|
||||||
this.nodeContextMenu.open(
|
this.nodeContextMenu.open(
|
||||||
@ -247,89 +210,16 @@ export class ProjectMapComponent implements OnInit, OnDestroy {
|
|||||||
onNodeCreation(template: Template) {
|
onNodeCreation(template: Template) {
|
||||||
this.nodeService
|
this.nodeService
|
||||||
.createFromTemplate(this.server, this.project, template, 0, 0, 'local')
|
.createFromTemplate(this.server, this.project, template, 0, 0, 'local')
|
||||||
.subscribe((createdNode: Node) => {
|
|
||||||
this.projectService
|
|
||||||
.nodes(this.server, this.project.project_id)
|
|
||||||
.subscribe((nodes: Node[]) => {
|
|
||||||
this.nodesDataSource.set(nodes);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
private onNodeDragged(draggedEvent: DraggedDataEvent<MapNode>) {
|
|
||||||
const node = this.nodesDataSource.get(draggedEvent.datum.id);
|
|
||||||
node.x += draggedEvent.dx;
|
|
||||||
node.y += draggedEvent.dy;
|
|
||||||
|
|
||||||
this.nodeService
|
|
||||||
.updatePosition(this.server, node, node.x, node.y)
|
|
||||||
.subscribe((serverNode: Node) => {
|
|
||||||
this.nodesDataSource.update(serverNode);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
private onNodeLabelDragged(draggedEvent: DraggedDataEvent<MapLabel>) {
|
|
||||||
const node = this.nodesDataSource.get(draggedEvent.datum.nodeId);
|
|
||||||
const mapLabel = draggedEvent.datum;
|
|
||||||
mapLabel.x += draggedEvent.dx;
|
|
||||||
mapLabel.y += draggedEvent.dy;
|
|
||||||
|
|
||||||
const label = this.mapLabelToLabel.convert(mapLabel);
|
|
||||||
node.label = label;
|
|
||||||
|
|
||||||
this.nodeService
|
|
||||||
.updateLabel(this.server, node, node.label)
|
|
||||||
.subscribe((serverNode: Node) => {
|
|
||||||
this.nodesDataSource.update(serverNode);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
private onDrawingDragged(draggedEvent: DraggedDataEvent<MapDrawing>) {
|
|
||||||
const drawing = this.drawingsDataSource.get(draggedEvent.datum.id);
|
|
||||||
drawing.x += draggedEvent.dx;
|
|
||||||
drawing.y += draggedEvent.dy;
|
|
||||||
|
|
||||||
this.drawingService
|
|
||||||
.updatePosition(this.server, drawing, drawing.x, drawing.y)
|
|
||||||
.subscribe((serverDrawing: Drawing) => {
|
|
||||||
this.drawingsDataSource.update(serverDrawing);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
private onInterfaceLabelDragged(draggedEvent: DraggedDataEvent<MapLinkNode>) {
|
|
||||||
const link = this.linksDataSource.get(draggedEvent.datum.linkId);
|
|
||||||
if (link.nodes[0].node_id === draggedEvent.datum.nodeId) {
|
|
||||||
link.nodes[0].label.x += draggedEvent.dx;
|
|
||||||
link.nodes[0].label.y += draggedEvent.dy;
|
|
||||||
}
|
|
||||||
if (link.nodes[1].node_id === draggedEvent.datum.nodeId) {
|
|
||||||
link.nodes[1].label.x += draggedEvent.dx;
|
|
||||||
link.nodes[1].label.y += draggedEvent.dy;
|
|
||||||
}
|
|
||||||
|
|
||||||
this.linkService
|
|
||||||
.updateNodes(this.server, link, link.nodes)
|
|
||||||
.subscribe((serverLink: Link) => {
|
|
||||||
this.linksDataSource.update(serverLink);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
private onLinkCreated(linkCreated: MapLinkCreated) {
|
|
||||||
const sourceNode = this.mapNodeToNode.convert(linkCreated.sourceNode);
|
|
||||||
const sourcePort = this.mapPortToPort.convert(linkCreated.sourcePort);
|
|
||||||
const targetNode = this.mapNodeToNode.convert(linkCreated.targetNode);
|
|
||||||
const targetPort = this.mapPortToPort.convert(linkCreated.targetPort);
|
|
||||||
|
|
||||||
this.linkService
|
|
||||||
.createLink(this.server, sourceNode, sourcePort, targetNode, targetPort)
|
|
||||||
.subscribe(() => {
|
.subscribe(() => {
|
||||||
this.projectService.links(this.server, this.project.project_id).subscribe((links: Link[]) => {
|
this.projectService
|
||||||
this.linksDataSource.set(links);
|
.nodes(this.server, this.project.project_id)
|
||||||
|
.subscribe((nodes: Node[]) => {
|
||||||
|
this.nodesDataSource.set(nodes);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public onDrawingSaved(evt: boolean){
|
public onDrawingSaved(){
|
||||||
this.resetDrawToolChoice();
|
this.resetDrawToolChoice();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user