如何更改graphlib上的节点ID?
答
这是我的解决方案,使用新的ID及其边缘创建节点的副本。然后删除旧的节点。
changeId(current, newId) {
let g = this.getGraph();
// Change on graph
let node = g.node(current);
let inEdges = g.inEdges(current);
let outEdges = g.outEdges(current);
// Create new node
node.id = newId;
g.setNode(newId, node);
// Create new edges
for (let i = 0; i < inEdges.length; i++) {
let edge = inEdges[i];
let conn = g.edge(edge.v, current);
conn.target = newId;
g.setEdge(edge.v, newId, conn);
}
for (let i = 0; i < outEdges.length; i++) {
let edge = outEdges[i];
let conn = g.edge(current, edge.w);
conn.source = newId;
g.setEdge(newId, edge.w, conn);
}
// Remove old node
g.removeNode(current);
}