Как решить проблему смещения дерева при перемещении или масштабировании?

Парни, неделю бьюсь с проблемой. Есть код 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 . Перебрал кучу вариантов но ничего нормально не отработало.

Прошу помощи, даже готов заплатить. Заранее благодарю.


Ответы (0 шт):