|
1 |
| -import { Edge, Node } from "@model"; |
| 1 | +import { Edge, NetworkNode, Node, Position } from "@model"; |
2 | 2 |
|
3 | 3 | export class GraphVizManager {
|
4 | 4 |
|
5 |
| - public createGraphVizDiagram(graphType: string, nodes: Node[], edges: Edge[]): string { |
| 5 | + public createGraphVizDiagram(graphType: string, nodes: Node[], nodeInfoDictionary: { [id: string]: NetworkNode }, edges: Edge[]): string { |
| 6 | + const maxX = Math.max(...Object.keys(nodeInfoDictionary).map(id => nodeInfoDictionary[id].position.x)); |
| 7 | + const minX = Math.min(...Object.keys(nodeInfoDictionary).map(id => nodeInfoDictionary[id].position.x)); |
| 8 | + const diffX = Math.max(...[Math.abs(maxX),Math.abs(minX)]); |
| 9 | + const maxY = Math.max(...Object.keys(nodeInfoDictionary).map(id => nodeInfoDictionary[id].position.y)); |
| 10 | + const minY = Math.min(...Object.keys(nodeInfoDictionary).map(id => nodeInfoDictionary[id].position.y)); |
| 11 | + const diffY = Math.max(...[Math.abs(maxY),Math.abs(minY)]); |
| 12 | + |
| 13 | + nodes.forEach(node => { |
| 14 | + if(node.id in nodeInfoDictionary){ |
| 15 | + const networkNode = nodeInfoDictionary[node.id]; |
| 16 | + if (networkNode.label) { |
| 17 | + node.name = networkNode.label; |
| 18 | + } |
| 19 | + if (node.id in nodeInfoDictionary) { |
| 20 | + node.position = {x: Math.round(((networkNode.position.x + diffX) / maxX) * nodes.length), y: Math.round(((networkNode.position.y + diffY) / maxY) * nodes.length)}; |
| 21 | + } |
| 22 | + } |
| 23 | + }); |
6 | 24 | const digraphNodes = this.generateDigraphNodes(nodes);
|
7 | 25 | const digraphEdges = this.generateDigraphEdges(edges);
|
8 | 26 | const graphVizDigraph = this.addRootNode(graphType, digraphNodes, digraphEdges);
|
|
0 commit comments