版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、(原创)工作流程图的树形展示-使用qunee插件实现这里只介绍如何用qunee来实现树形图。和WorkFlowDemo中的流程图结构如下(局部放大):流程图结构如下(完整):节点数据是json格式,举例如下:vartest=children:children:children:null,codeDescription:2级节点,nodeLevel:2,nodeName:test1_1,nodeOrder:0,codeDescription:1级节点,nodeLevel:1,nodeName:test1,nodeOrder:0,codeDescription:根节点,nodeLevel:0,no
2、deName:test0,nodeOrder:0完整的html代码,每一部分都有较详细的注释。vmetacharset=utf-8/QuneeTreelayoutDemo20160801update!-指定一个div元素,初始化qunee画布vargraph=newQ.Graph(root_box);vargraph=newQ.Graph(root_box);/graph.originAtCenter为false时表示设置左上角为坐标原点graph.originAtCenter=false;创建一个数组存放所有的子孙节点varallChildren=;用来记录最大层级varmaxLevel=1
3、;递归函数,将传入的数据创建成树形图的节点functionloadDatas(json,parent,layoutType)json.forEach(function(data)获取最深的层级if(data.nodeLevelmaxLevel)maxLevel=data.nodeLevel;varnode=createNode(data.nodeName,parent,layoutType);allChildren.push(node);if(layoutType=Q.Consts.LAYOUT_TYPE_EVEN_VERTICAL)node.vGap=20;设置孩子布局的垂直间距,hGap为
4、水平间距递归创建所有节点if(data.children)loadDatas(data.children,node,Q.Consts.LAYOUT_TYPE_EVEN_VERTICAL););传入根节点(根节点属性中包含了所有子孙节点),生成树形图functioninit(rootNode)/建立一个数组用于存放主流程节点varnodeL1Arr=;/在本demo中,rootNode根节点不展示,根节点下的第一级节点作为主流程节点if(rootNode.children)rootNode.children.forEach(function(nodeL1)varnewNode=createSte
5、p(nodeL1.nodeName);nodeL1Arr.push(newNode);if(nodeL1.children)loadDatas(nodeL1.children,newNode,Q.Consts.LAYOUT_TYPE_EVEN_VERTICAL););elsevarnewNode=createNode(没有流程信息,,);设置树形图布局setLayout(nodeL1Arr);创建单个流程节点functioncreateNode(name,from,layoutType)varnode=graph.createText(name);node.setStyle(Q.Styles.
6、LABEL_BORDER,1);node.setStyle(Q.Styles.LABEL_BORDER_STYLE,#1D4876);node.setStyle(Q.Styles.LABEL_FONT_SIZE,16);node.setStyle(Q.Styles.LABEL_PADDING,5);node.setStyle(Q.Styles.LABEL_SIZE,newQ.Size(70,35);node.setStyle(Q.Styles.LABEL_BACKGROUND_COLOR,#FFF);节点是否可见node.visible=true;节点是否能用鼠标拖动false为不能拖动nod
7、e.movable=falsenode.movable=falsenode.1ayoutType=layoutType;if(from)node.parent=from;node.host=from;if(frominstanceofQ.Node)创建连线varnodeEdge=graph.createEdge(from,node);if(from.layoutType=Q.Consts.LAYOUT_TYPE_EVEN_VERTICAL)nodeEdge.edgeType=Q.Consts.EDGE_TYPE_VERTICAL_HORIZONTAL;elsenodeEdge.edgeType
8、=Q.Consts.EDGE_TYPE_ORTHOGONAL;returnnode;创建主流程节点functioncreateStep(label)varnode=graph.createText(label);node.setStyle(Q.Styles.LABEL_BORDER,1);node.setStyle(Q.Styles.LABEL_BACKGROUND_COLOR,#FFF);node.setStyle(Q.Styles.LABEL_BORDER_STYLE,#1D4876);node.setStyle(Q.Styles.LABEL_FONT_SIZE,20);node.setS
9、tyle(Q.Styles.LABEL_SIZE,newQ.Size(120,50);node.visible=true;/节点是否能用鼠标拖动,false为不能拖动node.movable=falsenode.layoutType=Q.Consts.LAYOUT_TYPE_EVEN_VERTICAL;/node.vGap=30;/设置孩子布局的垂直间距,hGap为水平间距returnnode;创建连线functioncreateEdge(from,to,lineWidth,dash)varedge=graph.createEdge(from,to);edge.setStyle(Q.Style
10、s.EDGE_WIDTH,lineWidth|3);edge.setStyle(Q.Styles.EDGE_COLOR,#1D4876);if(dash)edge.setStyle(Q.Styles.EDGE_LINE_DASH,10,10);returnedge;调整树状图各分支的位置,形成美观的对称结构functionmoveNodes()varrightBound=0;/节点右边界varrightX=0/用于记录最右侧节点的横坐标varrightElementName;/边界节点的名称varprevElement;/前主流程vardx=20*maxLevel;/移动基数20乘以获取的最大
11、层级graph.graphModel.forEachByTopoBreadthFirstSearch(function(element)if(elementinstanceofQ.Node)每次移动,整个父子节点链的线条都会移动graph.moveElements(element,dx,0);if(!element.parent)如果节点横坐标小于上一节点的右边界,则移动节点,避免重合if(element.x=rightX)更新最右侧节点横坐标的值rightX=element.x;/rightX为最右侧节点的横坐标,加上该节点边框的宽度,得到最右侧边界的位置rightBound=rightX+
12、graph.getUIBounds(element).width;获取最右侧节点的名称,用于打印测试rightElementName=;);graph.visibleFilter=function(node)returnnode.visible!=false;varnodeClicked;/设置点击事件graph.onclick=function(evt)nodeClicked=evt.getData();if(!nodeClicked)Q.forEach(allChildren,function(p)p.visible=true;p.invalidateVisibility();)graph
13、.invalidate();return;点击主流程节点,只显示子孙节点,隐藏其他节点/*if(!nodeClicked.parent&!nodeClicked.from)Q.log(nodeClicked);Q.forEach(allChildren,function(p)varvisible=p.isDescendantOf(nodeClicked);p.visible=visible;p.invalidateVisibility();)graph.invalidate();*/点击主流程节点,显示或隐藏其子孙节点if(!nodeClicked.parent&!nodeClicked.fr
14、om&nodeClicked.hasChildren()setAllChildren(nodeClicked);graph.invalidate();显示或隐藏子孙节点的函数functionsetAllChildren(parent)Q.forEach(parent.children,function(p)p.visible=!p.visible;p.invalidateVisibility();if(p.hasChildren()setAllChildren(p);)设置树形图布局varlayouter=newQ.TreeLayouter(graph);functionsetLayout(nodeLIArr)layouter.layoutType=Q.Consts.LAYOUT_TYPE_EVEN_HORIZONTAL;/qunee新特性,节点连线能够等长排列layouter.parentChildrenDirection=Q.Consts.DIRECTION_BOTTOM_RIGHT;layouter
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 纸娃娃课件教学课件
- 2024年古建筑亮化保护工程协议
- 2024年地摊经济创业项目经营权转让协议
- 2024个人助学贷款合作合同
- 2024年度4S店汽车销售与金融投资合同
- 2024丙公司与丁公司就煤炭废料处理服务的合同
- 2024年度腻子产品生产线改造合同
- 2024年己方区块链技术研究与应用合作协议
- 2024年度建筑工程安全防护合同
- 2024年度新能源汽车推广销售合同
- 中药材技术创新中心的可行性研究报告
- 有机合成化学(山东联盟)知到章节答案智慧树2023年青岛科技大学
- 商标法题库1(答案)
- TMF自智网络白皮书4.0
- 电视剧《国家孩子》观影分享会PPT三千孤儿入内蒙一段流淌着民族大爱的共和国往事PPT课件(带内容)
- 所水力除焦设备介绍
- 改革开放英语介绍-课件
- pet考试历届真题和答案
- 《企业员工薪酬激励问题研究10000字(论文)》
- 大学英语三级B真题2023年06月
- GB/T 7909-2017造纸木片
评论
0/150
提交评论