2016-05-16 6 views
3

これは改善のための別の質問かもしれませんが、私はExisting questionの助けを借りて指示を出しました。d3の最初のノード数を制限する方法有向グラフを強制する

ユーザーがこのグラフを動的に作成すると、データの負荷が超過すると、ブラウザが重くなり、ユーザーインターフェイスが邪魔になります。

グラフを最初に読み込むときにノードレベルを2に制限するにはどうすればよいですか。 サービスコールを1つずつ作成しようとしましたが、機能しません。ここで

はコードです:

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()の元の呼び出しを削除しました。だからLoadStartを押す必要があります。

これは、すべてのノードを縮小します。

// 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

イムが混乱:そこから

これがメインの実装です:)かなり簡単最初の2つの階層を開くことができますそれを動的に作成することで意味します。たくさんのデータを挿入するだけですか?だからあなたはそれが一番上の親と子供の第一レベルだけを表示したいですか? – thatOneGuy

+0

nice!これは私が欲しいものです!別のクリックイベントを追加せずに最初の時間自体をロードするときにこれを行うことはできませんか? – Sajeetharan

+0

もちろん:http://jsfiddle.net/thatOneGuy/yar5sco6/8/ちょうどボタンとイベントリスナーを削除し、(ロードボタンをクリックした後に)すぐに呼び出されるstartVis()関数を作成しました – thatOneGuy

関連する問題