データの視覚化にdagre d3を使用し、順序付けられた図を作成していますが、エッジの設定に行き詰まっています。私が立ち往生しているこのコードを見てください
/*data has this template
level: type: label
f.e.: 0: call: label1 //child of root
1: call: label2 //is child of 0
2: call: label3 //is child of 1
2: exit: label4 //is child of 1
1: exit: label5 //is child of 0, does not have children
0: exit: label6 //is child of root, does not have children
*/
function makeGraph(data){
//parsing data here, object from it looks like below saving to array named 'states'
//object = { id: id, level: par[1], type: par[2], label: par[3] };
var g = new dagreD3.graphlib.Graph().setGraph({});
g.setNode("root", { label: " ", style: "fill: #AAAAAA" }); //root node
states.forEach(function (state) {
g.setNode(state.id, { label: state.label, style: "fill: " + state.color });
if (state.level == 0) {
g.setEdge("root", state.id, { label: state.type });
} else {
//I can't find out how to set edges to parent here
}
});
//continuation of function with rendering
}
ダイアグラムは順序付けられており、ルートが一番上にあります。ルート ノードから、ルートからレベル 0 のすべてのノードへのエッジを作成することができました。次に、レベルが 0 で子を持つすべてのエッジからエッジを作成し、次にレベル 1 で子を持つエッジなどからエッジを作成します。私はすでに似たようなことを試し、この構造を C# の json に保存しましたが、私は JavaScript 初心者であるため、C# コードを JavaScript に書き直すことはできません。