2017-06-24 10 views
1

私は基本的な有向グラフエディタを作成し、JSONから初期グラフをロードしています。d3グラフノードを削除すると残りの行が残る

私の問題は、ノードを頻繁に削除すると、残っている行が残ることです(削除するノードとはまったく無関係であることが多い - ノードの束を通り過ぎて削除することで複製できます)。残りのアーティファクトはフォースレイアウトでも移動しません。

私の理解では、link.exit().remove(); が私の現在のデータセットに一致しないリンクを削除すべきであるということである。

link = link.data(links,function(d){return d.source.Id + "_" + d.target.Id;}); 

私のサンプルへのリンク:

https://jsfiddle.net/slizice/9a8d6zsm/60/ は(ノードをクリックして、delete/backspaceを打ちます削除する)

大規模なデータセットで作業を始めるまで、私はこれを観察しませんでした。

どのようなアイデアも大歓迎です!

編集:いくつかの重複リンクが関与している可能性があるよう

が見えます。解決策が出たら答えを出します。

答えて

0

リンクを生成する私のサーバー側のコードは、重複を生成することがあり、複数回通過する場合があります。クライアント側での重複を処理する

、私は単純に最初の配列を確認してください。

exists = false; 
    edges.forEach(function(e) { 
    if ((e.source.Id == sourceNode.Id) && (e.target.Id == targetNode.Id)) { 
     exists = true; 
    } 
    }); 
    if (!exists) { 
    edges.push({ 
     source: sourceNode, 
     target: targetNode, 
     value: e.Value 
    }); 
    } 
関連する問題