#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 должным образом, это был в основном полный повторный запуск диаграммы