Нужно решить проблему смещения дерева при перемещении/масштабировании

Цена договорная
03 апреля 2024, 10:55 • 5 откликов • 56 просмотров
Парни, неделю бьюсь с проблемой. Используется библиотека d3.js
Есть код
https://jsfiddle.net/rfnj35xd/1/
Он нормально отрабатывает.
В событии клик, чтобы при клике на узел он перемещался в нужное место я добавил код
<code lang="javascript">
function click(event, d) {
if (d && d.data) { // Проверяем, что d и d.data не являются undefined
if (d.children) {
d._children = d.children;
d.children = null;
} else if (d._children) {
d.children = d._children;
d._children = null;
} else {
console.log('d:', d)
console.log('d.data:', d.data)
console.log('d.name:', d.name)
console.log('d.data.name:', d.data.name)
console.log('d.data.id:', d.data.id)
// window.location = d.data.url;
}
//
// Вычисляем новые координаты x и y для перемещения g
//
x = -d.x + treeTop;
y = -d.y + treeLeft;

//Применяем перевод g с использованием новых координат
g.transition().duration(duration).attr("transform", "translate(" + y + "," + x + ")");

//console.log("x: " + x + ", y: " + y);
update(d);
}
}
</code>
Узел перемещается.
Но при перемещении или масштабировании дерево двигается не с места, где оно находится фактически, а перебрасывает на начальное положение и с него происходит движение.

Что только не делал. Перебрал кучу вариантов но ничего нормально не отработало.
Цену предлагайте.