Обновление макета кругового пакета с помощью клавиатуры
У меня есть макет круга, который представляет некоторые данные из файла JSON. Когда я нажимаю на стрелки влево-вправо на клавиатуре, я хочу обновить макет пакета. Мне удалось обновить положение кругов, но не радиус. Не могли бы вы взглянуть на код ниже? Мой пакет кругов не является действительно иерархическим, я имею в виду, что у меня есть только один родитель, круг с идентификатором 'coreCircle', а затем все дочерние элементы внутри.
Спасибо RM
var pack = d3.layout.pack()
.value(function(d) {
return d.someField;
})
.children(
function children(d) {
return d.someArray;
});
var corevis = d3.select('#svgCoreGroup');
// Creating the circle packed core
var gNodes = corevis.data([json]).selectAll("g.node")
.data(pack.nodes, function(d) {return (d.children ? "coreCircle" : d.name)});
// Remove
gNodes.exit().remove()
// Update
corevis
.data([json]).selectAll("g.node")
.data(pack.nodes, function(d) {return (d.children ? "coreCircle" : d.name)})
.attr("class", function(d) { return d.children ? "node" : "leaf node"; })
.attr("id", function(d) { return d.children ? "coreCircle" : null; })
.attr("transform", function(d) { return "translate(" + d.x + "," + d.y + ")"; })
.selectAll("circle")
.transition()
.duration(500)
.attr("r", function(d) { return d.children ? coreSize : d.r; });
var node = gNodes
.enter().append("g")
.attr("class", function(d) { return d.children ? "node" : "leaf node"; })
.attr("id", function(d) { return d.children ? "coreCircle" : null; })
.attr("transform", function(d) { return "translate(" + d.x + "," + d.y + ")"; });
node.append("circle")
.attr("r", function(d) { return d.children ? coreSize : d.r; })