我有一个最好用图表表示的数据集。它由 6 或 7 个不同“类型”的节点组成,这些节点具有有向边(相互依赖,保证没有循环依赖)。数据集本质上是分层配置的模板,用户需要能够从所需的不同层中选择配置的点点滴滴,并自动引入相关的位。
一般的 UI 需求是用户从多选框(每个节点类型一个这样的框)中选择或取消选择项目,并根据需要使其他框中的“依赖”项目变为选中或取消选择。我需要能够从服务器上拉下数据集,让用户选择所需的位(在客户端的 javascript 中完成依赖处理以实现响应),然后在完成后将结果提交回来。
数据集足够大且足够复杂,以至于将其实际显示为图表会让用户感到不知所措和困惑。只需要基本的图遍历操作,因为所需要的只是将选择级联出依赖项。(例如,如果没有其他选定的节点仍然依赖于它们,则用户取消选择节点将导致该节点依赖项变为未选中。选择节点的用户将导致该节点的所有依赖项都被选中。)从起始节点开始沿着有向边进行简单的深度或广度优先搜索就足以访问所有受影响的节点。如果我可以沿任一方向跟随边缘,则奖励。(如果不是,我可以很容易地生成一个边缘反转图并在需要时使用它。)
我在这里挖掘并找到了对许多 javascript 图形可视化库的引用,但是这些讨论中的大多数似乎都将“图形”解释为“图表”,我在这里没有图表需求。我的挖掘使我得到了这个列表:Raphael、protovis、flare、D3、jsVis、Dracula 和 prefuse。从这个列表来看,如果我只是忽略可视化方面,jsVis 或 Dracula 可能具有我需要的底层图形结构,但如果是这种情况,我从文档中不清楚。我必须排除其他一些,因为我不能引入任何 Flash 依赖项。不幸的是,我没有时间用这么多的库来制作原型。(不过,我将深入研究 jsVis 和 dracula,除非在这里提供一些方便的输入。)
如果有人对该列表中的某些内容有经验并相信它的图形部分可以独立于可视化部分使用,那肯定会满足我的需求。如果有其他库可以满足我的需求,那也很棒。关于许可的最后一个要求:库需要以非版权左的方式“免费” - 所以理想情况下是 Apache v2.0、BSD、MIT 或类似的东西。