Preparation for interfaces labels

This commit is contained in:
ziajka 2018-04-11 08:21:01 +02:00
parent 5522322ff1
commit 23ff9a8897
5 changed files with 53 additions and 4 deletions

View File

@ -0,0 +1,8 @@
import { Label } from "./label";
export class LinkNode {
node_id: string;
adapter_number: number;
port_number: number;
label: Label;
}

View File

@ -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
) {}
}

View File

@ -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

View File

@ -0,0 +1,30 @@
import { SVGSelection } from "../models/types";
import { Link } from "../models/link";
export class InterfaceLabelWidget {
draw(selection: SVGSelection) {
const labels = selection
.selectAll<SVGTextElement, Link>('text.interface_label')
.data((l: Link) => [l]);
const enter = labels
.enter()
.append<SVGTextElement>('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();
}
}

View File

@ -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();