2016-05-08 5 views
0

ich eine d3.js Bibliothek hinzugefügt zu projizieren, und ich habe einige andere Bibliotheken wie jQuery, Kendo ui, ui jQuery usw.D3.js Baumansicht Zusammenbruch funktioniert nicht in meiner Anwendung

aber Kollaps funktioniert nicht auf Klick des Knotens der Baumansicht. Es funktioniert in js Geige aber nicht in meiner Anwendung. Gibt es Konflikte?

<!DOCTYPE html> 
<meta charset="utf-8"> 
<style> 

.node { 
cursor: pointer; 
} 

.node circle { 
    fill: #fff; 
stroke: steelblue; 
stroke-width: 1.5px; 
} 

.node text { 
font: 10px sans-serif; 
} 

.link { 
fill: none; 
stroke: #ccc; 
stroke-width: 1.5px; 
} 

</style> 
<body> 
<div id="lineageTrack"></div> 
<script src="d3.js"></script> 
<script> 

    var margin = { 
      top: 20, 
      right: 120, 
      bottom: 20, 
      left: 120 
     }, 
     width = 960 - margin.right - margin.left, 
     height = 800 - margin.top - margin.bottom; 

     var root = { 
      "name": "flare", 
       "children": [{ 
       "name": "analytics" 
       }, { 
        "name": "graph" 
       }] 

       }; 

     var i = 0, 
      duration = 750, 
      rectW = 60, 
      rectH = 30; 

     var tree = d3.layout.tree().nodeSize([70, 40]); 
     var diagonal = d3.svg.diagonal() 
      .projection(function (d) { 
      return [d.x + rectW/2, d.y + rectH/2]; 
     }); 

     var svg = d3.select("#lineageTrack").append("svg").attr("width", 1000).attr("height", 1000) 
      .call(zm = d3.behavior.zoom().scaleExtent([1,3]).on("zoom", redraw)).append("g") 
      .attr("transform", "translate(" + 350 + "," + 20 + ")"); 

     //necessary so that zoom knows where to zoom and unzoom from 
     zm.translate([350, 20]); 

     root.x0 = 0; 
     root.y0 = height/2; 

     function collapse(d) { 
      if (d.children) { 
       d._children = d.children; 
       d._children.forEach(collapse); 
       d.children = null; 
      } 
     } 

     root.children.forEach(collapse); 
     update(root); 

     d3.select("#lineageTrack").style("height", "800px"); 

     function update(source) { 

      // Compute the new tree layout. 
      var nodes = tree.nodes(root).reverse(), 
       links = tree.links(nodes); 

      // Normalize for fixed-depth. 
      nodes.forEach(function (d) { 
       d.y = d.depth * 180; 
      }); 

      // Update the nodes… 
      var node = svg.selectAll("g.node") 
       .data(nodes, function (d) { 
       return d.id || (d.id = ++i); 
      }); 

      // Enter any new nodes at the parent's previous position. 
      var nodeEnter = node.enter().append("g") 
       .attr("class", "node") 
       .attr("transform", function (d) { 
       return "translate(" + source.x0 + "," + source.y0 + ")"; 
      }) 
       .on("click", click); 

      nodeEnter.append("rect") 
       .attr("width", rectW) 
       .attr("height", rectH) 
       .attr("stroke", "black") 
       .attr("stroke-width", 1) 
       .style("fill", function (d) { 
       return d._children ? "lightsteelblue" : "#fff"; 
      }); 

      nodeEnter.append("text") 
       .attr("x", rectW/2) 
       .attr("y", rectH/2) 
       .attr("dy", ".35em") 
       .attr("text-anchor", "middle") 
       .text(function (d) { 
       return d.name; 
      }); 

      // Transition nodes to their new position. 
      var nodeUpdate = node.transition() 
       .duration(duration) 
       .attr("transform", function (d) { 
       return "translate(" + d.x + "," + d.y + ")"; 
      }); 

      nodeUpdate.select("rect") 
       .attr("width", rectW) 
       .attr("height", rectH) 
       .attr("stroke", "black") 
       .attr("stroke-width", 1) 
       .style("fill", function (d) { 
       return d._children ? "lightsteelblue" : "#fff"; 
      }); 

      nodeUpdate.select("text") 
       .style("fill-opacity", 1); 

      // Transition exiting nodes to the parent's new position. 
      var nodeExit = node.exit().transition() 
       .duration(duration) 
       .attr("transform", function (d) { 
       return "translate(" + source.x + "," + source.y + ")"; 
      }) 
       .remove(); 

      nodeExit.select("rect") 
       .attr("width", rectW) 
       .attr("height", rectH) 
      //.attr("width", bbox.getBBox().width)"" 
      //.attr("height", bbox.getBBox().height) 
      .attr("stroke", "black") 
       .attr("stroke-width", 1); 

      nodeExit.select("text"); 

      // Update the links… 
      var link = svg.selectAll("path.link") 
       .data(links, function (d) { 
       return d.target.id; 
      }); 

      // Enter any new links at the parent's previous position. 
      link.enter().insert("path", "g") 
       .attr("class", "link") 
       .attr("x", rectW/2) 
       .attr("y", rectH/2) 
       .attr("d", function (d) { 
       var o = { 
        x: source.x0, 
        y: source.y0 
       }; 
       return diagonal({ 
        source: o, 
        target: o 
       }); 
      }); 

      // Transition links to their new position. 
      link.transition() 
       .duration(duration) 
       .attr("d", diagonal); 

      // Transition exiting nodes to the parent's new position. 
      link.exit().transition() 
       .duration(duration) 
       .attr("d", function (d) { 
       var o = { 
        x: source.x, 
        y: source.y 
       }; 
       return diagonal({ 
        source: o, 
        target: o 
       }); 
      }) 
       .remove(); 

      // Stash the old positions for transition. 
      nodes.forEach(function (d) { 
       d.x0 = d.x; 
       d.y0 = d.y; 
      }); 
     } 

     // Toggle children on click. 
     function click(d) { 
      if (d.children) { 
       d._children = d.children; 
       d.children = null; 
      } else { 
       d.children = d._children; 
       d._children = null; 
      } 
      update(d); 
     } 

     //Redraw for zoom 
     function redraw() { 
     //console.log("here", d3.event.translate, d3.event.scale); 
     svg.attr("transform", 
      "translate(" + d3.event.translate + ")" 
      + " scale(" + d3.event.scale + ")"); 
     } 

    </script> 
     </body> 
     </html> 

see the elements

+0

Können wir die Geige sehen? – echonax

+0

Nevermind, hab es: https://plnr.r.co/edit/FMPWuwf7RHJCxc37xRaq?p=preview. Zeigt Ihre Konsole einen Fehler an? ist '' ein legitimer Pfad? – echonax

+0

Danke echonyx. Nr. Konsole keine Fehler angezeigt. –

Antwort

0

Ihre Datei kann mit jquery.min.js oder mit anderen Bibliotheken in Konflikt geraten und so, dass es in Konflikt sein. Sie müssen also die Datei gerade oben für alle Bibliotheksdateien behalten. Es wird gut funktionieren.

+0

Danke Anand. es hat gut funktioniert. Ich hielt d3.js Bibliotheksquelle vor dem Laden aller Bibliotheken. danke für deine antwort. –