Как добавить дополнительные узлы в макет пакета D3.js, если он уже создан и отображается в элементе SVG? Пересчет всего pack
является вариантом, но я хотел бы сделать вставку гораздо более бесшовной.Вставка узлов в макет D3 (разбиение на страницы на масштабирование)
Я ищу функцию pack().addNode()
, которая позволяет мне вставлять дополнительные дочерние узлы в существующий листовой узел. Когда пользователь приближается к этому листовому узлу, листовой узел должен превратиться в родительский узел и отображать вставленные узлы в качестве своих дочерних элементов.
Просьба посмотреть at my fiddle here. Узел под названием subnode_jane
должен получить детей в subnode_subnodes
в качестве своих новых детей.
var subnode_subnodes = [{
"name": "JanesDaughter",
"size": 1030
}, {
"name": "JanesSon",
"size": 12000
}];
function zoom(d) {
var focus0 = focus;
focus = d;
if (d.name === "subnode_jane") {
alert("Oh I see subnode_jane has unpaginated children; insert them now!");
}
/* ... */
}
Дополнительно: При этом, было бы неплохо, если бы общий вид оригинальных узлов останется совсем то же самое. Благодаря!
Похожие: update a layout.pack in d3.js
http://bl.ocks.org/mbostock/1095795, http://stackoverflow.com/questions/11606214/adding-and -removing-nodes-in-d3js-force-graph, http://stackoverflow.com/questions/21070899/d3-js-how-to-remove-nodes-when-link-data-updates-in-a-force -layout –