2016-05-16 89 views
3

這可能是另一個有待改進的問題,我在Existing question的幫助下做出了一個指令,該指令運行良好。如何限制最初在d3中的節點數量強制定向圖

現在當用戶動態創建該圖表時,當數據加載超過時,瀏覽器變得沉重,用戶界面卡住了。

如何在最初加載圖表時將節點級別限制爲2。 我試圖一個接一個的服務電話,但這不起作用。

下面是代碼:

function click(d) { 
        if (d3.event.defaultPrevented) return; // ignore drag 
        if (d.children) { 
         d._children = d.children; 
         d.children = null; 
        } else { 
         d.children = d._children; 
         d._children = null; 
        } 
        update(); 
       } 

Application with Data

回答

2

希望這會助陣。從這個例子:How can I start with all the nodes collapsed in d3js?

我編輯你的提琴:http://jsfiddle.net/thatOneGuy/yar5sco6/7/

我去掉了原來的呼叫update()。所以你必須按Load然後Start

這會摺疊所有節點。從那裏,你可以打開前兩個層次相當容易:)

這是主要的實現:

// HTML

<button id='startForce'>START</button> 

// JS

document.getElementById('startForce').addEventListener('click', function() { 
      console.log('start'); 

      var nodes = flatten(root); 
      nodes.forEach(function(d) { 
       d._children = d.children; 
       d.children = null; 
      }); 
      update(); 
      }) 
+0

林困惑通過動態創建它來表達你的意思。你只是想插入一堆數據?所以你想讓它只顯示頂級父母和第一級孩子? – thatOneGuy

+0

不錯!這就是我要的!但不能在加載初始時間本身而不添加其他單擊事件時完成此操作? – Sajeetharan

+0

當然:http://jsfiddle.net/thatOneGuy/yar5sco6/8/剛剛刪除了按鈕和事件監聽器,並創建了一個函數startVis(),它被直接調用(點擊加載按鈕後) – thatOneGuy