Спасибо, сегодня утром я потратил некоторое время, чтобы просмотреть это, и я не уверен, что он действительно сделает то, что мне нужно. Документация очень легкая, и пример требует, чтобы я запустил CouchDB и node.js. Так как все, что мне действительно нужно, это простой обход дерева, я думаю, что я мог бы свернуть свой собственный, но если я все же использую data.js, я вернусь и отметлю это как ответ.

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

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

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

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

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

Ответы на вопрос(1)

Ваш ответ на вопрос