0
這是一個跟進this question。D3.js:崩塌時更新要素之間的聯繫,徑向樹/擴大
我已成功地添加元素之間的聯繫,this JSFiddle在original hierarchical edge bundling由邁克·博斯托克發現的代碼使用的部分,並添加他們徑向collapsible tree的版本:
var bundle = d3.layout.bundle();
var line = d3.svg.line.radial()
.interpolate("bundle")
.tension(.85)
.radius(function(d) { return d.y; })
.angle(function(d) { return d.x/180 * Math.PI; });
var middleLinks = packageImports(root);
svg.selectAll("path.middleLink")
.data(bundle(middleLinks))
.enter().append("path")
.attr("class", "middleLink")
.attr("d", line);
的「packageImport」功能,可發現在底部。
我現在試圖更新這些鏈接,每當我崩潰/展開一個元素,我不知道如何去做。
function click(d) {
if (d.children) {
d._children = d.children;
d.children = null;
} else {
d.children = d._children;
d._children = null;
}
update(d);
}
另外值得一提的是,刪除以下行產生另一個正確的佈局沒有孩子暈倒:
當位置改變它可能有一些做的以下部分或更新功能內部的部件root.children.forEach(collapse);
update(root);
出於這個原因,我不明白爲什麼點擊功能後,更新不考慮新的佈局。
隨意編輯JSFiddle。
另一種可能性是內層不會移動,並且始終設置爲所有展開大小的間距,因此第二層只會出現或消失,不會改變第一層並仍然適合。您可能會建議此解決方案作爲答案,但它仍然計劃B。