From 23ff9a889750fbb0a1b531b1c01e904c55744849 Mon Sep 17 00:00:00 2001 From: ziajka Date: Wed, 11 Apr 2018 08:21:01 +0200 Subject: [PATCH] Preparation for interfaces labels --- .../cartography/shared/models/link-node.ts | 8 +++++ .../cartography/shared/models/link-status.ts | 6 +++- src/app/cartography/shared/models/link.ts | 8 +++-- .../shared/widgets/interface-label.ts | 30 +++++++++++++++++++ src/app/cartography/shared/widgets/links.ts | 5 ++++ 5 files changed, 53 insertions(+), 4 deletions(-) create mode 100644 src/app/cartography/shared/models/link-node.ts create mode 100644 src/app/cartography/shared/widgets/interface-label.ts diff --git a/src/app/cartography/shared/models/link-node.ts b/src/app/cartography/shared/models/link-node.ts new file mode 100644 index 00000000..d2a38635 --- /dev/null +++ b/src/app/cartography/shared/models/link-node.ts @@ -0,0 +1,8 @@ +import { Label } from "./label"; + +export class LinkNode { + node_id: string; + adapter_number: number; + port_number: number; + label: Label; +} diff --git a/src/app/cartography/shared/models/link-status.ts b/src/app/cartography/shared/models/link-status.ts index b1bd66a6..c144d229 100644 --- a/src/app/cartography/shared/models/link-status.ts +++ b/src/app/cartography/shared/models/link-status.ts @@ -1,3 +1,7 @@ export class LinkStatus { - public constructor(public x: number, public y: number, public status: string) {} + public constructor( + public x: number, + public y: number, + public status: string + ) {} } diff --git a/src/app/cartography/shared/models/link.ts b/src/app/cartography/shared/models/link.ts index 7a3cdb10..8528a4ce 100644 --- a/src/app/cartography/shared/models/link.ts +++ b/src/app/cartography/shared/models/link.ts @@ -1,5 +1,7 @@ -import {Node} from "./node"; -import {Selectable} from "../managers/selection-manager"; +import { Node } from "./node"; +import { LinkNode } from "./link-node"; +import { Selectable } from "../managers/selection-manager"; + export class Link implements Selectable { capture_file_name: string; @@ -7,7 +9,7 @@ export class Link implements Selectable { capturing: boolean; link_id: string; link_type: string; - nodes: Node[]; + nodes: LinkNode[]; project_id: string; distance: number; // this is not from server length: number; // this is not from server diff --git a/src/app/cartography/shared/widgets/interface-label.ts b/src/app/cartography/shared/widgets/interface-label.ts new file mode 100644 index 00000000..7418f271 --- /dev/null +++ b/src/app/cartography/shared/widgets/interface-label.ts @@ -0,0 +1,30 @@ +import { SVGSelection } from "../models/types"; +import { Link } from "../models/link"; + + +export class InterfaceLabelWidget { + draw(selection: SVGSelection) { + + const labels = selection + .selectAll('text.interface_label') + .data((l: Link) => [l]); + + const enter = labels + .enter() + .append('text') + .attr('class', 'interface_label'); + + const merge = labels + .merge(enter); + + merge + .text((l: Link) => l.nodes[0].label.text) + .attr('x', (l: Link) => Math.round(l.source.x + l.nodes[0].label.x)) + .attr('y', (l: Link) => Math.round(l.source.y + l.nodes[0].label.y)); + + labels + .exit() + .remove(); + + } +} diff --git a/src/app/cartography/shared/widgets/links.ts b/src/app/cartography/shared/widgets/links.ts index 91a2c9cd..995df11c 100644 --- a/src/app/cartography/shared/widgets/links.ts +++ b/src/app/cartography/shared/widgets/links.ts @@ -8,6 +8,7 @@ import { MultiLinkCalculatorHelper } from "../../map/helpers/multi-link-calculat import { SerialLinkWidget } from "./serial-link"; import { EthernetLinkWidget } from "./ethernet-link"; import { Layer } from "../models/layer"; +import { InterfaceLabelWidget } from "./interface-label"; export class LinksWidget implements Widget { @@ -95,6 +96,9 @@ export class LinksWidget implements Widget { } return null; }); + + const interfaceLabel = new InterfaceLabelWidget(); + interfaceLabel.draw(selection); } public draw(view: SVGSelection, links?: Link[]) { @@ -124,6 +128,7 @@ export class LinksWidget implements Widget { this.revise(merge); + link .exit() .remove();