前言

这是我第一次写博客,心情还是有点小小的激动!这次主要分享的是用jsPlumb,做一个可以给用户自定义拖拉的流程图,并且可以序列化保存在服务器端。

我在这次的实现上面做得比较粗糙,还有分享我在做jsPlumb流程图遇到的一些问题。

准备工作

制作流程图用到的相关的脚本:

1

2

3

jsPlumb-1.6.2-min.js在官网上下载,这里用得是最新版本。jquery-1.11.1.min.js等脚本百度上都能找到,这里就不多说了。

css样式在官网里也可以搜到,这里我就贴出来。

1 .node{

2 box-shadow:2px 2px 19px #aaa;

3 -o-box-shadow:2px 2px 19px #aaa;

4 -webkit-box-shadow:2px 2px 19px #aaa;

5 -moz-box-shadow:2px 2px 19px #aaa;

6 -moz-border-radius:0.5em;

7 border-radius:0.5em;

8 opacity:0.8;

9 filter:alpha(opacity=80);

10 border:1px solid #346789;

11 width:150px;

12 /*line-height: 40px;*/

13 text-align:center;

14 z-index:20;

15 position:absolute;

16 background-color:#eeeeef;

17 color:black;

18 padding:10px;

19 font-size:9pt;

20 cursor:pointer;

21 height:50px;

22 line-height:50px;

23 }

24 .radius{

25 border-radius:25em;

26 }

27 .node:hover{

28 box-shadow:2px 2px 19px #444;

29 -o-box-shadow:2px 2px 19px #444;

30 -webkit-box-shadow:2px 2px 19px #444;

31 -moz-box-shadow:2px 2px 19px #444;

32 opacity:0.8;

33 filter:alpha(opacity=80);

34 }

View Code

这里还有提到一点,jsPlumb官网上的api全是英文的,博主我从小英文就不好,所以看里面的doc非常费劲,一般都是一边开着金山翻译,

一边看着文档,英语好的略过这段。

正文

言归正传,现在开始我们的jsPlumb流程图制作,下面先附上流程图。

功能

根据客户的要求,我们要完成的功能点有以下几点:

1.支持将左边的div层复制拖拉到右边中间的层,并且左边同一个div拖拉没有次数限制,如果只能拖拉一次,做这个东西就没有什么意义了。

2.拖拉到中间的div层可以拖动,拖动不能超过中间div的边框。

3.拖动到中间的层,四周能有4个endpoint点,可供客户连线。

4.能支持删除多余的div的功能。

5.支持删除连接线。

6.能双击修改流程图的文字。

7.能序列化保存流程图。

操作

下面我们根据功能开始制作:

1.拖拉jsPlumb其实是提供draggable方法,和droppable方法官网里有介绍, 但是我这里用得是jquery里的draggable()和droppable()。

1

2

开始

3

流程

4

判断

5

结束

6

7

8

9

拖拉到此区域

10

11

12

13

View Code

1 $("#left").children().draggable({2 helper: "clone",3 scope: "ss",4 });

helper:"clone"表示复制,scope:"ss"是一个标识为了判断是否可以放置,主要用于droppable方法里面也设置这个标识来判断拖放到的地方,

除非两个都不写scope,可以随便拖放,但是会有一个问题,每次我从左边拖东西到右边,我再拖到的时候就会有div拖到不了,所以最好设置

scope:"//里面的值随便,只是一个标识"。

下面是完整的拖放:

1 $("#left").children().draggable({2 helper: "clone",3 scope: "ss",4 });5 $("#right").droppable({6 scope: "ss",7 drop: function (event, ui) {8 var left = parseInt(ui.offset.left - $(this).offset().left);9 var top = parseInt(ui.offset.top - $(this).offset().top);10 var name = ui.draggable[0].id;11 switch (name) {12 case "node1":13 i++;14 var id = "state_start" + i;15 $(this).append('' + $(ui.helper).html() + '

');16 $("#" + id).css("left", left).css("top", top);17 jsPlumb.addEndpoint(id, { anchors: "TopCenter" }, hollowCircle);18 jsPlumb.addEndpoint(id, { anchors: "RightMiddle" }, hollowCircle);19 jsPlumb.addEndpoint(id, { anchors: "BottomCenter" }, hollowCircle);20 jsPlumb.addEndpoint(id, { anchors: "LeftMiddle" }, hollowCircle);21 jsPlumb.draggable(id);22 $("#" + id).draggable({ containment: "parent" });23 doubleclick("#" + id);24 break;25 case "node2":26 i++;27 id = "state_flow" + i;28 $(this).append("

jsplumb拖线_jsPlumb插件做一个模仿viso的可拖拉流程图相关推荐

  1. jsPlumb插件做一个模仿viso的可拖拉流程图

    前言 这是我第一次写博客,心情还是有点小小的激动!这次主要分享的是用jsPlumb,做一个可以给用户自定义拖拉的流程图,并且可以序列化保存在服务器端. 我在这次的实现上面做得比较粗糙,还有分享我在做j ...

  2. jsplumb拖线_jsPlumb系列问题:请问jsPlumb渲染出来之后线条没有连接节点?需要拖动之后才连上...

    请问下,为什么这样写出来后的jsPlumb图表是这个样子的 JS是这样的: init: function() { // 初始化流程图配置 jsPlumbToolkit.ready(function ( ...

  3. jsplumb拖线_jsPlumb开发入门教程(实现html5拖拽连线)

    jsPlumb是一个强大的JavaScript连线库,它可以将html中的元素用箭头.曲线.直线等连接起来,适用于开发Web上的图表.建模工具等.它同时支持jQuery+jQuery UI.MooTo ...

  4. jsplumb拖线_利用jsPlumb实现基于Html5拖拽连线

    jsPlumb是一个强大的JavaScript连线库,它可以将html中的元素用箭头.曲线.直线等连接起来,适用于开发Web上的图表.建模工具等.它同时支持jQuery+jQuery UI.MooTo ...

  5. jsplumb拖线_基于jsplumb插件制作可拖拽、保存流程图、重绘保存后的流程图总结...

    1.重点参考博文 https://blog.csdn.net/j_bean/article/details/78092647 2.关键点总结 1)实现可视区域图形画满后,拖动整个画布的效果 a.最好不 ...

  6. jsplumb拖线_基于 jsPlumb 的流程图编辑器的实现 (二,连接线的操作)

    连接线支持单击选中,backspace 和 delete 可删除:双击可以为连接线添加 label. 完整代码: /** * 单击删除连线 * */ clickLine:function(){ var ...

  7. 慢慢做一个模仿天猫网站-3

    所谓的公共页面,即每个页面都有内容. 比如页头,页脚还有搜索框. 步骤 1 : 公共页面 所谓的公共页面,即每个页面都有内容. 比如页头,页脚还有搜索框. 这样的页面,又叫做include文件.在真正 ...

  8. Vue中利用moment.js(时间格式化插件)做一个倒计时组件

    moment.js 文档:https://momentjs.com/docs/#/-project-status/ 1.使用npm安装moment npm install moment --save ...

  9. [Js插件]使用JqueryUI的弹出框做一个“炫”的登录页面

    引言 查看项目代码的时候,发现项目中用到JqueryUi的弹出框,可拖拽,可设置模式对话框,就想着使用它弄一个登录页面. 弹出框 在Jquery Ui官网可定制下载弹出框,下载和弹出框下载相关的js文 ...

最新文章

  1. 改变shell read命令的隔符
  2. 台式计算机l小时耗电,电脑一天的耗电量是多少?不算不知道 一算吓一跳!
  3. JavaScript知识概要
  4. spring整合web
  5. 测试用例组织结构_用例和组织结构
  6. 什么是数据的表分区(文章附上Server 2005分区实施方案)
  7. java qq在线客服,Java获得腾讯QQ在线状态(.net webservice) | 学步园
  8. 求解最大公因子(JAVA辗转相除法)、python的最大公因子,最小公倍数
  9. ubuntu上 grafana + influxdb + telegraf 安装配置
  10. (转)Spring整合Jpa
  11. Oracle 导出DMP
  12. 一个五年Java程序员的从业总结,献给还在迷茫中的你
  13. NSIS 第一个安装程序
  14. redhat server 5.4 64 bit 下安装 RealTek RTL8111E 网卡
  15. python复数运算程序_python复数及计算法则
  16. OpenGL核心技术之法线贴图
  17. 计算机在生物技术的应用论文,计算机技术在生物学中的应用
  18. EntityFramework 的5种状态-简记
  19. 黑马点评--附近商铺
  20. 软件测试内容全貌——全景图 (1)

热门文章

  1. 【可乐荐书】Python自动化办公应用大全(ChatGPT版):从零开始教编程小白一键搞定烦琐工作
  2. 弘辽科技:淘宝开店进货一般进多少款?开店要多少钱?
  3. openSuse的安装步骤
  4. Debug命令详细总结
  5. CMMI3.0标准颁布,CMMI认证难度又提升了
  6. ulimit命令的使用
  7. 圣诞节程序c语言,windows编程入门二:圣诞节的礼物——从“屏幕飘雪”程序说起...
  8. phpcms模板生成原理
  9. 微信转发链接不显示图片和描述文字
  10. r语言进行go富集分析_GOrilla-一个在线GO富集分析的网站