当前位置: 首页 > news >正文

风景名胜区建设部网站网站建设及网络推广

风景名胜区建设部网站,网站建设及网络推广,phpcms 怎么做网站,网站建设的毕业论文项目背景 最近在准备开发工作流引擎相关模块,完成表结构设计后开始着手流程设计器的技术选型,调研了众多开源项目后决定基于jsplumb.js开源库进行自研开发,保证定制化的便捷性,相关效果图及项目地址如下 项目地址:ht…

项目背景

最近在准备开发工作流引擎相关模块,完成表结构设计后开始着手流程设计器的技术选型,调研了众多开源项目后决定基于jsplumb.js开源库进行自研开发,保证定制化的便捷性,相关效果图及项目地址如下

项目地址:https://gitee.com/code2roc/fast-flow-desgion

在这里插入图片描述

需求概述

流程设计器中最基础的两个元素为活动(节点)和变迁(连接),我们需要以下基础功能来配合相关接口进行工作流相关设计数据的保存/修改

  • 活动的添加/删除/移动
  • 变迁的添加/删除
  • 活动/变迁数据的全部读取
  • 根据json渲染活动与变迁

相关引入依赖如下表所示

名称功能
jsplumb.js设计器主要依赖,用于绘制相关图形与动态操作实现
jquery.jsjsplumb依赖的库
jquery-ui.jsjsplumb依赖的库,进行拖拽绑定
contextMenu.js实现右击菜单
mustache.js模板引擎渲染活动,避免字符串拼接

实现思路

活动添加

通过mustache的render方法渲染添加到html后,需要调用draggable方法让活动能够进行自由拖动,其中grid参数作用是固定每次拖拽移动最小距离,便于不同节点经过移动后对齐

<script type="text/x-mustache" id="jnode-template"><div class="jnode-panel" id="{{id}}" jnode="{{jnode}}" style="top:{{top}}px;left:{{left}}px"><div class="jnode-box {{jnodeClass}}">{{{jnodeHtml}}}</div></div>
</script>jsPlumb.draggable(id, {containment: 'parent',grid: [8, 8]
})

活动删除

通过jsPlumb.remove方法删除,会删除相关活动与连接的变迁,参数是活动id,通过右键菜单的点击事件获取属性

 callback: function(itemKey, opt, rootMenu, originalEvent) {var id = $($(opt.$trigger[0]).parent()).attr("id");jsPlumb.remove(id)
}

活动移动

在活动拖动的过程中位置进行变化,我们需要进行事件监听获取实时位置保存到数据库,通过jsPlumb.draggable方法的stop方法注册实现

    jsPlumb.draggable(id, {containment: 'parent',grid: [8, 8],stop: function(event, ui) {var nodeID = $(ui.helper.context).attr("id");moveActivity(nodeID, ui.position.left, ui.position.top);}});

变迁添加

jsplumb节点可以添加相关锚点,连接不同锚点会自动绘制连线,在实际操作时连线要求锚点对准操作精度较高不便捷,所以我们通过设置节点整体对象为连接对象,可实现鼠标放置在活动div范围内进行拖拽连线,需要注意makeSource和makeTarget需要同时执行,节点才能作为起点与终点

function registAutoConnect(id) {jsPlumb.makeSource(id, {endpoint: "Dot",anchor: "Continuous"})jsPlumb.makeTarget(id, {endpoint: "Dot",anchor: "Continuous"})
}

以上方法是手动在流程设计器中进行操作连接,如果我们通过接口获取已有数据,需要通过connect方法进行代码渲染变迁

需要注意jsplumb中connection的id为自动生成,我们需要通过setAttribute方法对canvas进行id赋值操作,才能绑定我要自己的id数据

function addConnect(id, sourceID, targetID) {var connection = jsPlumb.connect({source: sourceID,target: targetID});connection.id = idjsPlumb.setAttribute(connection.canvas, "id", connection.id)
}

通过监听connection事件我们可以知道连接添加完成,进行相关接口调用,但我们需要区分是我们通过设计器操作还是代码渲染,只要判断originalEvent是否存在,存在则是通过鼠标操作的

    jsPlumb.bind("connection", function(connInfo, originalEvent) {if (originalEvent) {}});

变迁删除

通过jsPlumb.detach方法进行变迁的删除,默认只删除变迁不删除连接的活动

function deleteConnect(id) {var connects = jsPlumb.getAllConnections();for (var i = 0; i < connects.length; i++) {var connect = connects[i];if (connect.id == id) {jsPlumb.detach(connect)}}
}

其它

代码还包含很多其他细节,如下所示,就不详细赘述了,大家可以仔细阅读,项目中包含了详细的注释

  • 连接添加控制,例如开始节点不能为连接终点,结束节点不能为起点
  • 导入默认配置控制连线样式
  • 各种操作模式指针变换及交互模式
  • 流程图整体移动
  • 活动/变迁的选中效果及点击空白处取消
http://www.tj-hxxt.cn/news/79770.html

相关文章:

  • 网站图怎么做会高清图片兰州做网站的公司
  • 网站建设全包最全的百度网盘搜索引擎
  • 国内外画画做的好网站口碑推广
  • 做网站哪里便宜搜狗seo软件
  • 学习网站开发体会与感想需要推广的app在哪里找
  • 江苏建设行政主管部门网站地推项目发布平台
  • 提高学历去哪里报名正规优化设计答案六年级上册语文
  • 建设网站 程序员的提成网站关键词优化方法
  • wordpress 百度站长南京谷歌优化
  • 网站主办者和所有者区别长沙专业网站制作
  • 聊城网站定制免费接单平台
  • 智慧团建网站注册上海百度公司总部
  • 网站换代理免费python在线网站
  • 南京手机网站设计专业百度怎么推广自己的店铺
  • 济南seo网站优化网站运营推广
  • 网站信息安全保障制度建设情况企业网站管理系统
  • 河北网站备案手机号码短信核验大数据营销推广精准粉
  • 网站免费建站厂商定制湖南正规关键词优化首选
  • 怎么做简单的网站首页百度推广按效果付费是多少钱
  • asp.net企业网站源码可以免费网络推广网站
  • 国外做地铁设计的公司网站百度新站关键词排名
  • 做同城购物网站有什么优势吗关键词的选取原则
  • 怎么自己优化网站无锡网站建设优化公司
  • 茶叶价格网站建设seo运营工作内容
  • 网站交换链接的网络营销意义新冠不易感染三种人
  • 自己建设网站需要审核吗深圳网站seo服务
  • 律师事务所网站设计旅游推广赚佣金哪个平台好
  • 公司网站建设网络推广网络营销模式案例
  • 黑科技赚钱软件石家庄seo推广
  • 公司如何建设一个网站线上怎么做推广和宣传