2016-10-31 2 views
0

Ich möchte Links aus meinem d3.js node-graph löschen. Genauer gesagt finde ich alle Links mit der gleichen Quelle wie eine gegebene ID und lösche die passenden Einträge in meinem graph.links. Dies scheint zu funktionieren, aber es mischt alle meine Link-Labels in der Art, dass die Labels an einem anderen Link als zuvor sind.Löschen von Links aus d3 node-graph shuffles Etiketten

bereitete ich eine JSFiddle: https://jsfiddle.net/FFoDWindow/0nf1hod8/

und das ist mein deleteLinks -function.

deleteLinks = function(parentNodeId){ 

     var linksToChildren = link.filter(function(d){ 
      return d.source.id ==parentNodeId; 
     }); 

     var correspondingLinkPath = linkPath.filter(function(d){ 
      return d.source.id ==parentNodeId; 
     }); 

     linksToChildren._groups[0].forEach(function(link){ 
      var data = d3.select(link).data()[0]; 
      var indexOfLink = graph.links.indexOf(data); 
      graph.links.splice(indexOfLink, 1); 
     }); 
     update(); 
    } 

Benötigen Sie weitere Informationen? Vielen Dank für Ihre Hilfe, FFoDWindow.

Antwort

0

Da Sie die Daten neu zuweisen, ist es sinnvoll, eine Schlüsselfunktion für die neuen Daten zu verwenden, um die vorhandenen Elemente zu berücksichtigen, die bereits ein Datum haben. Da Sie ein Element löschen, funktioniert die Standardreihenfolge der Indexreihenfolge nicht.

D3 Dokumentation: Joining Data

Ich habe die folgende Schlüsselfunktion von linkPaths:

linkPath = linkPathGroup 
       .selectAll(".linkPath") 
       .data(graph.links, function(d) { 
     return d ? d.linkLabel : this.id; 
     }); 

und die folgenden für linkLabels:

linkLabel = linkLabelGroup 
     .selectAll(".linkLabel") 
     .data(graph.links, 
function(d) { 
return d ? 'T' + d.linkLabel : this.id; 
}); 

Hier wird der JSFiddle aktualisiert

+0

Hey @Marcelo, Entschuldigung für meine späte Antwort, b Aber deine aktualisierte Geige funktioniert nicht. Die Etiketten sind immer noch gemischt ... – FFoDWindow

+0

@FFoDWindow - Ich habe meine Antwort – Marcelo

+0

Cheers dafür aktualisiert. Es klappt. – FFoDWindow

Verwandte Themen