d3.js - How does d3 V4 d3.stratify work with a tree? -
i trying visualize simple org chart d3. made small test , stratified data isn't working when call "tree" method. when debug, looks stratify didn't populate "root" entries needs (i ran , debugged other examples such this , can see stratify populates set of children/parent entries aren't present in mine).
test.json:
{"orgchart":[ {"employeename":"to","manager":"","team":"my company","jobrole":"something cool"}, {"employeename":"jw","manager":"to","team":"my company","jobrole":"something cool"}, {"employeename":"bk","manager":"jw","team":"team 1","jobrole":"something cool"}, {"employeename":"wh","manager":"bk","jobrole":"something cool"}, {"employeename":"se","manager":"bk","jobrole":"something cool"}, {"employeename":"qi","manager":"bk","jobrole":"something cool"}, {"employeename":"kx","manager":"bk","jobrole":"something cool"}, {"employeename":"ka","manager":"kx","jobrole":"something cool"}, {"employeename":"hh","manager":"jw","team":"team 2","jobrole":"something cool"}, {"employeename":"dn","manager":"hh","jobrole":"something cool"}, {"employeename":"kt","manager":"hh","jobrole":"something cool"}, {"employeename":"jb","manager":"kt","jobrole":"something cool"}, {"employeename":"um","manager":"kt","jobrole":"something cool"}, {"employeename":"al","manager":"kt","jobrole":"something cool"}, {"employeename":"fr","manager":"kt","jobrole":"something cool"}, {"employeename":"we","manager":"hh","jobrole":"something cool"}, {"employeename":"co","manager":"we","jobrole":"something cool"}, {"employeename":"le","manager":"we","jobrole":"something cool"}, {"employeename":"lo","manager":"we","jobrole":"something cool"}, {"employeename":"yi","manager":"hh","jobrole":"something cool"}, {"employeename":"ei","manager":"yi","jobrole":"something cool"}, {"employeename":"dj","manager":"yi","jobrole":"something cool"}, {"employeename":"sh","manager":"yi","jobrole":"something cool"}, {"employeename":"bs","manager":"jw","team":"team 2","jobrole":"something cool"}, {"employeename":"sp","manager":"bs","jobrole":"something cool"}, {"employeename":"sb","manager":"jw","team":"team 3","jobrole":"something cool"}, {"employeename":"gq","manager":"sb","jobrole":"something cool"}, {"employeename":"js","manager":"gq","jobrole":"something cool"}, {"employeename":"ht","manager":"sb","jobrole":"something cool"}, {"employeename":"mb","manager":"ht","jobrole":"something cool"}, {"employeename":"mf","manager":"ht","jobrole":"something cool"}, {"employeename":"fw","manager":"sb","jobrole":"something cool"}, {"employeename":"gm","manager":"fw","jobrole":"something cool"}, {"employeename":"xt","manager":"fw","jobrole":"something cool"}, {"employeename":"vq","manager":"fw","jobrole":"something cool"}]} test code:
var tree = d3.tree().size([height, width - 160]); d3.json("test.json", function(error, data) { if (error) throw error; // breakpoint here shows data loaded , valid var root = d3.stratify(data.orgchart) .id(function(d) { return d.employeename; }) .parentid(function(d) { return d.manager; }); // breakpoint here shows no children/parent entries in "root" // next function fails // "uncaught typeerror: root.eachbefore not function" tree(root); });
of course after looking @ more day, 5 minutes after posting question realized answer.
the data being passed in wrongly.
instead of this:
var root = d3.stratify(data.orgchart) .id(function(d) { return d.employeename; }) .parentid(function(d) { return d.manager; }); it should this:
var root = d3.stratify() .id(function(d) { return d.employeename; }) .parentid(function(d) { return d.manager; }) (data.orgchart); the "data.orgchart" needs put @ end of chain.
Comments
Post a Comment