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

Popular posts from this blog

javascript - Why Selenium can't find an element that is graphically visible -

java - How to compare two classes -

scala - Using the kronecker product on complex matrices with scalaNLP breeze -