Javascript направлена ​​на ациклическую библиотеку графов? (Графическая визуализация НЕ необходима)

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

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

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

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

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

1 ответ

Я не использовал его, но вы можете проверить data.js. Это лицензионная библиотека MIT с набором утилит для структуры данных. В частности, он включает Data.Node и Data.Graph

A Data.Graph может использоваться для представления произвольных графов сложных объектов. Отношения между объектами выражаются через ссылки, указывающие на упомянутые объекты. Data.Graphs можно перемещать различными способами.

licensed under cc by-sa 3.0 with attribution.