Библиотека ациклических графов, ориентированная на Javascript? (Визуализация графика НЕ ​​требуется)

У меня есть набор данных, который лучше всего представлен в виде графика. Он состоит из узлов 6 или 7 различных «типов» с направленными ребрами (зависимостями друг от друга, гарантированно не имеющими циклических зависимостей). Набор данных, по сути, является шаблоном многоуровневой конфигурации, и пользователь должен иметь возможность выбирать нужные биты и части конфигурации из разных уровней, а зависимые биты вводятся автоматически.

Общая потребность пользовательского интерфейса состоит в том, чтобы пользователь мог выбирать или отменять выбор элементов в полях с множественным выбором (одно такое поле для каждого типа узла), и чтобы «зависимые» элементы в других полях становились выбранными или не выбранными как необходимо. Мне нужно получить набор данных с сервера, позволить пользователю выбрать желаемые биты (с обработкой зависимостей, выполняемой в javascript на стороне клиента для оперативности), а затем отправить результат обратно, когда они будут завершены.

Набор данных достаточно велик и сложен, поэтому отображение его в виде графика могло бы сбить с толку пользователя. Требуются только базовые операции обхода графа, поскольку все, что требуется, - это каскадирование выборок из зависимостей. (Например, отмена выбора пользователем узла приведет к тому, что зависимости узлов станут невыделенными, если не будет другого выбранного узла, который все еще зависит от них. Пользователь, выбирающий узел, приведет к тому, что все зависимости этого узла будут выбраны.) A простого поиска в глубину или ширину по направленным ребрам от начального узла будет достаточно для посещения всех затронутых узлов. Если я смогу следовать за гранями в любом направлении, бонус. (Если нет, я могу легко сгенерировать граф с обращенными краями и использовать его при необходимости.)

Я покопался здесь и нашел ссылки на ряд библиотек визуализации графов javascript, но большинство этих обсуждений, похоже, интерпретируют «граф "как" диаграмма, и мне здесь не нужны диаграммы. Мои поиски привели меня к следующему списку: Raphael, protovis, flare, D3, jsVis, Dracula и prefuse. Из этого списка похоже, что jsVis или Dracula могут иметь базовые конструкции графа, которые мне нужны, если я просто игнорирую сторону визуализации, но мне не ясно из документации, так ли это. Я должен исключить несколько других, потому что я не могу ввести какие-либо зависимости от flash. К сожалению, у меня нет времени создавать прототипы с таким количеством библиотек. (Я буду больше копаться в jsVis и dracula, исключая здесь некоторый удобный ввод.)

Если кто-то имеет опыт работы с чем-то из этого списка и считает, что его графическая часть может использоваться независимо от части визуализации, это будет обязательно отвечаю моим потребностям. Если бы я мог использовать какую-то другую библиотеку, которая отвечает моим потребностям, это тоже было бы здорово. Последнее требование относительно лицензирования: библиотека должна быть «бесплатной» без авторского лева - так что в идеале Apache v2.0, BSD, MIT или что-то в этом роде.

9
задан VividD 28 January 2014 в 00:47
поделиться