JavaScript - Backbone.js应用程序中的交互式图表

时间:2013-02-24 15:10:17

标签: backbone.js raphael vector-graphics jsplumb sankey-diagram

背景:我目前正在使用JavaScript开发客户端,使用JavaScript,jQueryBackbone.js(这些是提议者所必需的)。<登记/> 这是一个以图形模式可视化和编辑数据的应用程序(主要通过表示数据的交互式图表)。

术语:所述数据采用多个文档的格式,每个文档都包含项目列表
出于此问题的目的,请将项目由标识符文本描述链接组成其他文档中的项目。链接应该是对称的(当且仅当i1 -> i2也存在时)存在i2 -> i1

当前目标:在此阶段,应用程序应该能够读取两个文档,并排显示两个列表,然后绘制线条,连接两个文档之间的项目,根据它们链接
这些行应该是可编辑的。换句话说,用户应该能够创建新的链接,或删除现有链接(反映项目模型的更改)。

这些文件可能有点长,比如几十个项目(在现实场景中可能有几百个)。当然,页面将是可滚动的,以允许用户查看所有内容。

另外,为了方便用户,应该有一个滑块来缩放视图(允许放大/缩小效果,因此用户可以获得全局和< em> local 视图,后者更适合编辑,前者用于分析) 此外,应允许用户隐藏特定项目(当项目有许多链接时有用,创建视觉垃圾)。

我设法做了什么:

  • 读取数据并将其映射到Backbone模型和集合;
  • 并排显示两个文档(Backbone视图),带项目连接;
  • 允许在这些连接上进行交互(拖放以创建行,单击以删除),反映Backbone模型上的更改;
  • 隐藏特定项目;
  • 比例效果。

我在遇到SVG之后使用jsPlumb实现了此目的。

手头的问题:应用程序仍然需要调整(强调缩放效果)。无论如何,我发现jsPlumb很舒服。但是,当使用滑块时,渲染性能似乎有点缺乏(滑块的步长可能太小,因此会触发太多事件)。

支持者建议我尝试使用Sankey图表来表示这种数据。他们还建议我根据Sankey by tamc尝试Raphaël.js 当然,视觉因素也是有贡献的。

我的问题:此库与Backbone的兼容性是否良好?可能,如果我使用生成的SVG元素作为Backbone视图的元素 此外,两者中的任何一个都具有显着的渲染性能优势吗?

最后一点,是否有其他更适合这种情况的库,值得重写应用程序,我可能会向支持者建议?

1 个答案:

答案 0 :(得分:3)

项目正在进行中,我最终使用了Sankey by tamc,并使用了我自己的一些额外工作,以便更好地适应这种特殊情况。

enter image description here