Я реализую блок-схему процесса в JointJS, где пользователь может удалять элементы, а также добавлять новые и повторно связывать вещи во множестве порядков. Граф использует функции автоматической компоновки библиотеки joint.layout.DirectedGraph с Dagre для повторной организации графика каждый раз, когда что-то удаляется, добавляется, несвязано или повторно связано. Одна странная проблема возникла, и я еще не уверен, как ее обрабатывать.Динамическое добавление узлов в граф JointJS. Установить порядок ранжирования в файле joint.layout.DirectedGraph?
Скажем, у меня есть процесс «вилки» с двумя выходными портами, по одному с каждой стороны, и один порт в верхней части. В зависимости от упорядочения элементов в массиве автомат может иногда помещать дочерний элемент левого порта справа от дочернего элемента правого порта, поэтому результирующие ссылки пересекаются.
Есть ли какой-либо простой способ повлиять на упорядочение рангов в макете? Я ожидаю, что могу изменить порядок элементов в массиве, когда ситуация изменится, поэтому они более сбиты с точки зрения Дагре, но я не уверен, как на самом деле упорядочение на практике. Еще лучше будет какой-то атрибут, похожий на индекс z, но для смещения слева направо, который я мог бы установить, и Dagre будет уважать, но я не верю, что такая вещь скрывается в коде.
Есть ли у кого-нибудь идеи или предложения, как я мог бы скрасить макет, чтобы пересечь такие случаи?
Большое спасибо заранее!