var property = { width: 3000, height: 3000, toolBtns: ["task", "node"], haveHead: (window.top==self), headBtns: ["new", "save"], //如果haveHead=true,则定义HEAD区的按钮 haveTool: true, //(重要)是否可编辑?????????????????????????????????? useOperStack: true, initNum: 1 }; var remark = { cursor: "指针", direct: "连线", start: "start", end: "end", task: "task", node: "decision" }; var tempData; var demo; var selectId; var selectType; var HEADTEXT={}; //bpmComponent解析后的数据容器 var startList = new Array(); var endList = new Array(); var taskList = new Array(); var subprocessList=new Array(); var decisionList = new Array(); var transmitList=new Array() //选中的start,end,task,decision的容器 var selectTask = null; var selectTransmit = null; var selectStart = null; var selectEnd = null; var selectDecision = null; var selectSubprocess=null; var haveDrag = false; $(document).ready(function() { $(document.body).append(control.dom) //url获取设置应用名,默认为env /* 再去掉,去掉 thisAppName。Lin var urlAppName = getURLParam("thisAppName"); if (urlAppName != "" || urlAppName != null) { document.getElementById("thisAppName").value = urlAppName } */ property.initLabelText = $("#fileName").val(); demo = $.createGooFlow($("#demo"), property); demo.setNodeRemarks(remark); var datas = $("#jsonData").html(); var objectKeyOption= window.parent.document.getElementById("objectKeyOption"); version=document.getElementById("version").value //先隐藏\n if(version==""){ version="0"; document.getElementById("version").value="0"; } //读取检查jaondata if(datas.length==0){datas="{objectKey:{}}"} var json = eval('(' + datas + ')'); if(json.nodes||json.lines){ alert("json数据未转换") return; } var componentData=eval("("+ $("#bpmComponentData").html()+")"); taskList=componentData.task; transmitList=componentData.transmit; subprocessList=componentData.subprocess; startList=[componentData.start]; endList=[componentData.end]; console.log(componentData); for(var i=0;i" // selects.innerHTML="" // //// 生成第一个 if(false&&kkk&&kkk.length>0){ objectKeyOption.style.display=""; for(var i=0;i0; })()){ objectKeyOption.style.display=""; //新增类别 objectKeyOption.querySelectorAll("[type=button]")[0].style.display="" //修改 objectKeyOption.querySelectorAll("[type=button]")[1].style.display="" }else{ objectKeyOption.style.display=""; //新增类别 objectKeyOption.querySelectorAll("[type=button]")[0].style.display="" //修改 objectKeyOption.querySelectorAll("[type=button]")[1].style.display="" } //删除按钮 if(window.parent){ var deleteButton=window.parent.document.querySelector("#deletebutton"); if(!deleteButton){ // deleteButton=document.createElement("input"); // deleteButton.setAttribute("type","button"); // deleteButton.setAttribute("value","删除"); // deleteButton.setAttribute("id","deletebutton"); // deleteButton.setAttribute("class","list-button"); // objectKeyOption.appendChild(deleteButton) var ce=window.parent.$("#save").clone(); ce.val("删除").attr("id","deletebutton").attr("title",""); deleteButton=ce[0]; window.parent.$("#save").before(deleteButton) } if(componentData.key.length==0){ $(deleteButton).remove(); } deleteButton.onclick=function(){ if(window.confirm("删除当前流程类别?")){ if(version!=""){ var datas = $("#jsonData").html(); var json=eval("("+datas+")"); for(var i=0;i

" + task.name + "

") demo.$tool.append("
" + task.name + "
") } //transmit for (var i = 0; i < transmitList.length; i++) { var transmit = transmitList[i]; //杨 demo.$tool.append("

" + transmit.name + "

") demo.$tool.append("
" + transmit.name + "
") } //subprocess for(var i=0;i

" + subprocess.name + "

") demo.$tool.append("
" + subprocess.name + "
") } //decision for (var i = 0; i < decisionList.length; i++) { var decision = decisionList[i]; //杨 demo.$tool.append("

" + decision.name + "

") demo.$tool.append("
" + decision.name + "
") } // //start for (var i = 0; i < startList.length; i++) { var dd=compareNodeData(startList[i],allNodes,"start"); if(dd){ modifyData=modifyData.concat(dd); } // demo.$tool.append("

" + "开始" + "

") } // //end for (var i = 0; i < endList.length; i++) { var dd=compareNodeData(endList[i],allNodes,"end"); if(dd){ modifyData=modifyData.concat(dd); } // demo.$tool.append("

" + "结束" + "

") } //分支 // demo.$tool.append("

字典

") //并发(合并分支, 动态分支foreach) //杨 demo.$tool.append("

" + "并行" + "

") /* "并行" 改为 "并行/分支"。Lin demo.$tool.append("
" + "并行" + "
") */ demo.$tool.append("
" + "并行/分支" + "
") //动态分支foreach // demo.$tool.append("

" + "动态分支" + "

") //汇合,等待 //杨 demo.$tool.append("

" + "汇合" + "

") demo.$tool.append("
" + "汇合" + "
") //连线'划线 //杨 demo.$tool.append("

" + "连线" + "

") demo.$tool.append("
" + "连线" + "
") //鼠标 //杨 demo.$tool.append("

" + "鼠标" + "

") demo.$tool.append("
" + "鼠标" + "
") ////////////////////////// //头信息初始化 setTimeout(function(){ var allNodes=demo.exportData().nodes; if(modifyData.length>0){ for(var i=0;i"; HEADTEXT={ bpm_name:componentData.bpm.bpm_name, bpm_desc:componentData.bpm.bpm_desc, bpm_type:componentData.bpm.bpm_type, bpm_agree:componentData.bpm.bpm_agree, bpm_reject:componentData.bpm.bpm_reject }; // $("#head_text").html(headtext); ////////////////////////////// //绑定iframe外按钮保存和发布 if (window.parent.document.getElementById("save") != null) { window.parent.document.getElementById("save").onclick = function() { demo.onBtnSaveClick(); } } if(window.parent.document.getElementById("deployment")!=null){ window.parent.document.getElementById("deployment").onclick = function() { // head_confirm(); var version=document.getElementById("version").value; var datas = $("#jsonData").html(); var json = eval('(' + datas + ')'); if(json.nodes||json.lines){ alert("json数据未转换") return; } var trans=new translate(); for(var i=0;i

") //.append("") //.append("name:") //选中分支节点decision,显示分支线 if (node.type == "node"||node.type == "fork") { function timeDelay() { var thisselectId = selectId; return function() { if (haveDrag == false) { initDecisionLine($("#" + thisselectId)); } haveDrag = false; }; } // 定时触发: // var aa = timeDelay(); setTimeout(timeDelay(), 100) co .append("

one thing left to do!

") } //任务节点task if (node.type == "task") { // $(".decisionLine").remove(); co .append("

") } //结束节点end if (node.type == "end") { // $(".decisionLine").remove(); co .append("

") } //开始节点start if (node.type == "start") { // $(".decisionLine").remove(); co .append("

") } //点击线条line if (type == "line") { co.append("") } return true; } // console.log($("#draw_demo")) }); //确定 function control_planel_confirm() { var node_text = $("#node_text").val(); var id = selectId; var type = selectType; if (type == "node") { var node = demo.$nodeData[id]; if (node.realtype == "start") { node.service_name = $($(node_text).find("service")[0]).attr("name"); }; if (node.realtype == "end") { console.log($(node_text).length); $(node_text).each(function(index, end) { if (index == 0) { node.agree_service_name = $($(end).find("service")[0]).attr("name"); node.agree_message_title = $($(end).find("message")[0]).attr("title"); node.agree_message_content = $($(end).find("message")[0]).attr("content"); } else if (index == 1) { node.reject_service_name = $($(end).find("service")[0]).attr("name"); node.reject_message_title = $($(end).find("message")[0]).attr("title"); node.reject_message_content = $($(end).find("message")[0]).attr("content"); } }) }; if (node.realtype == "decision") { node.key = $("#p_key").val(); }; if (node.realtype == "task") { var newname = $(node_text).attr("name"); demo.$nodeDom[id].children(".span").text(newname); demo.$nodeData[id].name = newname; node.name = $(node_text).attr("name"); node.assignee = $(node_text).attr("assignee"); node.service_name = $($(node_text).find("service")).attr("name"); node.service_dest = $($(node_text).find("service")).attr("dest"); node.message_title = $($(node_text).find("message")).attr("title"); node.message_content = $($(node_text).find("message")).attr("content"); }; } if (type == "line") { if (GooFlow.prototype.useSVG != "") { demo.$lineDom[id].childNodes[2].textContent = newname; } else { demo.$lineDom[id].childNodes[1].innerHTML = newname; } demo.$lineData[id].name = newname; } // $("#control_planel").fadeOut(200).fadeIn(200); } function selectAsTask(thisdiv, index) { var e = window.event; demo.$nowType = 'task'; $(thisdiv).toggleClass("elementListSelected"); selectTask = taskList[index]; $(".elementListSelected").removeClass("elementListSelected"); $(thisdiv).addClass("elementListSelected") } function aNewTask(thisdiv, index) { var e = window.event; var selecTask=taskList[index]; var newjson={} for(var key in selecTask){ newjson[key]=selecTask[key] } var aa=getPositioin(demo.$workArea[0]); newjson.left=parseInt(e.pageX-aa.left); newjson.top=parseInt(e.pageY-aa.top); newjson.type="task"; newjson.realtype="task"; // demo.$max++; // var idd = demo.$id + "_node_" + demo.$max+""; var idd = composeId("node"); demo.addNode(idd, newjson); demo.$ghost.empty().hide(); } function selectAsTransmit(thisdiv, index) { var e = window.event; demo.$nowType = 'transmit'; $(thisdiv).toggleClass("elementListSelected"); selectTransmit = transmitList[index]; $(".elementListSelected").removeClass("elementListSelected"); $(thisdiv).addClass("elementListSelected") } function aNewTransmit(thisdiv, index) { var e = window.event; var selecTransmit=transmitList[index]; var newjson={} for(var key in selecTransmit){ newjson[key]=selecTransmit[key] } var aa=getPositioin(demo.$workArea[0]); newjson.left=parseInt(e.pageX-aa.left); newjson.top=parseInt(e.pageY-aa.top); newjson.type="transmit"; newjson.realtype="transmit"; // demo.$max++; // var idd = demo.$id + "_node_" + demo.$max+""; var idd = composeId("node"); demo.addNode(idd, newjson); demo.$ghost.empty().hide(); } function selectAsDecision(thisdiv, index) { var e = window.event; demo.$nowType = 'node'; $(thisdiv).toggleClass("elementListSelected"); selectDecision = decisionList[index]; $(".elementListSelected").removeClass("elementListSelected"); $(thisdiv).addClass("elementListSelected"); } function aNewDecision(thisdiv, index) { if(typeof index=="undefined"){ selectAsDecisionDictionary(); return } var e = window.event; var selectDecision = decisionList[index]; var newjson={} for(var key in selectDecision){ newjson[key]=selectDecision[key] } newjson.condition_name=newjson.condition_name.concat() var aa=getPositioin(demo.$workArea[0]) newjson.left = e.pageX-aa.left; newjson.top = e.pageY-aa.top; newjson.type = "node"; newjson.realtype = "decision"; // console.log(newjson.condition_name) // demo.$max++ // newjson.id = demo.$id + "_node_" + demo.$max newjson.id = composeId("node") demo.addNode(newjson.id, newjson); // console.log(newjson[id]) initDecisionLine($("#"+newjson.id),newjson.condition_name.length) } function selectAsStart(thisdiv, index) { var e = window.event; demo.$nowType = 'start'; selectStart = startList[index]; $(".elementListSelected").removeClass("elementListSelected"); $(thisdiv).addClass("elementListSelected") } function aNewStart(thisdiv, index) { var e = window.event; var selectStart = startList[index]; var newjson={} for(var key in selectStart){ newjson[key]=selectStart[key] } var aa=getPositioin(demo.$workArea[0]) newjson.left = e.pageX-aa.left; newjson.top = e.pageY-aa.top; newjson.type = "start"; newjson.realtype = "start"; newjson.name = "开始"; // demo.$max++ // newjson.id = demo.$id + "_node_" + demo.$max newjson.id=composeId("node") demo.addNode(newjson.id, newjson); } function selectAsEnd(thisdiv, index) { var e = window.event; demo.$nowType = 'end'; selectEnd = endList[index]; $(".elementListSelected").removeClass("elementListSelected"); $(".elementListSelected").removeClass("elementListSelected"); $(thisdiv).addClass("elementListSelected"); } function aNewEnd(thisdiv, index) { var e = window.event; var selectEnd = endList[index]; var newjson={} for(var key in selectEnd){ newjson[key]=selectEnd[key] } var aa=getPositioin(demo.$workArea[0]) newjson.left = e.pageX-aa.left; newjson.top = e.pageY-aa.top; newjson.type = "end"; newjson.realtype = "end"; newjson.name = "结束"; // demo.$max++ // newjson.id = demo.$id + "_node_" + demo.$max newjson.id=composeId("node") demo.addNode(newjson.id, newjson); } function selectAsLine(thisdiv) { var e = window.event; demo.$nowType = 'direct'; $(".elementListSelected").removeClass("elementListSelected"); $(thisdiv).addClass("elementListSelected"); }; function selectAsMouse(thisdiv) { var e = window.event; demo.$nowType = 'mouse'; $(".elementListSelected").removeClass("elementListSelected"); $(thisdiv).addClass("elementListSelected"); }; function selectAsFork(thisdiv) { demo.$nowType = 'fork' $(".elementListSelected").removeClass("elementListSelected"); $(thisdiv).addClass("elementListSelected"); }; function aNewFork(thisdiv){ var e = window.event; var json ={} var aa=getPositioin(demo.$workArea[0]) json.left = e.pageX-aa.left; json.top = e.pageY-aa.top; json.type = "fork"; json.realtype = "fork"; json.name = "并行"; // demo.$max++ // json.id = demo.$id + "_node_" + demo.$max json.id=composeId("node") demo.addNode(json.id, json); } function selectAsForeach(thisdiv){ demo.$nowType="foreach"; $(".elementListSelected").removeClass("elementListSelected"); $(thisdiv).addClass("elementListSelected"); } function aNewForeach(thisdiv){ var e = window.event; var json ={}; var aa=getPositioin(demo.$workArea[0]) json.left = e.pageX-aa.left; json.top = e.pageY-aa.top; json.type = "foreach"; json.realtype = "foreach"; json.name = "动态分支"; // demo.$max++ // json.id = demo.$id + "_node_" + demo.$max json.id=composeId("node") demo.addNode(json.id, json); } function selectAsJoin(thisdiv) { demo.$nowType = 'join'; $(".elementListSelected").removeClass("elementListSelected"); $(thisdiv).addClass("elementListSelected"); }; function aNewJoin(thisdiv){ var e = window.event; var json ={}; var aa=getPositioin(demo.$workArea[0]) json.left = e.pageX-aa.left; json.top = e.pageY-aa.top; json.type = "join"; json.realtype = "join"; json.name = "汇合"; // demo.$max++ // json.id = demo.$id + "_node_" + demo.$max json.id=composeId("node") demo.addNode(json.id, json); } function aNewSubrocess(thisdiv,i){ var e = window.event; var json ={}; var subprocess=subprocessList[i] for(var key in subprocess){ if(subprocess[key]){ json[key]=subprocess[key]; } } var aa=getPositioin(demo.$workArea[0]) json.left = e.pageX-aa.left; json.top = e.pageY-aa.top; json.type = "subprocess"; json.realtype = "subprocess"; // json.name = subprocess.name; // json.subprocesskey=subprocess.subprocesskey; // if(subprocess.subprocesstype){ // json.subprocesstype=subprocess.subprocesstype // } // demo.$max++ // json.id = demo.$id + "_node_" + demo.$max json.id=composeId("node") demo.addNode(json.id, json); } function selectAsSubprocess(thisdiv,i){ demo.$nowType = 'subprocess'; $(".elementListSelected").removeClass("elementListSelected"); selectSubprocess=subprocessList[i] $(thisdiv).addClass("elementListSelected"); } function selectAsDecisionDictionary() { /* 再改,去掉 thisAppName。Lin var decisionURL = $("#decisionDictionaryURL")[0].value + "&isNew=1" + '&thisAppName=' + document.getElementById("thisAppName").value; */ var decisionURL = $("#decisionDictionaryURL")[0].value + "&isNew=1"; // var pp=wd.topWindow.dhxWins.createWindow('wsd',300,300,300,300) // wd.display.showComponent({show:["wdDialog"],hide:[],url:"",dest:"bgmb_zj",title:"增加",width:300,high:200,wdDialogId:44012802,form:""}) wd.display.showComponent({ show: ["wdDialog"], hide: [], url: decisionURL, title: "字典", width: 500, high: 300, wdDialogId: 223555, form: "" }) } //双击设置 function settingIt(it) { var id = selectId; var node = demo.$nodeData[id] control.show(node) control.close=false; return; if (node.realtype == "task") { /* 再改,去掉 thisAppName。Lin var scopeURL = $("#scopeDictionaryURL")[0].value + '&thisAppName=' + document.getElementById("thisAppName").value; */ var scopeURL = $("#scopeDictionaryURL")[0].value; wd.display.showComponent({ show: ["wdDialog"], hide: [], url: scopeURL, title: "字典", width: 500, high: 300, wdDialogId: 223555, form: "" }) } if (node.realtype == "decision") { /* 再改,去掉 thisAppName。Lin var decisionURL = $("#decisionDictionaryURL")[0].value + "&isNew=0" + '&thisAppName=' + document.getElementById("thisAppName").value; */ var decisionURL = $("#decisionDictionaryURL")[0].value + "&isNew=0"; wd.display.showComponent({ show: ["wdDialog"], hide: [], url: decisionURL, title: "字典", width: 500, high: 300, wdDialogId: 223555, form: "" }) } } //头部信息确定按钮 function head_confirm(thisdiv) { // var allnode = demo.exportData()["nodes"]; // for (var key in allnode) { // for(var key2 in HEADTEXT){ // allnode[key][key2]=HEADTEXT[key2] // } // } } //复制对象 function clone(myObj) { if (typeof(myObj) != 'object') return myObj; if (myObj == null) return myObj; var myNewObj = new Object(); for (var i in myObj) myNewObj[i] = clone(myObj[i]); return myNewObj; } /////////////////////////////////////////////////////////////// //decision分支线 var decisionLineData={} function removeDecisionLine(id){ var thisLines=decisionLineData[id]; // console.log(decisionLineData[id]) if(!thisLines){return} for(var i=0;i 0) { // $(".decisionLine").remove(); // } for (var i = 0; i < num; i++) { // 计算线开始点、结束点 startpoint = [parseInt($re.css("left")) + parseInt($re.css("width")) / 2,parseInt($re.css("top")) + parseInt($re.css("height")) / 2]; endpoint=(function(i){return [ startpoint[0] + 100 *(Math.sin(Math.PI*(0.666 / num * i+1.333))), startpoint[1] + 100 *(Math.cos(Math.PI*(0.666 / num * i+1.333)))] }(i)) var line = drawDecisionLine($re[0].id + "Line" + i, startpoint, endpoint, false, false, conditions[i]); lines.push(line); // 线移动程序 line.onmousedown = function(e){ if (!e) e = window.event; var lastmouseX, lastmouseY; // 鼠标最开始位置 lastmouseX = e.pageX; lastmouseY = e.pageY; //当前line传给mousemove使用 var thisline = this; document.onmousemove = function(e) { if (!e) e = window.event; var endX, endY, startX, startY, top, left; // 当前鼠标位置 endX = e.pageX + $(".GooFlow_work")[0].scrollLeft; endY = e.pageY + $(".GooFlow_work")[0].scrollTop; // ["M", "250", "250", "L", "415.3018194483593", "609.8219781415537"] var temp = thisline.childNodes[0].getAttribute("d").split(" "); startX = parseInt(temp[1]); startY = parseInt(temp[2]); //设置位置 thisline.childNodes[0].setAttribute("d", "M " + startX + " " + startY + " L " + (endX - 63) + " " + (endY)); thisline.childNodes[1].setAttribute("d", "M " + startX + " " + startY + " L " + (endX - 63) + " " + (endY)); //文子 thisline.childNodes[2].setAttribute("x", (endX - 55 + startX) / (2)); thisline.childNodes[2].setAttribute("y", (endY + startY) / (2)); //更新鼠标最开始位置 lastmouseX = endX; lastmouseY = endY; demo.$workArea.delegate(".GooFlow_item", "mouseenter", { inthis: this }, function(e) { $(this).addClass("item_mark"); }); demo.$workArea.delegate(".GooFlow_item", "mouseleave", { inthis: this }, function(e) { $(this).removeClass("item_mark"); }); return false; } document.onmouseup = function(e) { document.onmousemove = null; // console.log(document.onmousemove); var fromId, toId; fromId = $re[0].id; // console.log(typeof($(".item_mark")[0])!="undefined"); if ((typeof($(".item_mark")[0])) != "undefined") { toId = $(".item_mark")[0].id } if (toId != null) { //添加线 // var lineId = demo.$id + "_line_" + demo.$max; var lineId = composeId("line") var newCondition = thisline.childNodes[2].innerHTML var lines = demo.exportData()["lines"]; var fromNode = demo.exportData()["nodes"][fromId]; var aa = function(){ var aa = fromNode.condition_name; for (var i = 0; i < aa.length; i++) { if (aa[i] == newCondition) { return i; } } return null; }(); if (aa != null) { fromNode.condition_name.splice(aa, 1) } var isExist = false; for (var key in lines) { if (lines[key].from == fromId && lines[key].to == toId) { var existName = lines[key].name newCondition = newCondition + "," + existName isExist = true; lineId = lines[key].id; break; } } if (isExist == false) { demo.addLine(lineId, { from: fromId, to: toId, name: newCondition, realtype: "decision" }); } else { demo.setName(lineId, newCondition, "line") } // demo.$max++; //删除这条分支线 $(thisline).remove(); } demo.$workArea.undelegate(".GooFlow_item", "mouseenter").undelegate(".GooFlow_item", "mouseleave", function() { $(".item_mark").remove(); }) } } // // 线移动结束 //提示这条线可以移动 $(line).css("cursor", "move"); $("#draw_demo")[0].appendChild(line); }; decisionLineData[$re[0].id]=lines } /////////////////////////////////////////////////////////////////////////////////////////////// //画箭头 function drawDecisionLine(id, sp, ep, mark, dash, conditionText) { var line; if (true) { line = document.createElementNS("http://www.w3.org/2000/svg", "g"); var hi = document.createElementNS("http://www.w3.org/2000/svg", "path"); var path = document.createElementNS("http://www.w3.org/2000/svg", "path"); if (id != "") line.setAttribute("id", id); line.setAttribute("from", sp[0] + "," + sp[1]); line.setAttribute("to", ep[0] + "," + ep[1]); hi.setAttribute("visibility", "hidden"); hi.setAttribute("stroke-width", 9); hi.setAttribute("fill", "none"); hi.setAttribute("stroke", "white"); hi.setAttribute("d", "M " + sp[0] + " " + sp[1] + " L " + ep[0] + " " + ep[1]); hi.setAttribute("pointer-events", "stroke"); path.setAttribute("d", "M " + sp[0] + " " + sp[1] + " L " + ep[0] + " " + ep[1]); path.setAttribute("stroke-width", 1.4); path.setAttribute("stroke-linecap", "round"); path.setAttribute("fill", "none"); if (dash) path.setAttribute("style", "stroke-dasharray:6,5"); if (mark) { path.setAttribute("stroke", "#ff3300"); path.setAttribute("marker-end", "url(#arrow2)"); } else { // path.setAttribute("stroke","#5068AE"); path.setAttribute("stroke", "black"); path.setAttribute("marker-end", "url(#arrow1)"); } line.appendChild(hi); line.appendChild(path); line.setAttribute("class", "decisionLine") line.style.cursor = "crosshair"; if (id != "" && id != "GooFlow_tmp_line") { var text = document.createElementNS("http://www.w3.org/2000/svg", "text"); line.appendChild(text); var x = (ep[0] + sp[0]) / 2; var y = (ep[1] + sp[1]) / 2; text.setAttribute("text-anchor", "middle"); text.setAttribute("x", x); text.setAttribute("y", y); line.style.cursor = "pointer"; text.style.cursor = "text"; text.innerHTML = conditionText } } else { line = document.createElement("v:polyline"); if (id != "") line.id = id; //line.style.position="absolute"; line.points.value = sp[0] + "," + sp[1] + " " + ep[0] + "," + ep[1]; line.setAttribute("fromTo", sp[0] + "," + sp[1] + "," + ep[0] + "," + ep[1]); line.strokeWeight = "1.2"; line.stroke.EndArrow = "Block"; line.style.cursor = "crosshair"; if (id != "" && id != "GooFlow_tmp_line") { var text = document.createElement("div"); //text.innerHTML=id; line.appendChild(text); var x = (ep[0] - sp[0]) / 2; var y = (ep[1] - sp[1]) / 2; if (x < 0) x = x * -1; if (y < 0) y = y * -1; text.style.left = x + "px"; text.style.top = y - 6 + "px"; line.style.cursor = "pointer"; } if (dash) line.stroke.dashstyle = "Dash"; if (mark) line.strokeColor = "#ff3300"; else line.strokeColor = "#5068AE"; } return line; } /////////////////////////////////////////////////////////////////// //工具程序 function findPosX(obj) { var curleft = 0; if (obj && obj.offsetParent) { while (obj.offsetParent) { curleft += obj.offsetLeft; obj = obj.offsetParent; } } else if (obj && obj.x) curleft += obj.x; return curleft; } function findPosY(obj) { var curtop = 0; if (obj && obj.offsetParent) { while (obj.offsetParent) { curtop += obj.offsetTop; obj = obj.offsetParent; } } else if (obj && obj.y) curtop += obj.y; return curtop; } //从URL获取参数 function getURLParam(name) { var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i"); var r = window.location.search.substr(1).match(reg); // console.log(r) if (r != null) return unescape(r[2]); return null; } function getPositioin(ele) { function findX(obj) { var curleft = 0; if (obj && obj.offsetParent) { while (obj.offsetParent) { curleft += obj.offsetLeft-parseInt(obj.style.marginLeft?obj.style.marginLeft:"0"); obj = obj.offsetParent; } } else if (obj && obj.x) curleft += obj.x; return curleft; } function findY(obj) { var curtop = 0; if (obj && obj.offsetParent) { while (obj.offsetParent) { curtop += obj.offsetTop-parseInt(obj.style.marginTop?obj.style.marginTop:"0"); obj = obj.offsetParent; } } else if (obj && obj.y) curtop += obj.y; return curtop; } var left =0-ele.parentNode.scrollLeft,top = 0-ele.parentNode.scrollTop; var win = self do { left = findX(ele) + left-win.document.body.scrollLeft top = findY(ele) + top-win.document.body.scrollTop win = win.parent; ele = win.document.getElementsByTagName("iframe")[0]; if (window.top == win) { left = findX(ele) + left top = findY(ele) + top } } while (function() { return window.top != win; }()) return { left: left, top: (top) } } function checkStartEnd(json){ var allnodes=json.nodes; var hasStartNodes=false; var hasEndNode=false; //查找是否存在start ,end for(var key in allnodes){ console.log(allnodes[key]) if(allnodes[key].realtype=="start"){ hasStartNodes=true; } if(allnodes[key].realtype=="end"){ hasEndNode=true; } } if(!hasStartNodes){ aNewNode("start"); } if(!hasEndNode){ aNewNode("end") } } function aNewNode(type){ if(type=="start"){ var selectStart = startList[0]; startList var newjson={} for(var key in selectStart){ newjson[key]=selectStart[key] } newjson.left = 200 newjson.top = 100 newjson.type = "start"; newjson.realtype = "start"; newjson.name = "开始"; newjson.id=composeId("node") demo.addNode(newjson.id, newjson); } if(type=="end"){ var selectEnd = endList[0]; var newjson={} for(var key in selectEnd){ newjson[key]=selectEnd[key] } newjson.left = 100 newjson.top = 200 newjson.type = "end"; newjson.realtype = "end"; newjson.name = "结束"; newjson.finishService="[{\"name\":\"agreeToUse\",\"desc\":\"完成后启用\",\"type\":\"agree\"}]"; newjson.id = composeId("node") demo.addNode(newjson.id, newjson); } } function jpdlFilter(filter){ var datas = $("#jsonData").html(); if(datas==""){return false} var json=eval("("+datas+")"); //搜索属性 var objectKey; if(json.objectKey==null){return false} for(var i=0;i0){ dd.id=node.id; result.push(dd); } } } } if(result.length>0)return result; }