簡體   English   中英

一些節點折疊的 D3 強制布局

[英]D3 force layout with some nodes collapsed

我是 d3 的完全初學者,數周以來一直被一個問題困擾。

基於示例:```https://jsfiddle.net/t4vzg650/6/```` 我開發了一個帶有 d3 的可折疊力布局。 我已成功添加鏈接和音頻(目前僅在本地工作)。 但默認情況下,我只希望擴展最佳實踐、工具和課程結構節點,並折疊其他節點。 然后可以通過雙擊按需打開它們。 我在這里遇到了類似的問題,但我還沒有設法實現它。

我的代碼在這里:```https://codepen.io/LaraB1612/pen/bGreEWV````

如果有人可以幫助我,我會很高興。

非常感謝

我已經想出了如何實現這一點:

  1. 不需要在click方法的每個條件下都運行update和restart方法,檢查條件后一次就夠了:
function click(d) {
  if (d.children) {
    d._children = d.children;
    d.children = null;
  } else {
    d.children = d._children;
    d._children = null;
  }
    update();
}
  1. 調用 flatten 方法后需要調用 update 方法。 在這種情況下,您還需要展平根的兩個子項,工具和課程結構。 它可能不是最優雅的解決方案,但它有效:
var flattenedChildOne = flatten(root.children[0]);
var flattenedChildTwo = flatten(root.children[1]);

flattenedChildOne.forEach(function(d) {
  d._children = d.children;
  d.children = null;
});

flattenedChildTwo.forEach(function(d) {
  d._children = d.children;
  d.children = null;
});
update();
  1. 我已經從你的數據中刪除了所有的"_children": null ,它們是不必要的。

我在這里解決了這個問題: https : //jsfiddle.net/orsisi/tnv37wxr/39/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM