ошибка времени выполнения d3 v6: ошибка кругового определения после завершения перетаскивания

#d3.js #observable

#d3.js #наблюдаемый

Вопрос:

После перемещения прямоугольника с помощью перетаскивания мне нужно заново нарисовать диаграмму, чтобы устранить любые перекрытия.
Это создает ошибку времени выполнения: круговое определение d3 v6 из-за круговых зависимостей, которые не разрешены с ES6. Есть ли обходной путь для этого?

 function draw() {
var Enter = group.enter()
                .append("rect")
                .attr("class", "lefthand")
                .attr("width", function (d) { return xt(new Date(d.finish)) - xt(new Date(d.start)) })
                .attr("x", function (d) { return xt(d.start) })
                .attr("y", function (d) { return env.yScale(d.sub) - lineHeight / 2 })
                .call(d3.drag()
                    .on("start", dragstarted)
                    .on("drag", dragged)
                    .on("end", dragended))
}


function dragended(d) {

            resolveOverlaps
            event = null
            draw();
}
 

Комментарии:

1. Пожалуйста, добавьте рабочую демонстрацию вашей проблемы. Это привлечет больше внимания и приведет к лучшим ответам.

Ответ №1:

Решаемая это путем создания серии выборок и обновления определенных атрибутов, например

d3.selectAll(«.rectangle»)

Предыдущий код не использовал d3 должным образом, это был в основном полный повторный запуск диаграммы