Дерево разрушения D3 на заданном уровне c (неправильная анимация) - PullRequest
0 голосов
/ 20 января 2020

Я пытаюсь создать кнопку, которая сворачивает все узлы до определенного уровня c. Код работает, но анимация свертывания узла неверна (узлы перемещаются к root, а не к родительскому элементу).

Код: код пера Проблема должно быть здесь:

$("#teste").click(function(){
    root.children.forEach(collapseLevel);
    update(root);
}); 

function collapseLevel(d) {
if (d.depth == 1) { 
console.log(d.name + " " + d.depth); 
if (d.children) {
console.log(d.children);
console.log(d);
d._children = d.children;
d.children = null;
console.log(d);
  }
};
}

1 Ответ

0 голосов
/ 21 января 2020

Я разобрался с решением. Вам необходимо обновить узел:

Эта часть:

$("#teste").click(function(){
    root.children.forEach(collapseLevel);
    update(root);
});

Удалить обновление (root) и установить обновление внутри функции:

$("#teste").click(function(){
    root.children.forEach(collapseLevel);
});

function collapseLevel(d) {
if (d.depth == 1) { 
console.log(d.name + " " + d.depth); 
if (d.children) {
console.log(d.children);
console.log(d);
d._children = d.children;
d.children = null;
update(d);
  }
};
}

Вы можете найти рабочий код здесь: CodePen

...