Парни, неделю бьюсь с проблемой.
Есть код
https://jsfiddle.net/rfnj35xd/1/
Он нормально отрабатывает.
В событии клик, чтобы при клике на узел он перемещался в нужное место я добавил код
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);
}
}
Узел перемещается.
Но при перемещении или масштабировании дерево двигается не с места, где оно находится фактически, а перебрасывает на начальное положение и с него происходит движение.
Что только не делал.
svg.call(d3.zoom().on("zoom", function(event) {
currentTransform = event.transform; // Обновляем текущее преобразование при каждом масштабировании
g.attr("transform", currentTransform); // Применяем текущее преобразование
}));
вобще кидает в положение 0 0 .
Перебрал кучу вариантов но ничего нормально не отработало.
Прошу помощи, даже готов заплатить. Заранее благодарю.