Ergebnis 1 bis 2 von 2
  1. #1
    milesdavis ist offline Foren As
    registriert
    14-09-2016
    Beiträge
    89

    Nodes wegschieben in D3.js?

    Hey Leute,
    kennt sich einer von euch mit D3.js aus?
    Ich nutze hier das Force-Layout und habe hier einen Code, mit dem ich einen Button klicke und somit eine Eigenschaft nutze, bei der ein unsichtbarer Radius um den ersten Nodes erzeugt wird und alle umgebenen Nodes wegschiebt. Die Größe dieses Radiuses wird dabei auf 300 gestellt. Hinzu kommt, dass ich dabei die roten Nodes wegfiltere und sie quasi deaktiviere. Sie werden also nicht abgestoßen, sondern bleiben auf ihrer Position. Dies wird mit
    Code:
     d.fx = d.x;
     d.fy = d.y;
    erreicht. d.fx ist quasi die fixed position auf der x_Achse und diese wird mit der aktuellen position auf der x_Achse d.x des Nodes gleich gesetzt. Gleiches wird für die y_Achse getan.
    Code:
     .on("click", function(d) {
    
        node.filter(function() {
        return d3.select(this).attr("fill") === "red"
      }).each(function(d) {
        d.fx = d.x;
        d.fy = d.y;
      });
    
        d3.selectAll("circle").data().forEach(d => d.r = 5);
        d3.select(this).datum().r = 300;
        simulation.nodes(nodes);
        simulation.alpha(0.8).restart();
    });
    Der obige Code geht super. Nun habe ich hier ein Array namens
    pat
    . In diesem Array sind eine Reihe Nodes gespeichert und ich definiere ich das Mittelelement
    mid
    . Nun möchte ich das gleiche wie vorher erreichen, nämlich, dass die roten Nodes nicht weggepusht werden, der unsichtbare Radius vom Mittelknoten
    mid
    sich auf 300 vergrößert und die restlichen Nodes wegschiebt. Nur leider funktioniert das nicht. Kann mir da einer helfen? Hier ist der nichtfunktionierende Code. Ich denke, dass man etwas an
    nodes
    machen müsste, welches man mit
    simulation.nodes(nodes)
    verwendet wird.



    Code:
    .on("click", function(d) {
      var mid = Math.floor((pat.length - 1) / 2);
        node.filter(function() {
        return d3.select(this).attr("fill") === "red"
      }).each(function(d) {
        d.fx = d.x;
        d.fy = d.y;
      });
        d3.selectAll("circle").data().forEach(d => d.r = 5);
        pat[mid].r =  300;
        simulation.nodes(nodes);
        simulation.alpha(0.8).restart();
    });

  2. #2
    tsseh ist offline Foren-Gott
    registriert
    19-05-2008
    Beiträge
    5.640

    AW: Nodes wegschieben in D3.js?

    mit dem ausschnitt kann keiner was anfangen, mach mal ein minimalbeispiel an welchem man sieht, in welcher beziehung die daten zueinander stehen.

Ähnliche Themen

  1. Auf bestimme Nodes in JavaScipt verweisen
    Von baumjohann im Forum JavaScript
    Antworten: 2
    Letzter Beitrag: 01-11-2015, 22:57
  2. Problem mit #text nodes
    Von Robokopp im Forum JavaScript
    Antworten: 4
    Letzter Beitrag: 20-05-2013, 07:48
  3. Nodes verarbeiten / löschen
    Von Teufler im Forum JavaScript
    Antworten: 11
    Letzter Beitrag: 24-04-2007, 11:23
  4. tipps zum lernen von DOM, nodes, etc.
    Von scraddy im Forum JavaScript
    Antworten: 1
    Letzter Beitrag: 05-08-2006, 11:55
  5. Elemente bzw. Nodes erweitern
    Von Deever im Forum JavaScript
    Antworten: 8
    Letzter Beitrag: 03-06-2006, 21:02

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •