Компонент основан на базе Javascript Infovit Toolkit и входит в состав компонента Таблица (как режим отображения).
Пример работы компонента на демостенде - https://demo.web-automation.ru/list/watch/vizualizaciya-dannykh-v-vide-grafa---62
В SELECT 1 таблицы прописываем узлы графа
-- SELECT 1
select 'node1' id, 'node1' name,
union
select 'node2' id, 'node2' name, '#f00' color, 'circle' type, 3 dim
union
select 'node3' id, 'node3' name, '#f00' color, 'circle' type, 3 dim
union
select 'node4' id, 'node4' name, '#f00' color, 'circle' type, 3 dim
union
select 'node5' id, 'node5' name, '#f00' color, 'circle' type, 3 dim
В SELECT 3 прописываем viewType, graphOptions
-- SELECT 3
select 'graph' viewType,
'{
"contHeight": "1000px"
}' graphOptions
В GraphOptions можно передать JS настройки компонента $jit.ForceDirected (за исключением функций).
По умолчанию там такие настройки: https://pastebin.com/zdM8U6qn (если заменяется какой-либо узел (Navigation, Node, Edge, Label), то надо прописать все его настройки - ваши настройки полностью перезатирают настройки по умолчанию).
В SELECT 4 прописываем связи между узлами:
select 'node1' nodeFrom, 'node2' nodeTo, '#00f' color
union
select 'node2' nodeFrom, 'node3' nodeTo, '#0ff' color
union
select 'node3' nodeFrom, 'node2' nodeTo, '#0f0' color
Примечание:
1. Не используем paging (т.е. выводим все данные сразу). Учитывайте объем данных - не выводится слишком много узлов (ограничивайте выборку в SELECT 1), иначе это приведет к длительной обработке данных на браузере.
2. Документация по настройкам JS компонента - https://philogb.github.io/jit/static/v20/Docs/files/Core/Core-js.html
3. Вариант вывода структуры БД - https://pastebin.com/0uKZ30Mt
4. Ограничение. Компонент нестабильно работает в диалоговом окне (после скроллинга окна не работает перетаскивание узлов и подсказки)
Для этого необходимо создать JS коллбек вида as.crud2callbacks[tableCode + "_clickGraphNode"], например: https://pastebin.com/cJgQejhF
Если коллбека нет, то система ищет div с id = as-visGraphNodePanel и вставляет в него название элемента и его связи.
Если есть коллбек вида as.crud2callbacks[tableCode + "_showGraphTip"], то работает он. Если его нет, то выводится подсказка с названием элемента и полем tip у узла (если он есть).