У меня есть набор данных, который лучше всего представлен графиком. Он состоит из узлов из 6 или 7 разных «типов» с направленными ребрами (зависимости друг от друга, гарантированные не имеющие циклических зависимостей). Набор данных по существу является шаблоном многоуровневой конфигурации, и пользователь должен иметь возможность выбирать биты и части конфигурации из разных желаемых слоев и автоматически вводить зависимые биты.Javascript направлена на ациклическую библиотеку графов? (Графическая визуализация НЕ необходима)
Общая потребность в пользовательском интерфейсе заключается в том, чтобы пользователь мог выбирать или отбирать элементы из блоков множественного выбора (один из таких полей для каждого типа узлов), а элементы «зависимые» в других ячейках становятся выбранными или невыделенными по мере необходимости. Мне нужно иметь возможность вытащить набор данных с сервера, позволить пользователю выбирать нужные биты (с обработкой зависимости, выполняемой в javascript на стороне клиента для обеспечения отзывчивости), а затем отправить результат обратно, когда они будут завершены.
Набор данных большой и достаточно сложный, что на самом деле его отображение в виде графика будет подавляющим и запутанным для пользователя. Нужны только основные операции обхода графика, так как все, что требуется, - это каскадное выделение зависимостей. (Например, пользователь, не выбрав узел, приведет к тому, что зависимости между узлами не будут выбраны, если не будет другого выбранного узла, который все еще зависит от них. Пользователь, выбирающий узел, приведет к выбору всех зависимостей этого узла.) A простой глубины или ширины первого поиска по направленным краям от начального узла будет достаточно, чтобы посетить все затронутые узлы. Если я могу следовать за краями, будь то направление, бонус. (Если нет, я могу легко сгенерировать граф с обратным преобразованием и использовать его, когда это необходимо.)
Я нашел здесь ссылки на несколько библиотек визуализации графиков javascript, но большинство из этих обсуждений, похоже, график "как" диаграмма ", и я не нуждаюсь в графике здесь. Мое копание привело меня в этот список: Рафаэль, протовиз, вспышка, D3, jsVis, Дракула и префузирование. Из этого списка похоже, что jsVis или Dracula могут иметь базовые конструкции графиков, которые мне нужны, если я просто игнорирую визуализацию, но мне не ясно, из документации, если это так. Я должен исключить несколько других, потому что я не могу привносить какие-либо флэш-зависимости. К сожалению, у меня нет времени, чтобы прототип вещей с этими многочисленными библиотеками. (Я буду копать в jsVis и dracula, хотя, если не использовать какой-нибудь удобный ввод здесь.)
Если у кого-то есть опыт с чем-то из этого списка и считается, что его часть может использоваться независимо от части визуализации, это безусловно, удовлетворит мои потребности. Если есть какая-то другая библиотека, которую я мог бы использовать, которая бы соответствовала моим потребностям, это тоже было бы здорово. Одно из последних требований в отношении лицензирования: библиотека должна быть «бесплатной» не-copyleft-способом - так идеально Apache v2.0, BSD, MIT или что-то в этом роде.
Вы в конечном итоге внедрили собственное решение? Если да, то он доступен в любом месте? – steeveeet