SVG / Raphael, как реализовать алгоритм DOT в JavaScript?(График организации) - PullRequest
1 голос
/ 26 сентября 2011

Моя скрипка: http://jsfiddle.net/G5mTx/10/

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

Для тех, кто не знаком с алгоритмом DOT, краткое, смутное объяснение можно найти здесь: http://www.ece.uci.edu/~jhahn/pdf/dot.pdf

По сути, DOT организует узлы таким образом, чтобы график был оптимальным, а это значит, что он лаконичен, имеет минимальное пересечение линий и сбалансирован.

Я слышал о некоторых людях, использующих серверную часть алгоритма DOT перед отправкой его клиенту ... что было бы значительно быстрее ... но мне нужно, чтобы у каждого узла были состояния зависания и щелчка, как я планирую при разрешении пользователю переназначить, куда указывают стрелки / линии.

Я имею в виду, я мог бы выполнить генерацию SVG на стороне сервера ... но тогда как мне подключить события зависания / щелчка к узлам и сообщить серверу, какую модель представляет узел при повторном назначении линии?

Примечание: мой сервер работает на Ruby on Rails 2.3.8

1 Ответ

0 голосов
/ 03 декабря 2012

Я боролся именно с этой ситуацией и запустил алгоритм DOT на своем сервере, отправляя только новые координаты для узлов обратно в браузер.В конечном итоге я нашел установку неудовлетворительной.

Я перешел на использование алгоритма раскладки силы D3 , который реализован в Javascript и выглядит более современным, чем DOT, и теперь я намного счастливее.

...