Follow along with the video below to see how to install our site as a web app on your home screen.
Anmerkung: This feature currently requires accessing the site using the built-in Safari browser.
.text(function(d) { return d.name });
.text(function(d) { return d.data.name });
var path = startNode && startNode.path(d) || [];
startNode = d;
....
node.style("fill", function(d)
{return path.startnode || path.startNode.path() ? "yellow" : "red";
....
var path = startNode && startNode.path(d) || [];
startNode = d;
....
node.style("fill", function(n)
{
return path.includes(n) ? (n == startNode || n == d) ? "yellow" : "red" : "#999";
}
....
var text1 = svg.append("text")
.attr("dx", 112)
.attr("dy", 490)
.text("Erstes Node: " + )
.text("Zweites Node: " + )
.text("Drittes Node: " + )
var path = startNode && startNode.path(d) || [];
....
node.style("fill", function(n)
{
return path.includes(n) ? (n == startNode || n == d) ? "yellow" : "red" : "#999";
}
....
startNode= d
text1.text("Erstes Node: " + d.data.name)
dort schonHey, hätte nochmal ein anliegen. Habe einen text an einer festen stelle im svg definiert:
.text("Erstes Node: " + )
... unterzubringen nutzt dir ja noch nichtsstartnode ist ja der vorhergehende, es gibt also keine zwei danach, sondern nur einendie automatisch angeklickten ersten drei nodes rausgibt, also den startNode, und die beiden ersten danach.
{
points.push(d);
if (points.length > 3)
{
points.shift();
}
if (points.length > 1)
{
console.log("start: ", points[0].name, "end: ", points[1].name, "neu: ", points[2].name)
}
});
if (points.length > 2)
var path = startNode && startNode.path(d) || []
das letzte ist bei einem array mit 3 elementen das auf index 2 bzw. wenn du noch im click-handler bist das aktuelle, also d (welches du gerade mit points.push(d); eingefügt hast)um das aller letzte element zu kriegen, müsste man sicherlich mit der länge des arrays rangehen, oder?
var path = startNode && startNode.path(d) || []
console.log("start: ", path1[0].data.name, "mitte: ", path1[1].data.name, "mitte2: ", path1[2].data.name)
function flatten(root) {
var nodes = [], i = 0;
function recurse(node) {
if (node.children) node.children.forEach(recurse);
if (!node.id) node.id = ++i;
nodes.push(node);
}
recurse(root);
return nodes;
}
links = d3.layout.tree().links(nodes)
links.forEach(function(link) {
link.source = nodes[link.source] ||
(nodes[link.source] = {name: link.source});
link.target = nodes[link.target] ||
(nodes[link.target] = {name: link.target});
link.value = +link.value;
});
ich kann dir nicht folgen, wo ist kein "source" und "target" vorhanden? "source" und "target" sind doch immer vorhanden.Du, sag mal, ich probiere gerade mit dem hierarchy-layout pfeile anzubringen. Nun ist es so, dass hierbei kein "source" und "target" wert vorhanden ist.
der code erzeugt ein array mit knotenund zwar mit diesem code für nodes:
der nutzt tree um die links als array zu bekommenund diesem für links
die links bekommst du über hierarchyNun ist das problem, dass der code für die links (gibt "source" und "target" werte), aus der version v3 ist und es ihn in der v4 nicht mehr in der form gibt. Könnte man nun manuell in v4 die "source" und "target" werte geben?
var hierarchy = d3.hierarchy(root);
var links = hierarchy.links();
was ist denn dein beispiel?Dies müsste eigentlich auch für mein besipiel funktionieren?