工程管理
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

49 lines
1.2 KiB

import type { EdgeData, NodeData } from "@antv/g6";
import type { Device, MyNodeData } from "@/types/device";
export class GenerateGraphData {
private readonly devices: Device[] = [];
private nodes: MyNodeData[] = [];
private edges: EdgeData[] = [];
constructor(devices: Device[]) {
this.devices = devices;
this.generateNodeData()
this.generateEdgeData();
}
private generateNodeData() {
for (const device of this.devices) {
this.nodes.push({
id: String(device.name),
label: device.name,
data: Object.assign(device, {
// typeString: DeviceType[device.type],
}),
})
}
}
private generateEdgeData() {
for (const node of this.nodes) {
const customData: Device = node.data
const findParentNode: Device = this.nodes.some((n: MyNodeData) => n.id === String(customData.parentName));
if (findParentNode) {
this.edges.push({
source: String(customData.parentName),
target: String(node.id),
data: customData,
})
}
}
}
getNodes(): NodeData[] {
return this.nodes as NodeData[];
}
getEdges(): EdgeData[] {
return this.edges;
}
}