Я хочу сделать D3 график, который должен быть следующим:D3 граф с SVG узлов - Как перемещать узлы в произвольных позициях
Когда страница HTML загружена, будет один узел в фиксированном месте. Скажем, верхний левый. Назовем его узлом шаблона, и этот узел не движется.
Когда пользователь делает мышь на узле шаблона, новый узел создается в том же месте, что и узел шаблона, и пользователь должен иметь возможность перетаскивать новый узел туда, где он хочет. Новый узел должен оставаться в том месте, куда пользователь перемещает его.
В любое время пользователь должен иметь возможность перемещать узел. И снова узел должен оставаться там, где пользователь покидает его.
Пользователь должен иметь возможность нарисовать связь между любыми двумя узлами. Предположим, что если он перетаскивает из одного узла в другой, не удерживая клавишу ctrl, тогда нарисована ссылка, и если он перетащит, удерживая клавишу управления, то узел перемещается.
Когда связь проведена между двумя узлами, узлы не должны менять позиции.
Когда два узла связаны друг с другом и один из них перемещается путем перетаскивания его, тогда ссылка должна измениться по размеру и ориентации по мере необходимости.
Я использую макет силы.
Я могу создать узел шаблона, но он всегда идет в центр контейнера - я думаю, это потому, что центр контейнера является центром тяжести. Но не уверен, как зафиксировать свою позицию в верхнем левом углу кода.
Я могу создать ссылки и новые узлы. Но узлы перемещаются и связывают изменение размера. Возможно, это связано с тем, что силовая компоновка пытается сделать длину ссылки равной расстоянию линии в макете силы. Но я не знаю, как использовать функцию для расстояния связи? Я даже не уверен, что это действительно поможет.
Какой метод следует использовать? Есть идеи?
Это звучит, как вы не хотите использовать для этого силовую компоновку. –
Благодарим за отзыв. Это мой второй вопрос. Я опубликовал это, потому что я чувствовал, что это существенно отличается от моего предыдущего вопроса. Какую компоновку я должен использовать? – Avinash