美文网首页JointJS
前端流程图之JointJS(一)

前端流程图之JointJS(一)

作者: 敬亭阁主 | 来源:发表于2019-04-09 20:07 被阅读0次

JointJS是一个开源的前端流程图框架,基于SVG进行绘制,目前的版本是2.2.1,同时该项目已经开始了商业化运作,商业产品名称是Rappid,因此开源代码实际上功能更新已经比较少了,只是在维护bug,新的功能都被添加到了商业产品中了。

从今天一天的研究来看,这个框架的扩展性还是非常强的,但是由于商业化的考虑,基本上有价值的扩展都需要自己来开发,但对于免费的项目来说,你还能要求什么呢?

好了,废话少说,先上个图,描述一下业务需求,然后看看如何实现吧。

基本的流程图

业务需求包括:

  1. 自动布局
  2. 上下文菜单(空白/对象)
  3. 装饰(动态修改属性)
  4. 点选对象(click事件)
  5. 对象的moveover事件显示扩展工具

自动布局已经被集成到2.2.1版本中了,只需要执行下面这行代码就可以了

joint.layout.DirectedGraph.layout(graph, { rankDir: "LR", setLinkVertices: false });

属性rankDir定义了布局的方向,缺省是TB(从上至下),这里设置为LR(从左至右)。

点选对象的实现过程有点曲折,最后发现是用的jQuery版本问题,需要使用jQuery 3.3.1以上版本。

定义对cell:pointerclick事件的回调

paper.on('cell:pointerclick', function(cellView) {
    var isElement = cellView.model.isElement();
    var message = (isElement ? 'Element' : 'Link') + ' clicked';
    console.log(message);
    cellView.trigger((isElement ? 'element' : 'link') + ":pointerclick", cellView);
});

在这里可以对cell的类型进行识别,并分别触发对应的事件。按道理,这个功能应该集成在框架里,但看来维护团队也懒得弄了,回头有时间,我提交一个PR看看,不知道有没有用。

我在element:pointerclick事件中设置了对象的背景色和边框颜色,在blank:pointerclick事件中重置了所有对象的颜色,这样就实现了点选的外在表现,实际上还需要在内部保存当前选中对象的id,这个在这里就不多说了。

paper.on('element:pointerclick', function(elementView) {
    resetAll(this);
    var currentElement = elementView.model;
    currentElement.attr('rect/stroke', 'orange')
    currentElement.attr('rect/fill', 'orange')
});
paper.on('blank:pointerclick', function() {
    resetAll(this);
});

今天先弄了这两个功能,明天继续。

相关文章

  • 前端流程图之JointJS(一)

    JointJS是一个开源的前端流程图框架,基于SVG进行绘制,目前的版本是2.2.1,同时该项目已经开始了商业化运...

  • 前端流程图之JointJS(五)

    今天是本系列的最后一篇,基本功能都已经实现了。 今天完成的功能包括: 移动画布/缩放画布 完成和require.j...

  • 前端流程图之JointJS(三)

    先上一张效果图 今天完成的功能包括 节点的deleteTool 上下文菜单(创建节点) 连接两个节点 重新布局 具...

  • 前端流程图之JointJS(二)

    先来看看paper的参数定义 其中: elementView用于定义个性化的组件渲染类,如果你希望你的组件显示得与...

  • 前端流程图之JointJS(四)

    今天的工作重点分三块: 属性窗口,用于展示和修改单个节点的属性值 Run to here(RTH)功能,任意选择一...

  • [jointjs] 自定义shape

    前面一篇写了使用jointjs实现自动布局和拖拽缩放,这篇记录一下自定义图形。 首先jointjs内置的图形有很多...

  • jointjs 入门

    刚上线的项目中用到了jointjs,之前直接不知道它的存在,一个是由于知识面不够,一方面是对拓扑图这块几乎没...

  • jointjs Demo

  • 0418

    1.前端界面与数据的连接基本实现 最近的问题:读取数据且呈现流程图,呈现流程图到UI界面的控件graphviz上 ...

  • npm 安装出错 npm ERR! request to htt

    npm 安装 jointjs时 出现 设置下npm config set strict-ssl false 就...

网友评论

    本文标题:前端流程图之JointJS(一)

    本文链接:https://www.haomeiwen.com/subject/winiiqtx.html