diff --git a/com.actionsoft.apps.coe.pal/web/com.actionsoft.apps.coe.pal/lib/designer/scripts/diagraming/designer.core.debug.js b/com.actionsoft.apps.coe.pal/web/com.actionsoft.apps.coe.pal/lib/designer/scripts/diagraming/designer.core.debug.js index 919f3bff..48556b06 100755 --- a/com.actionsoft.apps.coe.pal/web/com.actionsoft.apps.coe.pal/lib/designer/scripts/diagraming/designer.core.debug.js +++ b/com.actionsoft.apps.coe.pal/web/com.actionsoft.apps.coe.pal/lib/designer/scripts/diagraming/designer.core.debug.js @@ -4686,7 +4686,11 @@ var Designer = { if (l == "" && o == "") { continue } - m(jjj, l, o) + if(o == '') { + m(jjj, l) + } else { + m1(jjj, l, o) + } } } } @@ -4711,7 +4715,135 @@ var Designer = { m(j, l, o)*/ } - function m(c, y, x) { + + // 分割字符 + function getStrLines(text,context,maxWidth) { + let words = text.split(' ') + let lines = []; + let line = '' + for (let n = 0; n < words.length; n++) { + let testLine = line + words[n] + ' ' + let metrics = context.measureText(testLine) + let testWidth = metrics.width + if (testWidth > maxWidth && n > 0) { + lines.push(line.trim()) + line = words[n] + ' ' + } else { + line = testLine + } + } + lines.push(line.trim()) + return lines + } + + function getTextWidth(innerText,fontSize,fontFamily){ + let hiddenDiv = document.createElement('div') + hiddenDiv.style.visibility = 'hidden' + hiddenDiv.style.position = 'absolute' + hiddenDiv.style.whiteSpace = 'nowrap' + hiddenDiv.style.font = fontSize + hiddenDiv.style.fontFamily = fontFamily + hiddenDiv.innerText = innerText + document.body.appendChild(hiddenDiv) + let textWidth = hiddenDiv.offsetWidth + document.body.removeChild(hiddenDiv) + return textWidth + } + function m(info,text) { + let horizontal = info.horizontal // 水平位置 + let vertical = info.vertical // 垂直位置 + let textWidth = getTextWidth(text,'12px',i.fontStyle.fontFamily) + let textBox = $("
" + text + "
").appendTo($("#" + i.id)) + let cssObj = { + 'position': 'absolute', + 'left': 0, + 'top': 0, + 'width': textWidth + 'px', + 'font-size': '12px', + 'font-family': i.fontStyle.fontFamily, + 'word-break': 'normal', + 'color': '', + } + if(textWidth > i.props.w) { + cssObj.width = i.props.w + 'px' + if(i.props.w < 100) { + cssObj.width = '100px' + } + } + + if (info.type == "link") { + cssObj.color = "#4183C4" + } else { + cssObj.color = "#333" + } + if (info.showType == "text" ||info.showType == "attr" ) { + cssObj.color = info.color + } + textBox.css(cssObj) + // 缩放旋转 + let angle = i.props.angle + let newAngle = Math.round(angle / (Math.PI * 2) * 360) + let transform = "rotate(" + newAngle + "deg) scale(" + Designer.config.scale + ")" + textBox.css({ + "-webkit-transform": transform, + "-ms-transform": transform, + "-o-transform": transform, + "-moz-transform": transform, + "transform-origin": "top left" + }) + let textBoxWidth = textBox.width() + let textBoxHeight = textBox.height() + let left = 0,top = 0 + switch (horizontal) { + case 'mostleft': // 左外边 + left = -textBoxWidth - 2 + break; + case 'left': // 左内边 + left = 2 + break; + case 'center': // 中间 + left = i.props.w / 2 - textBoxWidth / 2 + break; + case 'right': // 右内边 + left = i.props.w - textBoxWidth - 2 + break; + case 'mostright': // 右外边 + left = i.props.w + 2 + break; + } + switch (vertical) { + case 'mosttop': + top = -textBoxHeight + break; + case 'top': + top = 0 + break; + case 'middle': + top = i.props.h / 2 - textBoxHeight / 2 + break; + case 'bottom': + top = i.props.h - textBoxHeight + break; + case 'mostbottom': + top = i.props.h + break; + } + let g = { + x: left, + y: top, + w: textBoxWidth, + h: textBoxHeight + } + let G = Utils.getRotatedBox(g, i.props.angle, n) + let d = (G.x + (i.props.x - k.x) + 10).toScale() + let e = (G.y + (i.props.y - k.y) + 10).toScale() + textBox.css({ + left: d, + top: e, + }) + } + + function m1(c, y, x) { if (1 + 1 == 3) { // if (c.showType == 'icon' && x.indexOf("&#x") >= 0) {// 图标重构 var h = c.horizontal; @@ -4918,6 +5050,22 @@ var Designer = { w: D, h: a }; + + if(D > i.props.w) { + let tempShapeWidth = i.props.w + if (tempShapeWidth < 100) { + tempShapeWidth = 100 + } + if(y.split(' ').length == 1) { + g.w = tempShapeWidth + 10 + g.h = Math.ceil(D / tempShapeWidth) * 15 + } else { + let lineLength = getStrLines(y,b,tempShapeWidth).length + g.w = tempShapeWidth + g.h = lineLength * 15 + } + } + var G = Utils.getRotatedBox(g, i.props.angle, n); H.attr({ width: G.w.toScale(), @@ -4955,24 +5103,39 @@ var Designer = { if (tempShapeWidth < 100) { tempShapeWidth = 100; } - H[0].width = tempShapeWidth + 10; - H[0].height = Math.ceil(D / tempShapeWidth) * 10 + 15; - for (var v = 0; v < Math.ceil(D / tempShapeWidth); v++) { - var tempL = (v + 1) * tempShapeWidth; - var tempX = 0; - if (c.showType == "text") { - b.fillStyle = "#696969"; + let words = y.split(' ') + if (words.length == 1) { + for (var v = 0; v < Math.ceil(D / tempShapeWidth); v++) { + var tempL = (v + 1) * tempShapeWidth; + var tempX = 0; + if (c.showType == "text") { + b.fillStyle = "#696969"; + } + if (c.showType == "attr") { + b.fillStyle = "#191970"; + } + var tempY = a / 2 + v * 12; + if (tempL < D) { + b.fillText(y.substring(v * tempShapeWidth / (D / y.length), tempL / (D / y.length)), tempX, tempY); + } else { + b.fillText(y.substring(v * tempShapeWidth / (D / y.length), D / (D / y.length)), tempX, tempY); + } } - if (c.showType == "attr") { - b.fillStyle = "#191970"; - } - var tempY = a / 2 + v * 12; - if (tempL < D) { - b.fillText(y.substring(v * tempShapeWidth / (D / y.length), tempL / (D / y.length)), tempX, tempY); - } else { - b.fillText(y.substring(v * tempShapeWidth / (D / y.length), D / (D / y.length)), tempX, tempY); + } else { + let lines = getStrLines(y,b,tempShapeWidth); + for (let j = 0; j < lines.length; j++) { + var tempX = 0; + var tempY = a / 2 + j * 12 + if (c.showType == "text") { + b.fillStyle = "#696969"; + } + if (c.showType == "attr") { + b.fillStyle = "#191970"; + } + b.fillText(lines[j], tempX, tempY) } } + if (h == "mostleft") { d = -tempShapeWidth + tempShapeWidth * 0.2; H.css({ @@ -5028,7 +5191,7 @@ var Designer = { }); } if (h == "right") { - // d = i.props.w - D; + d = (i.props.w - D + 4).toScale(); H.css({ left: d, top: e diff --git a/com.actionsoft.apps.coe.pal/web/com.actionsoft.apps.coe.pal/lib/designer/scripts/diagraming/designer.core.js b/com.actionsoft.apps.coe.pal/web/com.actionsoft.apps.coe.pal/lib/designer/scripts/diagraming/designer.core.js index d45ef21e..8c067d0a 100755 --- a/com.actionsoft.apps.coe.pal/web/com.actionsoft.apps.coe.pal/lib/designer/scripts/diagraming/designer.core.js +++ b/com.actionsoft.apps.coe.pal/web/com.actionsoft.apps.coe.pal/lib/designer/scripts/diagraming/designer.core.js @@ -1 +1 @@ -Schema.init(!0),Schema.initMarkers(),$(function(){if("trial"==role?Designer.status="demo":"viewer"==role?Designer.status="readonly":"running"==role&&(Designer.status="running"),Designer.init(),UI.init(),Dock.init(),Navigator.init(),"readonly"==Designer.status)return Designer.setReadonly(!0),$("#moreShapes").hide(),void Customize.init();"demo"==Designer.status&&UI.gettingStart()});var Designer={config:{panelItemWidth:30,panelItemHeight:30,pageMargin:10,anchorSize:8,rotaterSize:9,anchorColor:"#833",selectorColor:"#833",scale:1},status:"",initialize:{initialized:!1,initLayout:function(){$(window).bind("resize.designer",function(){showPainting();var e=$(window).height()-$("#designer_header").outerHeight()-$("#designer_footer").outerHeight();$(".layout").height(e),$("#demo_signup").length&&$("#designer_layout").height(e-$("#demo_signup").outerHeight())}),$(window).trigger("resize.designer")},initModel:function(){Model.define={page:Utils.copy(Schema.pageDefaults),elements:{}},null!=definition&&null!=definition.localAttribute?Model.define.localAttribute=definition.localAttribute:Model.define.localAttribute={},null!=definition&&null!=definition.commonShapeConfig?Model.define.commonShapeConfig=definition.commonShapeConfig:Model.define.commonShapeConfig={},Model.persistence={page:Utils.copy(Schema.pageDefaults),elements:{},localAttribute:{},commonShapeConfig:{}}},initCanvas:function(){"string"==typeof Model.define.page.width&&(Model.define.page.width=parseFloat(Model.define.page.width)),"string"==typeof Model.define.page.height&&(Model.define.page.height=parseFloat(Model.define.page.height));var e=Model.define.page.width.toScale(),t=Model.define.page.height.toScale(),i=Model.define.page.backgroundColor,n=Utils.getDarkerColor(i),r=Utils.getDarkestColor(i);$("#designer_canvas").css({"background-color":"rgb("+n+")"});var s=$("#designer_grids");s.attr({width:e,height:t});var a=s[0].getContext("2d");a.clearRect(0,0,e,t);var o=Model.define.page.padding.toScale(),l=e-2*o,d=t-2*o;a.fillStyle="rgb("+i+")",a.beginPath(),a.rect(o,o,l,d),a.fill();var h=Math.round(Model.define.page.gridSize.toScale());if(h<10&&(h=10),Model.define.page.showGrid){a.translate(o,o),a.lineWidth=1,a.save();for(var p=.5,c=0;p<=d;)a.restore(),a.strokeStyle=c%4==0?"rgb("+r+")":"rgb("+n+")",a.beginPath(),a.moveTo(0,p),a.lineTo(l,p),p+=h,c++,a.stroke();for(p=.5,c=0;p<=l;)a.restore(),a.strokeStyle=c%4==0?"rgb("+r+")":"rgb("+n+")",a.beginPath(),a.moveTo(p,0),a.lineTo(p,d),p+=h,c++,a.stroke()}$("#canvas_container").css({width:e,height:t,padding:Designer.config.pageMargin}),this.initialized||($("#designer_layout").scrollTop(Designer.config.pageMargin-10),$("#designer_layout").scrollLeft(Designer.config.pageMargin-10));var u=$("#bar_list_page").children("li[ac=set_page_showgrid]");u.menuitem("unselect"),Model.define.page.showGrid&&u.menuitem("select")},initShapes:function(){$("#shape_panel").empty();for(var e=0;e

"+t.text+"

")}for(var i in $(".panel_title").unbind().bind("click",function(){$(this).parent().toggleClass("panel_collapsed")}),Schema.shapes){var n=Schema.shapes[i];if(n.attribute.visible&&"standard"!=n.category){if(("process_bpmn2"==n.category||"process.bpmn2"==n.category||"bpmn"==n.category)&&checkRunningTimeShape(n))continue;if(n.groupName)SchemaGroup.getGroup(n.groupName)[0]==i&&r(n,n.groupName);else r(n)}}function r(e,t){var i="
",n=$(i).appendTo("#panel_"+e.category);t&&n.append("
");var r=n.children()[0];n.bind("mouseenter",function(){if(!$(this).hasClass("readonly")){var t=$("#shape_thumb"),i=e.title,r=e.category;"bpmn"==e.category&&(r="process_bpmn2"),"lane"==r&&(r=methodId),r=r.replace(/_/g,"."),methodObjectDesc[r+"-"+e.name]&&(i+=":"+methodObjectDesc[r+"-"+e.name]),t.children("div").text(i);var s=t.children("canvas")[0].getContext("2d"),a={x:0,y:0,w:e.props.w,h:e.props.h,angle:e.props.angle},o=160;if(s.clearRect(0,0,o,160),e.props.w>=e.props.h?e.props.w>o&&(a.w=o,a.h=parseInt(e.props.h/e.props.w*a.w)):e.props.h>160&&(a.h=160,a.w=parseInt(e.props.w/e.props.h*a.h)),t.children("canvas").attr({width:180,height:a.h+20}),t.show(),e.props=a,s.save(),"text"!=e.name&&"umlText"!=e.name){s.globalAlpha=e.shapeStyle.alpha;var l=(180-a.w)/2;s.translate(l,10),s.translate(a.w/2,a.h/2),s.rotate(a.angle),s.translate(-a.w/2,-a.h/2),Designer.painter.renderShapePath(s,e,!0),Designer.painter.renderMarkers(s,e,!0)}else{s.translate(90,a.h/2+10),s.textBaseline="middle",s.textAlign="center";var d="";e.fontStyle.italic?d+="italic ":d+="normal ",e.fontStyle.bold?d+="bold ":d+="normal ",d+=e.fontStyle.size+"pt ",d+=e.fontStyle.fontFamily,s.font=d,s.fillStyle="rgb("+e.fontStyle.color+")",s.fillText(e.text,0,0)}s.restore();var h=n.offset().top-$("#designer_header").outerHeight()+n.height()/2-t.outerHeight()/2;h<5?h=5:h+t.outerHeight()>$("#designer_viewport").height()-5&&(h=$("#designer_viewport").height()-5-t.outerHeight()),t.css("top",h)}}).bind("mouseleave",function(){$("#shape_thumb").hide()}),Designer.painter.drawPanelItem(r,e.name)}$(".panel_box").die().live("mousedown",function(e){var t=$(this);if(!t.hasClass("readonly")){var i=t.attr("shapeName"),n=[];Designer.op.changeState("creating_from_panel");var r=null,s=null,a=$("#designer_canvas"),o=function(e){var t=$("#creating_shape_canvas"),i=$("#creating_shape_container");return 0==t.length&&(i=$("
").appendTo("#designer"),t=$("").appendTo(i)),i.css({left:"0px",top:"0px",width:$(".panel_container").width(),height:$("#shape_panel").outerHeight()}),Designer.painter.drawPanelItem(t[0],e),t}(i);$("#designer").bind("mousemove.creating",function(e){!function(e,t){$("#creating_shape_container").show();var i=Utils.getRelativePos(t.pageX,t.pageY,$("#creating_shape_container"));e.css({left:i.x-Designer.config.panelItemWidth/2,top:i.y-Designer.config.panelItemHeight/2})}(o,e)}),$("#canvas_container").bind("mousemove.create",function(e){var t=Utils.getRelativePos(e.pageX,e.pageY,a);null==r&&(r=function(e,t,i){Utils.newId();var n=Schema.shapes[e],r=t.restoreScale()-n.props.w/2,s=i.restoreScale()-n.props.h/2,a=Model.create(e,r,s);return Designer.painter.renderShape(a),a}(i,t.x,t.y),(s=$("#"+r.id)).attr("class","shape_box_creating")),s.css({left:t.x-s.width()/2+"px",top:t.y-s.height()/2+"px","z-index":Model.orderList.length}),r.props.x=t.x.restoreScale()-r.props.w/2,r.props.y=t.y.restoreScale()-r.props.h/2;var o=r.props,l=Designer.op.snapLine(o,[r.id],!0,r);l.attach?r.attachTo=l.attach.id:delete r.attachTo,s.css({left:(r.props.x-10).toScale()+"px",top:(r.props.y-10).toScale()+"px","z-index":Model.orderList.length}),n=Utils.getShapeAnchorInLinker(r),Designer.op.hideLinkPoint();for(var d=0;d=37&&t.keyCode<=40){if(null==e){var i=Utils.getSelected(),n=Utils.getFamilyShapes(i);i=i.concat(n);var r=Utils.getContainedShapes(i);i=i.concat(r);var s=Utils.getAttachedShapes(i);i=i.concat(s);var a=Utils.getOutlinkers(i);e=i.concat(a)}if(e.length>0){t.preventDefault();var o=10;t.ctrlKey&&(o=1),Utils.hideLinkerCursor(),37==t.keyCode?Designer.op.moveShape(e,{x:-o,y:0}):38==t.keyCode?Designer.op.moveShape(e,{x:0,y:-o}):39==t.keyCode?Designer.op.moveShape(e,{x:o,y:0}):40==t.keyCode&&Designer.op.moveShape(e,{x:0,y:o}),$(document).unbind("keyup.moveshape").bind("keyup.moveshape",function(){Model.updateMulti(e),e=null,$(document).unbind("keyup.moveshape"),Designer.op.hideTip(),Utils.showLinkerCursor()})}}else if(221==t.keyCode&&t.ctrlKey){var l="front";t.shiftKey&&(l="forward"),Designer.layerShapes(l)}else if(219==t.keyCode&&t.ctrlKey){l="back";t.shiftKey&&(l="backward"),Designer.layerShapes(l)}else{if(71==t.keyCode&&t.ctrlKey)t.preventDefault(),t.shiftKey?Designer.ungroup():Designer.group();else if(76==t.keyCode&&t.ctrlKey)t.preventDefault(),t.shiftKey?Designer.unlockShapes():Designer.lockShapes();else if(18==t.keyCode)Designer.op.changeState("drag_canvas");else if(27==t.keyCode)Designer.op.state?"creating_free_text"!=Designer.op.state&&"creating_free_linker"!=Designer.op.state||Designer.op.resetState():(Utils.unselect(),$(".menu.list").hide(),$(".menu").hide(),$(".color_picker").hide());else if(84!=t.keyCode||t.ctrlKey)if(73!=t.keyCode||t.ctrlKey)if(76!=t.keyCode||t.ctrlKey)if(66==t.keyCode&&t.ctrlKey){if((h=Utils.getSelectedIds()).length>0){var d=Model.getShapeById(h[0]);Designer.setFontStyle({bold:!d.fontStyle.bold}),UI.update()}}else if(73==t.keyCode&&t.ctrlKey){if((h=Utils.getSelectedIds()).length>0){d=Model.getShapeById(h[0]);Designer.setFontStyle({italic:!d.fontStyle.italic}),UI.update()}}else if(85==t.keyCode&&t.ctrlKey){if((h=Utils.getSelectedIds()).length>0){d=Model.getShapeById(h[0]);Designer.setFontStyle({underline:!d.fontStyle.underline}),UI.update()}t.preventDefault()}else if(32!=t.keyCode||t.ctrlKey)121==t.keyCode&&(t.preventDefault(),Dock.enterPresentation());else{var h;if(1==(h=Utils.getSelectedIds()).length){d=Model.getShapeById(h[0]);Designer.op.editShapeText(d)}t.preventDefault()}else $(".menu.list").hide(),Designer.op.changeState("creating_free_linker"),$("#designer_contextmenu").hide();else $(".menu.list").hide(),UI.showImageSelect(function(e,t,i){UI.insertImage(e,t,i)}),$("#designer_contextmenu").hide();else $(".menu.list").hide(),Designer.op.changeState("creating_free_text")}}),$("input,textarea,select").die().live("keydown.hotkey",function(e){e.stopPropagation()})},cancel:function(){$(document).unbind("keydown.hotkey")}},contextMenu:{init:function(){$("#designer_contextmenu").unbind("mousedown").bind("mousedown",function(e){e.stopPropagation()}),$("#designer_contextmenu").find("li:not(.devider)").unbind("click").bind("click",function(){var e=$(this);e.menuitem("isDisabled")||0!=e.children(".extend_menu").length||(Designer.contextMenu.execAction(e),Designer.contextMenu.hide())}),$("#canvas_container").unbind("contextmenu").bind("contextmenu",function(e){e.preventDefault();var t=$("#designer_canvas"),i=Utils.getRelativePos(e.pageX,e.pageY,t);Designer.contextMenu.show(i.x,i.y)})},destroy:function(){$("#canvas_container").unbind("contextmenu"),this.hide()},menuPos:{x:0,y:0,shape:null},show:function(e,t){this.menuPos.x=e,this.menuPos.y=t;var i=$("#designer_contextmenu"),n=Utils.getShapeByPosition(e,t,!1);i.children().hide(),i.children("li[ac=selectall]").show(),i.children(".devi_selectall").show(),i.children("li[ac=drawline]").show();var r=Designer.clipboard.elements.length;if(null==n)r>0&&(i.children("li[ac=paste]").show(),i.children(".devi_clip").show());else{var s=n.shape;if(this.menuPos.shape=s,s.locked)r>0&&(i.children("li[ac=paste]").show(),i.children(".devi_clip").show()),i.children("li[ac=unlock]").show(),i.children(".devi_shape").show();else{i.children("li[ac=cut]").show(),i.children("li[ac=copy]").show(),i.children("li[ac=duplicate]").show(),r>0&&i.children("li[ac=paste]").show(),i.children(".devi_clip").show(),i.children("li[ac=front]").show(),i.children("li[ac=back]").show(),i.children("li[ac=lock]").show();var a=Utils.getSelectedIds().length;a>=2&&(i.children("li[ac=group]").show(),$("#ctxmenu_align").show()),Utils.getSelectedGroups().length>=1&&i.children("li[ac=ungroup]").show(),i.children(".devi_shape").show(),1==a&&"linker"!=s.name&&s.link&&i.children("li[ac=changelink]").show(),("linker"==s.name||s.attribute.editable)&&i.children("li[ac=edit]").show(),i.children("li[ac=delete]").show(),i.children(".devi_del").show()}}i.css({display:"block","z-index":Model.orderList.length+3,left:e,top:t}),$(document).bind("mousedown.ctxmenu",function(){Designer.contextMenu.hide()})},hide:function(){$("#designer_contextmenu").hide(),$(document).unbind("mousedown.ctxmenu")},execAction:function(e){var t=e.attr("ac");if("cut"==t)Designer.clipboard.cut();else if("copy"==t)Designer.clipboard.copy();else if("paste"==t)Designer.clipboard.paste(this.menuPos.x,this.menuPos.y);else if("duplicate"==t)Designer.clipboard.duplicate();else if("front"==t)Designer.layerShapes("front");else if("back"==t)Designer.layerShapes("back");else if("lock"==t)Designer.lockShapes();else if("unlock"==t)Designer.unlockShapes();else if("group"==t)Designer.group();else if("ungroup"==t)Designer.ungroup();else if("align_shape"==t){var i=e.attr("al");Designer.alignShapes(i)}else"edit"==t?Designer.op.editShapeText(this.menuPos.shape):"delete"==t?Designer.op.removeShape():"selectall"==t?Designer.selectAll():"drawline"==t?Designer.op.changeState("creating_free_linker"):"changelink"==t&&UI.showInsertLink()}},init:function(){this.initialize.initLayout(),this.initialize.initModel(),this.initialize.initCanvas(),this.initialize.initShapes(),this.hotkey.init(),this.contextMenu.init(),Designer.op.init(),this.initialize.initialized=!0,Designer.events.push("initialized"),$("#designer_layout").on("scroll",function(){$(document).trigger("mouseup.multiselect")})},op:{init:function(){var e=$("#designer_canvas"),t=$("#canvas_container");t.unbind("mousemove.operate").bind("mousemove.operate",function(i){if(null==Designer.op.state){Designer.op.destroy();var n=Utils.getRelativePos(i.pageX,i.pageY,e),r=Utils.getShapeByPosition(n.x,n.y);if(null!=r)if("dataAttribute"==r.type);else if("linker"==r.type){t.css("cursor","pointer"),Designer.op.shapeSelectable(r.shape);var s=r.shape,a=r.pointIndex;"broken"==s.linkerType&&a>1&&a<=s.points.length?Designer.op.brokenLinkerChangable(s,a-1):null==s.from.id&&null==s.to.id&&(t.css("cursor","move"),Designer.op.shapeDraggable()),Designer.op.linkerEditable(s)}else"linker_point"==r.type?(t.css("cursor","move"),Designer.op.shapeSelectable(r.shape),Designer.op.linkerDraggable(r.shape,r.point),Designer.op.linkerEditable(r.shape)):"linker_text"==r.type?(t.css("cursor","text"),Designer.op.shapeSelectable(r.shape),Designer.op.linkerEditable(r.shape)):("shape"==r.type?r.shape.locked?(t.css("cursor","default"),Designer.op.shapeSelectable(r.shape)):(t.css("cursor","move"),Designer.op.shapeSelectable(r.shape),Designer.op.shapeEditable(r.shape),Designer.op.shapeDraggable(),r.shape.link):(t.css("cursor","crosshair"),Designer.op.shapeSelectable(r.shape),Designer.op.shapeLinkable(r.shape,r.linkPoint)),r.shape.parent?Utils.showAnchors(Model.getShapeById(r.shape.parent)):Utils.showAnchors(r.shape));else t.css("cursor","default"),Designer.op.shapeMultiSelectable()}})},cancel:function(){$("#canvas_container").unbind("mousemove.operate").css("cursor","default"),this.destroy()},destroy:function(){$("#designer_canvas").unbind("mousedown.drag").unbind("dblclick.edit").unbind("mousedown.draglinker").unbind("mousedown.select").unbind("mousedown.brokenLinker").unbind("dblclick.edit_linker"),$("#canvas_container").unbind("mousedown.link").unbind("mousedown.create_text").unbind("mousedown.drag_canvas"),$("#designer_layout").unbind("mousedown.multiselect"),Utils.hideAnchors(),$("#link_spot").hide()},state:null,changeState:function(e){this.state=e,"creating_free_text"==e?(this.destroy(),$("#canvas_container").css("cursor","crosshair"),this.textCreatable()):"creating_free_linker"==e?(this.destroy(),$("#canvas_container").css("cursor","crosshair"),this.shapeLinkable()):"drag_canvas"==e?(this.destroy(),this.canvasDraggable()):"changing_curve"==e&&this.destroy()},resetState:function(){this.state=null,$("#canvas_container").css("cursor","default")},shapeSelectable:function(e){var t=$("#designer_canvas");t.bind("mousedown.select",function(i){Designer.op.changeState("seelcting_shapes");var n=e.id,r=[];if(i.ctrlKey){r=Utils.getSelectedIds();Utils.isSelected(n)?Utils.removeFromArray(r,n):r.push(n),Utils.unselect(),r.length>0&&Utils.selectShape(r)}else Utils.selectIds.indexOf(n)<0&&(Utils.unselect(),Utils.selectShape(n));$(document).bind("mouseup.select",function(){Designer.op.resetState(),t.unbind("mousedown.select"),$(document).unbind("mouseup.select")})})},shapeDraggable:function(){var e=$("#designer_canvas"),t=$("#canvas_container");e.bind("mousedown.drag",function(i){Utils.hideLinkerCursor(),Utils.hideLinkerControls(),Designer.op.changeState("dragging");var n=Utils.getRelativePos(i.pageX,i.pageY,e),r=Utils.getSelected(),s=!0;1==r.length&&"linker"==r[0].name&&(s=!1);var a=null;s&&(a=Utils.getShapesBounding(r));var o=Utils.getFamilyShapes(r);r=r.concat(o);var l=Utils.getContainedShapes(r);r=r.concat(l);var d=Utils.getAttachedShapes(r);r=r.concat(d);var h=[];if(s)for(var p=0;p=i.x2||r.y+l.y<=i.y1||r.y+r.h+l.y>=i.y2)return $.simpleAlert("子流程内部节点只能在范围标识框内部移动","warning"),t.unbind("mousemove.drag"),void e.unbind("mousedown.drag")}}}Designer.op.moveShape(r,l),n=o,$(document).unbind("mouseup.drop").bind("mouseup.drop",function(){Model.updateMulti(r),$(document).unbind("mouseup.drop")})}}),$(document).bind("mouseup.drag",function(){Designer.op.resetState(),t.unbind("mousemove.drag"),e.unbind("mousedown.drag"),$(document).unbind("mouseup.drag"),Designer.op.hideTip(),Designer.op.hideSnapLine(),Utils.showLinkerCursor(),Utils.showLinkerControls();var i=Utils.getSelected()[0];if(i){var n=i.props,r=Model.define.page;n.x+n.w>r.width-r.padding&&(Designer.setPageStyle({width:n.x+n.w+r.padding+30}),$("#page_size_w").spinner("value",n.x+n.w+r.padding+30)),n.y+n.h>r.height-r.padding&&(Designer.setPageStyle({height:n.y+n.h+r.padding+30}),$("#page_size_h").spinner("value",n.x+n.w+r.padding+30))}"0"==isAutoSave&&($("#saving_tip").css("color","rgb(255, 0, 0)"),$("#saving_tip").text("文件已修改,未保存"))})})},shapeResizable:function(){$(".shape_controller").bind("mousedown",function(e){if(!isAdmin&&"1"==isCustomDefine)for(var t=Utils.getSelected(),i=0;i=0?u.x=o.x+o.w:c.indexOf("r")>=0?u.x=o.x:u.x=o.x+o.w/2,c.indexOf("t")>=0?u.y=o.y+o.h:c.indexOf("b")>=0?u.y=o.y:u.y=o.y+o.h/2,u=Utils.getRotated(p,u,o.angle);var y=[],f={},x=[],v=Utils.getAttachedShapes(d);d=d.concat(v);for(var m=[],b=0;b0)for(var w=0;w=0?n.w=i.x-u.x:c.indexOf("l")>=0&&(n.w=u.x-i.x),c.indexOf("b")>=0?n.h=i.y-u.y:c.indexOf("t")>=0&&(n.h=u.y-i.y),e.ctrlKey&&2==c.length?o.w>=o.h?(n.h=o.h/o.w*n.w,n.h=0?r.x=u.x+n.w:c.indexOf("l")>=0?r.x=u.x-n.w:r.x=u.x,c.indexOf("b")>=0?r.y=u.y+n.h:c.indexOf("t")>=0?r.y=u.y-n.h:r.y=u.y;var a=Utils.getRotated(u,r,o.angle),d={x:.5*u.x+.5*a.x,y:.5*u.y+.5*a.y},h=Utils.getRotated(d,u,-o.angle);if(c.indexOf("r")>=0?n.x=h.x:c.indexOf("l")>=0?n.x=h.x-n.w:n.x=h.x-n.w/2,c.indexOf("b")>=0?n.y=h.y:c.indexOf("t")>=0?n.y=h.y-n.h:n.y=h.y-n.h/2,0==n.angle)y[0],Designer.op.snapResizeLine(n,m,c);Utils.removeAnchors();for(var p=0;p"+C),Designer.op.showTip(C),$(document).unbind("mouseup.resize_ok").bind("mouseup.resize_ok",function(){_.length>0&&(y=y.concat(_)),Model.updateMulti(y),$(document).unbind("mouseup.resize_ok")})}),$(document).bind("mouseup.resize",function(){r.css("cursor","default"),Designer.op.resetState(),r.unbind("mousemove.resize"),$(document).unbind("mouseup.resize");var e=Utils.getSelected()[0];if(e){var t=e.props,i=Model.define.page;t.x+t.w>i.width-i.padding&&Designer.setPageStyle({width:t.x+t.w+i.padding+10}),t.y+t.h>i.height-i.padding&&Designer.setPageStyle({height:t.y+t.h+i.padding+10})}Designer.op.hideTip(),Utils.showLinkerCursor(),Designer.op.hideSnapLine()})})},shapeRotatable:function(){$(".shape_rotater").bind("mousemove",function(e){var t=$(this),i=e.pageX-t.offset().left,n=e.pageY-t.offset().top,r=t[0].getContext("2d");t.unbind("mousedown"),t.removeClass("rotate_enable"),r.isPointInPath(i,n)?(t.addClass("rotate_enable"),t.bind("mousedown",function(e){Utils.hideLinkerCursor(),$("#shape_text_edit").length&&$("#shape_text_edit").trigger("blur"),e.stopPropagation(),Designer.op.changeState("rotating");var t,i,n=Utils.getSelectedIds();if(1==n.length){var r=Model.getShapeById(n[0]);t=r.props,i=r.props.angle}else t=Utils.getControlBox(n),i=0;var s={x:t.x+t.w/2,y:t.y+t.h/2},a=Utils.toScale(s),o=$("#designer_canvas"),l=Utils.getSelected(),d=Utils.getAttachedShapes(l);l=l.concat(d);var h=Utils.getOutlinkers(l);l=l.concat(h);var p=i;$(document).bind("mousemove.rotate",function(e){var n=Utils.getRelativePos(e.pageX,e.pageY,o),r=Math.atan(Math.abs(n.x-a.x)/Math.abs(a.y-n.y));n.x>=a.x&&n.y>=a.y?r=Math.PI-r:n.x<=a.x&&n.y>=a.y?r=Math.PI+r:n.x<=a.x&&n.y<=a.y&&(r=2*Math.PI-r),r%=2*Math.PI;var d=Math.PI/36,h=Math.round(r/d);if((r=d*h)!=p){p=r,Designer.op.showTip(5*h%360+"°"),Designer.painter.rotateControls(t,r),Utils.removeAnchors();for(var c=r-i,u=0;u0)for(var o in Model.define.localAttribute[e])s.attributesJsonArray.push(Utils.copy(Model.define.localAttribute[e][o]));for(var l=0;l0&&(p=p.concat(i)),Model.updateMulti(p)}})})},shapeMultiSelectable:function(){var e=$("#designer_canvas"),t=$("#designer_layout");t.unbind("mousedown.multiselect").bind("mousedown.multiselect",function(i){var n=null;i.ctrlKey||Utils.unselect();var r=Utils.getRelativePos(i.pageX,i.pageY,e);Designer.op.changeState("multi_selecting"),t.bind("mousemove.multiselect",function(t){null==n&&(n=$("
").appendTo(e));var i=Utils.getRelativePos(t.pageX,t.pageY,e),s={"z-index":Model.orderList.length,left:i.x,top:i.y};i.x>r.x&&(s.left=r.x),i.y>r.y&&(s.top=r.y),s.width=Math.abs(i.x-r.x),s.height=Math.abs(i.y-r.y),n.css(s)}),$(document).unbind("mouseup.multiselect").bind("mouseup.multiselect",function(e){if(null!=n){var i={x:n.position().left.restoreScale(),y:n.position().top.restoreScale(),w:n.width().restoreScale(),h:n.height().restoreScale()},r=Utils.getShapesByRange(i);if(e.ctrlKey){var s=Utils.getSelectedIds();Utils.mergeArray(r,s)}Utils.unselect(),Utils.selectShape(r),n.remove()}Designer.op.resetState(),$(document).unbind("mouseup.multiselect"),t.unbind("mousemove.multiselect")}),t.unbind("mousedown.multiselect")})},shapeEditable:function(e){var t=$("#designer_canvas");0!=e.attribute.editable&&t.unbind("dblclick.edit").bind("dblclick.edit",function(){Designer.op.editShapeText(e),t.unbind("dblclick.edit")})},editShapeText:function(e){if("linker"!=e.name){var t=$("#shape_text_edit");0==t.length&&(t=$("").appendTo("#designer_canvas"));var i=$("#shape_text_ruler");0==i.length&&(i=$("").appendTo("#designer_canvas")),$(".text_canvas[forshape="+e.id+"]").hide();var n=e.fontStyle,r=e.getTextBlock();if("horizontal"==n.orientation){var s={x:r.x+r.w/2,y:r.y+r.h/2};r={x:s.x-r.h/2,y:s.y-r.w/2,w:r.h,h:r.w}}var a={width:r.w+"px","z-index":Model.orderList.length+2,"line-height":Math.round(1.25*n.size)+"px","font-size":n.size+"px","font-family":n.fontFamily,"font-weight":n.bold?"bold":"normal","font-style":n.italic?"italic":"normal","text-align":n.textAlign,color:"rgb("+n.color+")","text-decoration":n.underline?"underline":"none"};t.css(a),i.css(a),t.show(),r.x+=e.props.x,r.y+=e.props.y,t.val(e.text),$("#shape_text_edit").unbind().bind("keyup",function(){var s=$(this).val();i.val(s),i.scrollTop(99999);var a=i.scrollTop();t.css({height:a});r.x,r.w;var o=r.y+r.h/2,l=0,d=0,h=r.h;"middle"==e.fontStyle.vAlign?a>h?(l=o-(h=a)/2,d=0):(l=o-r.h/2,d=(r.h-a)/2,h=r.h-d):"bottom"==e.fontStyle.vAlign?a>h?(h=a,l=o+r.h/2-h,d=0):(l=o-r.h/2,d=r.h-a,h=r.h-d):(l=o-r.h/2,d=0,h=a>h?a:r.h);var p=d+h,c={x:r.x+r.w/2,y:l+p/2},u=e.props.angle;if(0!=u){var g={x:e.props.x+e.props.w/2,y:e.props.y+e.props.h/2};c=Utils.getRotated(g,c,u)}"horizontal"==n.orientation&&(u=(1.5*Math.PI+u)%(2*Math.PI));var y="rotate("+Math.round(u/(2*Math.PI)*360)+"deg) scale("+Designer.config.scale+")";t.css({width:r.w,height:h,"padding-top":d,left:c.x.toScale()-r.w/2-2,top:c.y.toScale()-p/2-2,"-webkit-transform":y,"-ms-transform":y,"-o-transform":y,"-moz-transform":y,transform:y})}).bind("keydown",function(t){var n=$(this);if(13==t.keyCode&&t.ctrlKey)return o(),!1;if(27==t.keyCode)n.unbind().remove(),$(".text_canvas[forshape="+e.id+"]").show();else if(66==t.keyCode&&t.ctrlKey){var r=!e.fontStyle.bold;e.fontStyle.bold=r,Model.update(e);var s=r?"bold":"normal";$(this).css("font-weight",s),i.css("font-weight",s),UI.update()}else if(73==t.keyCode&&t.ctrlKey){r=!e.fontStyle.italic;e.fontStyle.italic=r,Model.update(e);s=r?"italic":"normal";$(this).css("font-style",s),i.css("font-style",s),UI.update()}else if(85==t.keyCode&&t.ctrlKey){r=!e.fontStyle.underline;e.fontStyle.underline=r,Model.update(e);s=r?"underline":"none";$(this).css("text-decoration",s),i.css("text-decoration",s),t.preventDefault(),UI.update()}}).bind("blur",function(e){o()}).bind("mousemove",function(e){e.stopPropagation()}).bind("mousedown",function(e){e.stopPropagation()}).bind("mouseenter",function(e){Designer.op.destroy()}),$("#shape_text_edit").trigger("keyup"),t.select()}else this.editLinkerText(e);function o(){var t=$("#shape_text_edit").val();$("#shape_text_edit").length&&$("#shape_text_edit").is(":visible")&&(t!=e.text&&(e.text=t,Model.update(e)),Designer.painter.renderShape(e),$("#shape_text_edit").remove())}},shapeLinkable:function(e,t){var i=$("#designer_canvas"),n=$("#canvas_container");n.unbind("mousedown.link").bind("mousedown.link",function(r){Designer.op.changeState("linking_from_shape");var s,a=null;if(e)(s=t).id=e.id;else{var o=Utils.getRelativePos(r.pageX,r.pageY,i);s={x:o.x.restoreScale(),y:o.y.restoreScale(),id:null,angle:null}}n.bind("mousemove.link",function(e){n.css("cursor","default");var t=Utils.getRelativePos(e.pageX,e.pageY,i);null==a&&(a=function(e,t){var i=Utils.newId(),n=Utils.copy(Schema.linkerDefaults);return n.from=e,n.to={id:null,x:t.x,y:t.y,angle:null},n.props={zindex:Model.maxZIndex+1},n.id=i,n}(s,t),Designer.events.push("linkerCreating",a)),Designer.op.moveLinker(a,"to",t.x,t.y),$(document).unbind("mouseup.droplinker").bind("mouseup.droplinker",function(){Math.abs(t.x-s.x)>20||Math.abs(t.y-s.y)>20?(Model.add(a),Designer.events.push("linkerCreated",a),null==a.to.id&&null!=a.from.id&&Designer.op.linkDashboard(a),Utils.showLinkerCursor()):$("#"+a.id).remove(),$(document).unbind("mouseup.droplinker")})}),$(document).bind("mouseup.link",function(){Designer.op.hideLinkPoint(),Designer.op.resetState(),"process.subprocess"==methodId&&window.subProcess.linkerBoxPointerEvent(),n.unbind("mousedown.link"),n.unbind("mousemove.link"),$(document).unbind("mouseup.link")})})},linkerEditable:function(e){var t=$("#designer_canvas");t.unbind("dblclick.edit_linker").bind("dblclick.edit_linker",function(){Designer.op.editLinkerText(e),t.unbind("dblclick.edit_linker")})},editLinkerText:function(e){Designer.contextMenu.hide();var t=Designer.painter.getLinkerMidpoint(e),i=$("#"+e.id).find(".text_canvas"),n=$("#linker_text_edit");0==n.length&&(n=$("").appendTo("#designer_canvas")),$("#"+e.id).find(".text_canvas").hide();var r=e.fontStyle,s="scale("+Designer.config.scale+")",a=Math.round(1.25*r.size);function o(){var t=$("#linker_text_edit");if(t.length&&t.is(":visible")){var i=t.val();i!=e.text&&(e.text=i,Model.update(e)),Designer.painter.renderLinker(e),t.remove()}}n.css({"z-index":Model.orderList.length,"line-height":a+"px","font-size":r.size+"px","font-family":r.fontFamily,"font-weight":r.bold?"bold":"normal","font-style":r.italic?"italic":"normal","text-align":r.textAlign,color:"rgb("+r.color+")","text-decoration":r.underline?"underline":"none","-webkit-transform":s,"-ms-transform":s,"-o-transform":s,"-moz-transform":s,transform:s}),n.val(e.text).show().select(),n.unbind().bind("keyup",function(){var e=$(this).val().replace(//g,">").replace(/\n/g,"
");i.html(e+"
");var r=i.width();r<50&&(r=50);var s=i.height();s1&&(a=!0),n.bind("mousemove.draglinker",function(r){n.css("cursor","default");var o=Utils.getRelativePos(r.pageX,r.pageY,i);Designer.op.moveLinker(e,t,o.x,o.y),a&&Designer.painter.drawControls(s),$(document).unbind("mouseup.droplinker").bind("mouseup.droplinker",function(){$(document).unbind("mouseup.droplinker"),Model.update(e),Utils.showLinkerControls()})}),$(document).bind("mouseup.draglinker",function(){Designer.op.hideLinkPoint(),Designer.op.resetState(),i.unbind("mousedown.draglinker"),n.unbind("mousemove.draglinker"),$(document).unbind("mouseup.draglinker"),Utils.showLinkerControls()})})},linkClickable:function(e,t){var i=$("#link_spot");0==i.length&&(i=$("").appendTo("#designer_canvas")),-1==e.trim().toLowerCase().indexOf("http")&&(e="http://"+e),i.show().css({left:t.x-50,top:t.y-50,"z-index":Model.orderList.length+1})},textCreatable:function(){var e=$("#designer_canvas"),t=$("#canvas_container");t.unbind("mousedown.create_text").bind("mousedown.create_text",function(i){var n=null;i.ctrlKey||Utils.unselect();var r=Utils.getRelativePos(i.pageX,i.pageY,e),s=null;t.bind("mousemove.create_text",function(t){null==n&&(n=$("
").appendTo(e));var i=Utils.getRelativePos(t.pageX,t.pageY,e);s={"z-index":Model.orderList.length,left:i.x-1,top:i.y-1},i.x>r.x&&(s.left=r.x-1),i.y>r.y&&(s.top=r.y-1),s.width=Math.abs(i.x-r.x-2),s.height=Math.abs(i.y-r.y-2),n.css(s)}),$(document).unbind("mouseup.create_text").bind("mouseup.create_text",function(e){if(null!=s&&s.width>=20&&s.height>=20){var i=Model.create("standardText",s.left.restoreScale(),s.top.restoreScale());i.props.w=s.width.restoreScale(),i.props.h=s.height.restoreScale(),Model.add(i),Designer.painter.renderShape(i),Designer.op.editShapeText(i),Utils.unselect(),Utils.selectShape(i.id)}n.remove(),Designer.op.resetState(),$(document).unbind("mouseup.create_text"),t.unbind("mousemove.create_text")}),t.unbind("mousedown.create_text")})},canvasDragTimeout:null,canvasDraggable:function(){var e=$("#canvas_container");e.css("cursor","url(../apps/_bpm.platform/js/designer/themes/default/images/diagraming/cursor_hand.png) 8 8, auto"),this.canvasDragTimeout&&clearTimeout(this.canvasDragTimeout),this.canvasDragTimeout=setTimeout(function(){e.unbind("mousedown.drag_canvas"),Designer.op.resetState(),e.unbind("mousemove.drag_canvas"),$(document).unbind("mouseup.drag_canvas")},500),e.unbind("mousedown.drag_canvas").bind("mousedown.drag_canvas",function(t){var i=$("#designer_layout").scrollTop(),n=$("#designer_layout").scrollLeft();e.bind("mousemove.drag_canvas",function(e){var r=e.pageX-t.pageX,s=e.pageY-t.pageY;$("#designer_layout").scrollLeft(n-r),$("#designer_layout").scrollTop(i-s)}),$(document).unbind("mouseup.drag_canvas").bind("mouseup.drag_canvas",function(t){e.unbind("mousemove.drag_canvas"),$(document).unbind("mouseup.drag_canvas")})}),$(document).unbind("keyup.drag_canvas").bind("keyup.drag_canvas",function(t){e.unbind("mousedown.drag_canvas"),Designer.op.resetState(),$(document).unbind("mouseup.drag_canvas"),t.preventDefault(),clearTimeout(this.canvasDragTimeout),e.unbind("mousemove.drag_canvas")})},canvasFreeDraggable:function(){var e=$("#canvas_container");e.css("cursor","url(../apps/_bpm.platform/js/designer/themes/default/images/diagraming/cursor_hand.png) 8 8, auto"),e.unbind("mousedown.drag_canvas").bind("mousedown.drag_canvas",function(t){var i=$("#designer_layout").scrollTop(),n=$("#designer_layout").scrollLeft();e.bind("mousemove.drag_canvas",function(e){var r=e.pageX-t.pageX,s=e.pageY-t.pageY;$("#designer_layout").scrollLeft(n-r),$("#designer_layout").scrollTop(i-s)}),$(document).unbind("mouseup.drag_canvas").bind("mouseup.drag_canvas",function(t){e.unbind("mousemove.drag_canvas"),$(document).unbind("mouseup.drag_canvas")})})},moveShape:function(e,t){for(var i=[],n=0;n=0)&&(a.from.x+=s.x,a.from.y+=s.y,d=!0),(null==l.id||i.indexOf(l.id)>=0)&&(a.to.x+=s.x,a.to.y+=s.y,h=!0)):(null!=o.id&&i.indexOf(o.id)>=0&&(a.from.x+=s.x,a.from.y+=s.y,d=!0),null!=l.id&&i.indexOf(l.id)>=0&&(a.to.x+=s.x,a.to.y+=s.y,h=!0)),d&&h){for(var p=0;p0){var f=Utils.getSelectedIds();Designer.painter.drawControls(f)}else{var x=$("#shape_controls");x.css({left:parseFloat(x.css("left"))+t.x,top:parseFloat(x.css("top"))+t.y})}var v=$("#shape_controls").position();v&&Utils.getSelected().length>0&&Designer.op.showTip("X: "+Math.round(v.left.restoreScale())+"  Y: "+Math.round(v.top.restoreScale()))}function m(e){e.props.x+=s.x,e.props.y+=s.y;var i=$("#"+e.id);i.css({left:parseFloat(i.css("left"))+t.x,top:parseFloat(i.css("top"))+t.y})}},moveLinker:function(e,t,i,n){var r=null,s=null,a=Utils.getShapeByPosition(i,n,!0);if(Designer.op.hideLinkPoint(),null!=a){var o,l,d=a.shape;if(Utils.showAnchors(d),s=d.id,"bounding"==a.type)r=a.linkPoint,Designer.op.showLinkPoint(Utils.toScale(r));else if("shape"==a.type)if("from"==t?(o={x:e.to.x,y:e.to.y},l=e.to.id):(o={x:e.from.x,y:e.from.y},l=e.from.id),d.id==l)Designer.op.hideLinkPoint(),(r={x:i.restoreScale(),y:n.restoreScale()}).angle=null,s=null;else{for(var h,p=d.getAnchors(),c=-1,u={x:d.props.x+d.props.w/2,y:d.props.y+d.props.h/2},g=0;g=e.to.x-6&&r.x<=e.to.x+6&&(e.from.x=e.to.x),r.y>=e.to.y-6&&r.y<=e.to.y+6&&(e.from.y=e.to.y))):(e.to.x=r.x,e.to.y=r.y,e.to.id=s,e.to.angle=r.angle,null==s&&(r.x>=e.from.x-6&&r.x<=e.from.x+6&&(e.to.x=e.from.x),r.y>=e.from.y-6&&r.y<=e.from.y+6&&(e.to.y=e.from.y))),Designer.painter.renderLinker(e,!0)},showLinkPoint:function(e){var t=$("").appendTo($("#designer_canvas")),i=t[0].getContext("2d");i.translate(1,1),i.lineWidth=1,i.globalAlpha=.3,i.strokeStyle=Designer.config.anchorColor,i.fillStyle=Designer.config.anchorColor,i.beginPath(),i.moveTo(0,15),i.bezierCurveTo(0,-5,30,-5,30,15),i.bezierCurveTo(30,35,0,35,0,15),i.closePath(),i.fill(),i.stroke(),t.css({left:e.x-16,top:e.y-16,"z-index":Model.orderList.length}).show()},hideLinkPoint:function(){$(".link_point_canvas").hide()},brokenLinkerChangable:function(e,t){var i=$("#canvas_container"),n=$("#designer_canvas"),r=e.points[t-1],s=e.points[t];r.x==s.x?i.css("cursor","e-resize"):i.css("cursor","n-resize"),n.bind("mousedown.brokenLinker",function(t){Designer.op.changeState("changing_broken_linker");var a=Utils.getRelativePos(t.pageX,t.pageY,n),o=Utils.getSelectedIds();i.bind("mousemove.brokenLinker",function(t){var i=Utils.getRelativePos(t.pageX,t.pageY,n),l={x:i.x-a.x,y:i.y-a.y};l=Utils.restoreScale(l),r.x==s.x?(r.x+=l.x,s.x+=l.x):(r.y+=l.y,s.y+=l.y),Designer.painter.renderLinker(e),o.length>1&&Designer.painter.drawControls(o),a=i,$(document).unbind("mouseup.changed").bind("mouseup.changed",function(){Model.update(e),$(document).unbind("mouseup.changed")})}),$(document).bind("mouseup.brokenLinker",function(){Designer.op.resetState(),i.unbind("mousemove.brokenLinker"),n.unbind("mousedown.brokenLinker"),$(document).unbind("mouseup.brokenLinker")})})},removeShape:function(){var d=Utils.getSelected();if(d.length>0){Utils.unselect();var e=Utils.getAttachedShapes(d);d=d.concat(e);for(var c=[],b=0;b0){for(var shapeIds=[],index=0;index0?$.ajax({url:"./jd?sid="+$("#sid").val()+"&cmd=com.actionsoft.apps.coe.pal_pl_repository_designer_relation_search",data:{shapeIds:shapeIds.join(","),fileId:ruuid},success:function(msg){"string"==typeof msg&&(msg=eval("("+msg+")"));var relationShapes=msg.data.relationShapes;if(relationShapes.length>0){var options={title:"提示",content:"图形["+relationShapes+"]被关联,确定删除吗?",onConfirm:function(){Model.remove(d)}};$.confirm(options)}else Model.remove(d)}}):Model.remove(d)}}},showTip:function(e){var t=$("#designer_op_tip");0==t.length&&(t=$("
").appendTo("#designer_canvas")),t.stop().html(e);var i=$("#shape_controls"),n=i.position();t.css({top:n.top+i.height()+5,left:n.left+i.width()/2-t.outerWidth()/2,"z-index":Model.orderList.length}).show()},hideTip:function(){$("#designer_op_tip").fadeOut(100)},snapLine:function(e,t,i,n){var r=e.y,s=e.y+e.h/2,a=e.y+e.h,o=e.x,l=e.x+e.w/2,d=e.x+e.w,h={v:null,h:null,attach:null},p=null;if(p=i?n:Model.getShapeById(t[0]),1==t.length&&"boundaryEvent"==p.groupName)for(var c=Model.orderList.length-1;c>=0;c--){var u=Model.orderList[c].id;if("linker"!=(w=Model.getShapeById(u)).name&&w.id!=p.id){var g=w.props;if(null==h.attach&&0==g.angle&&("task"==w.groupName||"callActivity"==w.groupName||"subProcess"==w.groupName)){var y={x:g.x-2,y:g.y-2,w:g.w+4,h:g.h+4};if(Utils.pointInRect(l,s,y)){var f=g.y,x=g.y+g.h,v=g.x,m=g.x+g.w,b=!1,S=!1;f>=s-2&&f<=s+2?(e.y=f-e.h/2,S=!0):x>=s-2&&x<=s+2&&(e.y=x-e.h/2,S=!0),v>=l-2&&v<=l+2?(e.x=v-e.w/2,b=!0):m>=l-2&&m<=l+2&&(e.x=m-e.w/2,b=!0),(b||S)&&(h.attach=w)}}}}if(null==h.attach)for(c=Model.orderList.length-1;c>=0;c--){var w;u=Model.orderList[c].id;if(!("linker"==(w=Model.getShapeById(u)).name||t.indexOf(u)>=0||w.parent)){g=w.props;if(null==h.h){f=g.y;var k=g.y+g.h/2;x=g.y+g.h;k>=s-2&&k<=s+2?(h.h={type:"middle",y:k},e.y=k-e.h/2):f>=r-2&&f<=r+2?(h.h={type:"top",y:f},e.y=f):x>=a-2&&x<=a+2?(h.h={type:"bottom",y:x},e.y=x-e.h):x>=r-2&&x<=r+2?(h.h={type:"top",y:x},e.y=x):f>=a-2&&f<=a+2&&(h.h={type:"bottom",y:f},e.y=f-e.h)}if(null==h.v){v=g.x;var M=g.x+g.w/2;m=g.x+g.w;M>=l-2&&M<=l+2?(h.v={type:"center",x:M},e.x=M-e.w/2):v>=o-2&&v<=o+2?(h.v={type:"left",x:v},e.x=v):m>=d-2&&m<=d+2?(h.v={type:"right",x:m},e.x=m-e.w):m>=o-2&&m<=o+2?(h.v={type:"left",x:m},e.x=m):v>=d-2&&v<=d+2&&(h.v={type:"right",x:v},e.x=v-e.w)}if(null!=h.h&&null!=h.v)break}}this.hideSnapLine();var D=$("#designer_canvas");if(null!=h.attach){var _=$("#designer_op_snapline_attach");0==_.length&&(_=$("
").appendTo(D));var I=h.attach,U=I.lineStyle.lineWidth;_.css({width:(I.props.w+U).toScale(),height:(I.props.h+U).toScale(),left:(I.props.x-U/2).toScale()-2,top:(I.props.y-U/2).toScale()-2,"z-index":$("#"+I.id).css("z-index")}).show()}if(null!=h.h){var C=$("#designer_op_snapline_h");0==C.length&&(C=$("
").appendTo(D)),C.css({width:D.width()+2*Designer.config.pageMargin,left:-Designer.config.pageMargin,top:Math.round(h.h.y.toScale()),"z-index":Model.orderList.length+1}).show()}if(null!=h.v){var P=$("#designer_op_snapline_v");0==P.length&&(P=$("
").appendTo(D)),P.css({height:D.height()+2*Designer.config.pageMargin,top:-Designer.config.pageMargin,left:Math.round(h.v.x.toScale()),"z-index":Model.orderList.length+1}).show()}return h},snapResizeLine:function(e,t,i){for(var n=e.y,r=e.y+e.h/2,s=e.y+e.h,a=e.x,o=e.x+e.w/2,l=e.x+e.w,d={v:null,h:null},h=Model.orderList.length-1;h>=0;h--){var p=Model.orderList[h].id,c=Model.getShapeById(p);if(!("linker"==c.name||t.indexOf(p)>=0||c.parent)){var u=c.props;if(null==d.h&&(i.indexOf("t")>=0||i.indexOf("b")>=0)){var g=u.y,y=u.y+u.h/2,f=u.y+u.h;y>=r-2&&y<=r+2?(d.h={type:"middle",y:y},i.indexOf("t")>=0?(e.h=2*(s-y),e.y=s-e.h):e.h=2*(y-e.y)):i.indexOf("t")>=0&&g>=n-2&&g<=n+2?(d.h={type:"top",y:g},e.y=g,e.h=s-g):i.indexOf("b")>=0&&f>=s-2&&f<=s+2?(d.h={type:"bottom",y:f},e.h=f-n):i.indexOf("t")>=0&&f>=n-2&&f<=n+2?(d.h={type:"top",y:f},e.y=f,e.h=s-f):i.indexOf("b")>=0&&g>=s-2&&g<=s+2&&(d.h={type:"bottom",y:g},e.h=g-e.y)}if(null==d.v&&(i.indexOf("l")>=0||i.indexOf("r")>=0)){var x=u.x,v=u.x+u.w/2,m=u.x+u.w;v>=o-2&&v<=o+2?(d.v={type:"center",x:v},i.indexOf("l")>=0?(e.w=2*(l-v),e.x=l-e.w):e.w=2*(v-e.x)):i.indexOf("l")>=0&&x>=a-2&&x<=a+2?(d.v={type:"left",x:x},e.x=x,e.w=l-x):i.indexOf("r")>=0&&m>=l-2&&m<=l+2?(d.v={type:"right",x:m},e.w=m-e.x):i.indexOf("l")>=0&&m>=a-2&&m<=a+2?(d.v={type:"left",x:m},e.x=m,e.w=l-m):i.indexOf("r")>=0&&x>=l-2&&x<=l+2&&(d.v={type:"right",x:x},e.w=x-e.x)}if(null!=d.h&&null!=d.v)break}}this.hideSnapLine();var b=$("#designer_canvas");if(null!=d.h){var S=$("#designer_op_snapline_h");0==S.length&&(S=$("
").appendTo(b)),S.css({width:b.width()+2*Designer.config.pageMargin,left:-Designer.config.pageMargin,top:Math.round(d.h.y.toScale()),"z-index":Model.orderList.length+1}).show()}if(null!=d.v){var w=$("#designer_op_snapline_v");0==w.length&&(w=$("
").appendTo(b)),w.css({height:b.height()+2*Designer.config.pageMargin,top:-Designer.config.pageMargin,left:Math.round(d.v.x.toScale()),"z-index":Model.orderList.length+1}).show()}return d},hideSnapLine:function(){$("#designer_op_snapline_h").hide(),$("#designer_op_snapline_v").hide(),$("#designer_op_snapline_attach").hide()},linkDashboard:function(e){var t=Model.getShapeById(e.from.id).category;if(0!=$("#panel_"+t).length){var i=$("#shape_dashboard_"+t);if(0==i.length){function n(e,t){var n="
",r=$(n).appendTo(i);t&&r.append("");var s=r.children()[0];Designer.painter.drawPanelItem(s,e.name)}for(var r in i=$("").appendTo("#designer_canvas"),Schema.shapes){var s=Schema.shapes[r];if(("process_bpmn2"!=s.category&&"process.bpmn2"!=s.category&&"bpmn"!=s.category||!checkRunningTimeShape(s))&&s.category==t){var a=s.attribute;if(a.visible&&a.linkable)if(s.groupName)SchemaGroup.getGroup(s.groupName)[0]==s.name&&n(s,s.groupName);else n(s)}}i.bind("mousemove",function(e){e.stopPropagation()}).bind("mousedown",function(e){e.stopPropagation()})}function o(t){var i,n=Schema.shapes[t],r=Utils.getEndpointAngle(e,"to"),s=Utils.getAngleDir(r),a=n.getAnchors();if(1==s)for(var o=null,l=0;lh)&&(h=d.x,i=d)}}else if(3==s){var p=null;for(l=0;lp)&&(p=d.y,i=d)}}else if(4==s){var c=null;for(l=0;l").appendTo("#designer_canvas");for(var s=SchemaGroup.getGroup(e),a=0;a").appendTo(r).children("canvas")[0];Designer.painter.drawPanelItem(d,l.name)}}r.bind("mousedown",function(e){e.stopPropagation()})}return r.css({left:t,top:i,"z-index":Model.orderList.length+1}).show(),$(".dashboard_box").unbind().bind("click",function(){var e=$(this).attr("shapeName");n(e),r.hide(),$(document).unbind("mousedown.group_dashboard")}),$(document).bind("mousedown.group_dashboard",function(){r.hide(),$(document).unbind("mousedown.group_dashboard")}),r},showPanelGroup:function(e,t,i){t.stopPropagation();var n=$("#group_dashboard_"+e);if($(".group_dashboard").hide(),0==n.length){n=$("").appendTo("#designer");for(var r=SchemaGroup.getGroup(e),s=0;s").appendTo(n).children("canvas")[0];Designer.painter.drawPanelItem(h,o.name)}}n.css("position","fixed")}var p=$(i).parent(),c=p.offset();n.show();var u=c.top+p.height();u+n.outerHeight()>$(window).height()&&(u=$(window).height()-n.outerHeight()),n.css({left:c.left-7,top:u}),$(document).bind("mousedown.group_board",function(){n.hide(),$(document).unbind("mousedown.group_board")})},changeShapeProps:function(e,t){function i(i){if(void 0!==t.x&&(i.x+=t.x-e.props.x),void 0!==t.y&&(i.y+=t.y-e.props.y),void 0!==t.w||void 0!==t.h||void 0!==t.angle){var n=$.extend({},e.props,t),r={x:e.props.x+e.props.w/2,y:e.props.y+e.props.h/2},s=Utils.getRotated(r,i,-e.props.angle),a=e.props.w,o=e.props.h;void 0!==t.w?(i.x=e.props.x+(s.x-e.props.x)/e.props.w*t.w,a=t.w):i.x=s.x,void 0!==t.h?(i.y=e.props.y+(s.y-e.props.y)/e.props.h*t.h,o=t.h):i.y=s.y;var l={x:e.props.x+a/2,y:e.props.y+o/2},d=Utils.getRotated(l,i,n.angle);i.x=d.x,i.y=d.y}void 0!==t.angle&&(i.angle+=t.angle-e.props.angle)}var n=[],r=Model.getShapeLinkers(e.id);if(r&&r.length>0){for(var s=0;s").appendTo("#designer_viewport")),r.html("选择目标图形并使用格式刷样式
Esc取消").show(),$(document).unbind("keydown.cancelbrush").bind("keydown.cancelbrush",function(e){27==e.keyCode&&($("#bar_brush").button("unselect"),r.hide(),$(document).unbind("keydown.cancelbrush"),Utils.selectCallback=null,$("#bar_brush").button("disable"))}),Utils.selectCallback=function(){for(var e=Utils.getSelected(),i=0;i1&&(n=1);var l={x:(1-n)*i.x+n*e.x,y:(1-n)*i.y+n*e.y};(Utils.measureDistance(s,l)>=t[a]||n>=1)&&(o?this.lineTo(l.x,l.y):this.moveTo(l.x,l.y),o=!o,s=l,++a>=t.length&&(a=0))}this.moveTo(e.x,e.y)}else this.lineTo(e.x,e.y);this.prePoint=e,null==this.beginPoint&&(this.beginPoint=e)},curve:function(e){if(void 0!==this.webkitLineDash&&void 0===this.lineDashOffset&&0!=this.lineWidth){for(var t=this.webkitLineDash,i=this.prePoint,n=0,r=1/Utils.measureDistance(i,e),s=i,a=0,o=!0,l=0;n<1;){(n+=r)>1&&(n=1);var d={x:i.x*Math.pow(1-n,3)+e.x1*n*Math.pow(1-n,2)*3+e.x2*Math.pow(n,2)*(1-n)*3+e.x*Math.pow(n,3),y:i.y*Math.pow(1-n,3)+e.y1*n*Math.pow(1-n,2)*3+e.y2*Math.pow(n,2)*(1-n)*3+e.y*Math.pow(n,3)};if(Utils.measureDistance(s,d)>=t[a]||n>=1){if(o){var h=l+(n-l)/2,p={x:i.x*Math.pow(1-h,3)+e.x1*h*Math.pow(1-h,2)*3+e.x2*Math.pow(h,2)*(1-h)*3+e.x*Math.pow(h,3),y:i.y*Math.pow(1-h,3)+e.y1*h*Math.pow(1-h,2)*3+e.y2*Math.pow(h,2)*(1-h)*3+e.y*Math.pow(h,3)};this.lineTo(p.x,p.y),this.lineTo(d.x,d.y)}else this.moveTo(d.x,d.y);o=!o,s=d,l=n,++a>=t.length&&(a=0)}}this.moveTo(e.x,e.y)}else this.bezierCurveTo(e.x1,e.y1,e.x2,e.y2,e.x,e.y);this.prePoint=e,null==this.beginPoint&&(this.beginPoint=e)},quadraticCurve:function(e){if(void 0!==this.webkitLineDash&&void 0===this.lineDashOffset&&0!=this.lineWidth){for(var t=this.webkitLineDash,i=this.prePoint,n=0,r=1/Utils.measureDistance(i,e),s=i,a=0,o=!0,l=0;n<1;){(n+=r)>1&&(n=1);var d={x:i.x*Math.pow(1-n,2)+e.x1*n*(1-n)*2+e.x*Math.pow(n,2),y:i.y*Math.pow(1-n,2)+e.y1*n*(1-n)*2+e.y*Math.pow(n,2)};if(Utils.measureDistance(s,d)>=t[a]||n>=1){if(o){var h=l+(n-l)/2,p={x:i.x*Math.pow(1-h,2)+e.x1*h*(1-h)*2+e.x*Math.pow(h,2),y:i.y*Math.pow(1-h,2)+e.y1*h*(1-h)*2+e.y*Math.pow(h,2)};this.lineTo(p.x,p.y),this.lineTo(d.x,d.y)}else this.moveTo(d.x,d.y);o=!o,s=d,l=n,++a>=t.length&&(a=0)}}this.moveTo(e.x,e.y)}else this.quadraticCurveTo(e.x1,e.y1,e.x,e.y);this.prePoint=e,null==this.beginPoint&&(this.beginPoint=e)},close:function(){if(void 0!==this.webkitLineDash&&void 0===this.lineDashOffset&&0!=this.lineWidth)for(var e=this.webkitLineDash,t=this.prePoint,i=this.beginPoint,n=0,r=1/Utils.measureDistance(t,i),s=t,a=0,o=!0;n<1;){(n+=r)>1&&(n=1);var l={x:(1-n)*t.x+n*i.x,y:(1-n)*t.y+n*i.y};(Utils.measureDistance(s,l)>=e[a]||n>=1)&&(o?this.lineTo(l.x,l.y):this.moveTo(l.x,l.y),o=!o,s=l,++a>=e.length&&(a=0))}this.closePath()},curveArc:function(e){this.arc(e.centerX,e.centerY,e.radius,e.startAngle,e.endAngle)}},setLineDash:function(e,t){e.setLineDash||(e.setLineDash=function(){}),e.setLineDash(t),e.mozDash=t,e.webkitLineDash=t},renderShapePath:function(e,t,i){var n;n=i&&t.drawIcon?t.drawIcon(t.props.w,t.props.h):t.getPath(),this.renderPath(e,t,n,i)},renderPath:function(e,t,i,n){for(var r=0;r=Designer.config.panelItemWidth||r.h>=Designer.config.panelItemWidth)&&(r.panelProps?(r.w=n.props.w,r.h=n.props.h):n.props.w>=n.props.h?(r.w=Designer.config.panelItemWidth-2*n.lineStyle.lineWidth,r.h=parseInt(n.props.h/n.props.w*r.w)):(r.h=Designer.config.panelItemHeight-2*n.lineStyle.lineWidth,r.w=parseInt(n.props.w/n.props.h*r.h))),n.props=r,i.save(),i.lineJoin="round",i.globalAlpha=n.shapeStyle.alpha;var s=(Designer.config.panelItemWidth-r.w)/2,a=(Designer.config.panelItemHeight-r.h)/2;r.panelProps&&(r.panelProps.x&&(s=-r.panelProps.x),r.panelProps.y&&(a=-r.panelProps.y)),i.translate(s,a),i.translate(r.w/2,r.h/2),i.rotate(r.angle),i.translate(-r.w/2,-r.h/2),this.renderShapePath(i,n,!0,function(){Designer.painter.drawPanelItem(e,t)}),this.renderMarkers(i,n,!0),i.restore()},handleShapeConfigData:function(e,t,i){for(var n,r=t.dataAttributes.length-1;r>=0;r--){(n=t.dataAttributes[r]).horizontal,n.vertical;if(n.hasOwnProperty("attributesJsonArray")){var s=n.dataShowConfig;null!=s&&(s.value=[]);break}}var a=t.name;for(r=0;r0)for(var y=0;y=0&&(p+"").trim().length>0&&(p="("+o.attrName+")"+p),"relation"==g||"awsorg"==g){var x=t.id+"_"+u,v=relationShapeModelObject;p=v[x]?v[x].join(","):"",o.isShowAttrName&&(p="("+o.attrName+")"+p)}c.showType="attr",c.value=p}t.dataAttributes||(t.dataAttributes=[]),c.id=Utils.newId(),c.category="custom",n.dataShowConfig||(n.dataShowConfig={},n.dataShowConfig.value||(n.dataShowConfig.value=[])),n.dataShowConfig.value.push(c)}else{c={w:16,h:16,textw:20,texth:17,imgT:0,category:"custom",icon:o.iconContent,name:a,showName:!1,showType:"icon",type:"string",value:"",horizontal:d,vertical:h};t.dataAttributes||(t.dataAttributes=[]),c.id=Utils.newId(),c.category="custom",n.dataShowConfig||(n.dataShowConfig={},n.dataShowConfig.value||(n.dataShowConfig.value=[])),n.dataShowConfig.value.push(c)}}},renderShape:function(e){if("linker"==e.name)return void this.renderLinker(e);for(var t,i,n=Utils.copy(Model.define.commonShapeConfig),r=e.dataAttributes,s=0;s0)for(s=0;s=0||l.push(n[s])}d=l.length>0?t.concat(l):t,this.handleShapeConfigData(d,e,i)}var u=$("#"+e.id);if(0==u.length){var g=$("#designer_canvas");u="lane"==e.category?$("
").appendTo(g):$("
").appendTo(g)}var y=Utils.getShapeBox(e),f=(y.w+20).toScale(),x=(y.h+20).toScale();u.find(".shape_canvas").attr({width:f,height:x}),u.css({left:(y.x-10).toScale()+"px",top:(y.y-10).toScale()+"px",width:f,height:x});var v=u.find(".shape_canvas")[0].getContext("2d");v.clearRect(0,0,e.props.w+20,e.props.h+20),v.scale(Designer.config.scale,Designer.config.scale),v.translate(10,10),v.translate(e.props.x-y.x,e.props.y-y.y),v.translate(e.props.w/2,e.props.h/2),v.rotate(e.props.angle),v.translate(-e.props.w/2,-e.props.h/2);e.lineStyle;v.globalAlpha=e.shapeStyle.alpha,v.lineJoin="round",this.renderShapePath(v,e),this.renderMarkers(v,e);var m=e.getPath(),b=Utils.copy(m[m.length-1]);b.fillStyle={type:"none"},b.lineStyle={lineWidth:0};var S=[b];this.renderPath(v,e,S),this.renderText(e,y);let w=Utils.copy(Model.define.commonShapeConfig);if(void 0===t&&void 0===w[o]||this.renderDataAttributes(e,y),this.renderTitleShow(e,y),Designer.painter.renderShapeLink(u,e),Designer.painter.renderSahpeAttachment(u,e),null!=e.attributesJsonArray&&e.attributesJsonArray.length>0){u.find(".shape_danger").remove(),u.find(".shape_regulate").remove();var k=!1;for(var M in e.attributesJsonArray){var D=e.attributesJsonArray[M];if(null!=D&&"danger"==D.key&&null!=D.value&&""!=D.value&&null!=relationShapesObject)if("object"==typeof D.value&&D.value.constructor==Array){for(m=0;m").appendTo(u)}},fillShape:function(e,t,i){if(t.save(),void 0!==i.colorOverlay&&"multiplyOverlay"===i.colorOverlay&&(i.color=function(e){let[t,i,n]=e.split(",").map(Number),[r,s,a]=e.split(",").map(Number),o=t/255*(r/255)*255,l=i/255*(s/255)*255,d=n/255*(a/255)*255;return`${Math.round(o)}, ${Math.round(l)}, ${Math.round(d)}`}(i.color)),"solid"==i.type)t.fillStyle="rgb("+i.color+")",t.fill();else if("gradient"==i.type){var n;n="linear"==i.gradientType?GradientHelper.createLinearGradient(e,t,i):GradientHelper.createRadialGradient(e,t,i),t.fillStyle=n,t.fill()}else if("image"===i.type||"imageDef"===i.type){let n=!1,a=i.fileId;"insert"===i.from&&(a=shapeImages[i.fileId]),"imageDef"===i.type&&(imageDefMap[i.fileId]?a=imageDefMap[i.fileId]:(a=shapeImages[i.fileId],n=!0));var r=$(".shape_img[src='"+a+"']");0==r.length?((r=$("").appendTo("#shape_img_container")).bind("load.drawshape",function(){var a="insert"===i.from?0:(Designer.config.panelItemWidth-e.props.w)/2,o="insert"===i.from?0:(Designer.config.panelItemHeight-e.props.h)/2;n&&(o=0,a=0),t.translate(a,o),s(r),t.restore(),$(this).attr("loaded","1")}),r.attr("src",a)):"0"==r.attr("loaded")?r.bind("load.drawshape",function(){t.translate(0,0),s(r),t.restore()}):s(r)}function s(n){if(t.save(),t.clip(),"fit"==i.display)if((c=(l=n.width())/(d=n.height()))>e.props.w/e.props.h){var r=0,s=(o=e.props.w)/c,a=e.props.h/2-s/2;t.drawImage(n[0],r,a,o,s)}else{a=0;var o=(s=e.props.h)*c;r=e.props.w/2-o/2;t.drawImage(n[0],r,a,o,s)}else if("stretch"==i.display)t.drawImage(n[0],0,0,e.props.w,e.props.h);else if("original"==i.display){var l=n.width(),d=n.height();r=e.props.w/2-l/2,a=e.props.h/2-d/2;t.drawImage(n[0],r,a,l,d)}else if("tile"==i.display)for(r=0,l=n.width(),d=n.height();re.props.w/e.props.h){a=0,o=(s=e.props.h)*c,r=e.props.w/2-o/2;t.drawImage(n[0],r,a,o,s)}else{r=0,s=(o=e.props.w)/c,a=e.props.h/2-s/2;t.drawImage(n[0],r,a,o,s)}}t.restore()}t.restore()},renderText:function(e,t){var i=$("#"+e.id),n=i.find(".text_canvas[forshape="+e.id+"]");if(0==n.length&&(n=$("").appendTo(i)).bind("focus",function(){$(this).blur()}),n.attr("readonly","readonly"),null!=e.text&&""!=e.text.trim()){var r=e.fontStyle,s={"line-height":Math.round(1.25*r.size)+"px","font-size":r.size+"px","font-family":r.fontFamily,"font-weight":r.bold?"bold":"normal","font-style":r.italic?"italic":"normal","text-align":r.textAlign,color:"rgb("+r.color+")","text-decoration":r.underline?"underline":"none",opacity:e.shapeStyle.alpha};n.css(s),n.show();var a=e.getTextBlock();if("horizontal"==e.fontStyle.orientation){var o={x:a.x+a.w/2,y:a.y+a.h/2};a={x:o.x-a.h/2,y:o.y-a.w/2,w:a.h,h:a.w}}n.css({width:a.w}),n.height(0),n.val(e.text),n.scrollTop(99999);var l=n.scrollTop(),d=0;d="middle"==r.vAlign?a.y+a.h/2-l/2:"bottom"==e.fontStyle.vAlign?a.y+a.h-l:a.y;var h={x:a.x+a.w/2,y:d+l/2},p=e.props.angle;if(0!=p){var c={x:e.props.w/2,y:e.props.h/2};h=Utils.getRotated(c,h,p)}"horizontal"==r.orientation&&(p=(1.5*Math.PI+p)%(2*Math.PI));var u="rotate("+Math.round(p/(2*Math.PI)*360)+"deg) scale("+Designer.config.scale+")",g=a.w,y=l;n.css({width:g,height:y,left:(h.x+(e.props.x-t.x)+10).toScale()-a.w/2,top:(h.y+(e.props.y-t.y)+10).toScale()-l/2,"-webkit-transform":u,"-ms-transform":u,"-o-transform":u,"-moz-transform":u,transform:u})}else n.css({height:"0px",width:"0px"}).hide()},calculateTextLines:function(e,t,i){for(var n=t.w,r=(t.h,[]),s=e.split(/\n/),a=0;an)for(var c=0;cn?(r.push(d),d=p[c]):d=u}else{u=d+p;i.measureText(u).width>n?(r.push(d),d=p):d=u}}""!=d&&r.push(d)}}return r},renderMarkers:function(e,t,i){if(t.attribute&&t.attribute.markers&&t.attribute.markers.length>0){var n=t.attribute.markers,r=Schema.config.markerSize;i&&(r=10);var s=t.attribute.markerOffset;i&&(s=5);for(var a=n.length*r+4*(n.length-1),o=t.props.w/2-a/2,l=0;l").appendTo($("#"+e.id));i.css({left:(10+e.props.titleProps.x)*Designer.config.scale+"px",top:(17+e.props.titleProps.y)*Designer.config.scale+"px"});var n=i[0].getContext("2d"),r="13px ";r+=e.fontStyle.fontFamily,n.font=r,n.fillStyle="#696969",e.titleStyle&&e.titleStyle.titleColor&&(n.fillStyle=e.titleStyle.titleColor),n.scale(Designer.config.scale,Designer.config.scale),n.fillText(e.title,0,12)}},renderDataAttributes:function(i,k){if($("#"+i.id).children(".attr_canvas").remove(),i.dataAttributes&&0!=i.dataAttributes.length)for(var n={x:i.props.w/2,y:i.props.h/2},p=0;p0)for(var n=0;n").appendTo($("#"+i.id)),b=H[0].getContext("2d"),w="12px ";w+=i.fontStyle.fontFamily,b.font=w;var D=b.measureText(y).width,a=20,E,F;""!=x&&(D+=20),E="mostleft"==h?-D-2:"leftedge"==h?-D/2:"left"==h?2:"center"==h?(i.props.w-D)/2:"right"==h?i.props.w-D-2:"rightedge"==h?i.props.w-D/2:i.props.w+2,F="mosttop"==I?-a:"topedge"==I?-a/2:"top"==I?0:"middle"==I?(i.props.h-a)/2:"bottom"==I?i.props.h-a:"bottomedge"==I?i.props.h-a/2:i.props.h;var g={x:E,y:F,w:D,h:a},G=Utils.getRotatedBox(g,i.props.angle,n);H.attr({width:G.w.toScale(),height:G.h.toScale()}),b.font=w;var d=(G.x+(i.props.x-k.x)+10).toScale(),e=(G.y+(i.props.y-k.y)+10).toScale();if("mostleft"==h&&"left"!=h&&"right"==h||H.css({left:d,top:e}),b.scale(Designer.config.scale,Designer.config.scale),b.translate(G.w/2,G.h/2),b.rotate(i.props.angle),b.translate(-G.w/2,-G.h/2),b.translate((G.w-g.w)/2,(G.h-g.h)/2),b.globalAlpha=i.shapeStyle.alpha,"link"==c.type?b.fillStyle="#4183C4":b.fillStyle="#333","text"==c.showType&&(b.fillStyle="#696969"),"attr"==c.showType&&(b.fillStyle="#191970"),b.textBaseline="middle",D>i.props.w){var tempShapeWidth=i.props.w;tempShapeWidth<100&&(tempShapeWidth=100),H[0].width=tempShapeWidth+10,H[0].height=10*Math.ceil(D/tempShapeWidth)+15;for(var v=0;v1&&H.css({left:15,top:e}),"right"==h&&"mosttop"!=I&&"bottom"!=I&&(d=tempShapeWidth/4,H.css({left:d,top:e}))}else"mostleft"==h&&(d=-D,H.css({left:d,top:e})),"right"==h&&H.css({left:d,top:e}),b.fillText(y,0,a/2);if(""!=x)if(x.indexOf("&#x")>=0){var icon=x.split("|")[0],iconColor=x.split("|")[1];icon=eval("('"+icon.replace("&#x","\\u").replace(";","")+"')");const font=new FontFace("awsui-iconfont","url(../commons/css/font/iconfont.woff");font.load().then(function(e){document.fonts.add(e),console.debug("Font loaded successfully"),b.font="19px awsui-iconfont",b.fillStyle=iconColor,b.fillText(icon,0,a/2)}),iconCavCode=H[0].toDataURL("image/png"),c.iconCavCode=iconCavCode}else{var J="/images/data-attr/"+x+".png",f=$(".shape_img[src='"+J+"']");0==f.length&&(f=$("").appendTo("#shape_img_container")),"true"==f.attr("loaded")?b.drawImage(f[0],g.w-20,0,20,20):f.bind("load.drawshape",function(){$(this).attr("loaded","true"),b.drawImage(f[0],g.w-20,0,20,20)})}b.beginPath(),b.rect(0,0,D,a),b.closePath()}},renderLinker:function(e,t){t&&(e.points=Utils.getLinkerPoints(e)),"curve"!=e.linkerType&&"broken"!=e.linkerType||e.points&&0!=e.points.length||(e.points=Utils.getLinkerPoints(e));var i=e.points,n=Utils.copy(e.from),r=Utils.copy(e.to);if(e.attribute&&e.attribute.collapseBy)$("#"+e.id).hide();else{$("#"+e.id).show();var s=Utils.getEndpointAngle(e,"from"),a=Utils.getEndpointAngle(e,"to"),o=Utils.getLinkerLineStyle(e.lineStyle);C(n,e,o.beginArrowStyle,s),C(r,e,o.endArrowStyle,a);var l=r.x,d=r.y,h=n.x,p=n.y;r.xh&&(h=u.x),u.yp&&(p=u.y)}var g=l,y=d,f=h-l,x=p-d,v=$("#"+e.id);if(0==v.length){var m=$("#designer_canvas");v=$("
").appendTo(m)}Model.getShapeById(e.id)||(v.css("z-index",Model.orderList.length+1),v.css({"pointer-events":"none"}));var b=v.find(".shape_canvas");b.attr({width:(f+20).toScale(),height:(x+20).toScale()}),v.css({left:(g-10).toScale(),top:(y-10).toScale(),width:(f+20).toScale(),height:(x+20).toScale()});var S=b[0].getContext("2d");S.scale(Designer.config.scale,Designer.config.scale),S.translate(10,10);var w=Utils.getLinkerLineStyle(e.lineStyle);S.lineWidth=w.lineWidth,S.strokeStyle="rgb("+w.lineColor+")",S.fillStyle="rgb("+w.lineColor+")",S.save();var k={x:n.x-g,y:n.y-y},M={x:r.x-g,y:r.y-y};if(S.save(),"dashed"==w.lineStyle?this.setLineDash(S,[5*w.lineWidth,2*w.lineWidth]):"dot"==w.lineStyle?this.setLineDash(S,[w.lineWidth,1.5*w.lineWidth]):"dashdot"==w.lineStyle&&this.setLineDash(S,[5*w.lineWidth,2*w.lineWidth,w.lineWidth,2*w.lineWidth]),S.lineJoin="round",S.beginPath(),this.actions.move.call(S,k),"curve"==e.linkerType){var D=i[0],_=i[1],I={x1:D.x-g,y1:D.y-y,x2:_.x-g,y2:_.y-y,x:M.x,y:M.y};this.actions.curve.call(S,I)}else{for(c=0;c").appendTo(t));var n=e.fontStyle,r="scale("+Designer.config.scale+")",s={"line-height":Math.round(1.25*n.size)+"px","font-size":n.size+"px","font-family":n.fontFamily,"font-weight":n.bold?"bold":"normal","font-style":n.italic?"italic":"normal","text-align":n.textAlign,color:"rgb("+n.color+")","text-decoration":n.underline?"underline":"none","-webkit-transform":r,"-ms-transform":r,"-o-transform":r,"-moz-transform":r,transform:r};if(i.css(s),null!=e.text&&""!=e.text){i.show();var a=e.text.replace(//g,">").replace(/\n/g,"
");i.html(a+"
");var o=this.getLinkerMidpoint(e),l=t.position();i.css({left:o.x.toScale()-l.left-i.width()/2,top:o.y.toScale()-l.top-i.height()/2})}else i.hide()},getLinkerMidpoint:function(e){var t={};if("normal"==e.linkerType)t={x:.5*e.from.x+.5*e.to.x,y:.5*e.from.y+.5*e.to.y};else if("curve"==e.linkerType){var i=e.from,n=e.points[0],r=e.points[1],s=e.to;t={x:.125*i.x+.375*n.x+.375*r.x+.125*s.x,y:.125*i.y+.375*n.y+.375*r.y+.125*s.y}}else{var a=[];a.push(e.from),(a=a.concat(e.points)).push(e.to);for(var o=0,l=1;ld){var u=(d-h)/p;t={x:(1-u)*n.x+u*r.x,y:(1-u)*n.y+u*r.y};break}h=c}}return t},controlStatus:{resizeDir:[],rotatable:!0},drawControls:function(e){var t=$("#shape_controls");if(0==t.length){var i=$("#designer_canvas");(t=$("
").appendTo(i)).append(""),t.append("
"),t.append("
"),t.append("
"),t.append("
"),t.append("
"),t.append("
"),t.append("
"),t.append("
"),Designer.op.shapeResizable(),t.append(""),Designer.op.shapeRotatable(),t.append("
"),Designer.op.groupShapeChangable(),$(".shape_controller").css({"border-color":Designer.config.anchorColor,width:Designer.config.anchorSize-2,height:Designer.config.anchorSize-2})}$(".shape_controller").css({"z-index":Model.orderList.length}),$(".change_shape_icon").hide(),t.show();var n,r,s=0;1==e.length?(n=(l=Model.getShapeById(e[0])).props,s=l.props.angle,r=l.resizeDir,l.groupName&&SchemaGroup.groupExists(l.groupName)&&$(".change_shape_icon").show()):(n=Utils.getControlBox(e),r=["tl","tr","br","bl"]);for(var a=!0,o=0;o1)&&(r=[])}return this.controlStatus.rotatable=a,this.controlStatus.resizeDir=r,this.rotateControls(n,s),t},rotateControls:function(e,t){var i=$("#shape_controls"),n=Utils.getRotatedBox(e,t),r=n.w.toScale(),s=n.h.toScale();i.css({left:n.x.toScale(),top:n.y.toScale(),width:r,height:s,"z-index":Model.orderList.length});var a=r+20,o=s+20,l=$("#controls_bounding");l.attr({width:a,height:o});var d=l[0].getContext("2d");d.lineJoin="round",0==this.controlStatus.resizeDir.length?(d.lineWidth=2,d.strokeStyle=Designer.config.selectorColor,d.globalAlpha=.8):(d.lineWidth=1,d.strokeStyle=Designer.config.selectorColor,d.globalAlpha=.5),d.save(),d.clearRect(0,0,a,o),d.translate(a/2,o/2),d.rotate(t),d.translate(-a/2,-o/2),d.translate(9.5,9.5);var h={x:Math.round((e.x-n.x).toScale()),y:Math.round((e.y-n.y).toScale()),w:Math.floor(e.w.toScale()+1),h:Math.floor(e.h.toScale()+1)};d.strokeRect(h.x,h.y,h.w,h.h),d.restore();var p=0-Designer.config.anchorSize/2;e=Utils.toScale(e),n=Utils.toScale(n);var c={x:e.x+e.w/2,y:e.y+e.h/2};i.children(".shape_controller").hide();for(var u=0;u=0?e.x:f.indexOf("r")>=0?e.x+e.w:e.x+e.w/2,y=f.indexOf("t")>=0?e.y:f.indexOf("b")>=0?e.y+e.h:e.y+e.h/2;var v=Utils.getRotated(c,{x:g,y:y},t);x.css({left:v.x-n.x+p,top:v.y-n.y+p})}var m=Math.PI/8;if(i.children(".shape_controller").removeClass("s n e w"),t>m&&t<=3*m?(i.children("div[resizeDir=tl]").addClass("n"),i.children("div[resizeDir=tr]").addClass("e"),i.children("div[resizeDir=br]").addClass("s"),i.children("div[resizeDir=bl]").addClass("w"),i.children("div[resizeDir=l]").addClass("n w"),i.children("div[resizeDir=r]").addClass("s e"),i.children("div[resizeDir=b]").addClass("s w"),i.children("div[resizeDir=t]").addClass("n e")):t>3*m&&t<=5*m?(i.children("div[resizeDir=tl]").addClass("n e"),i.children("div[resizeDir=tr]").addClass("s e"),i.children("div[resizeDir=br]").addClass("s w"),i.children("div[resizeDir=bl]").addClass("n w"),i.children("div[resizeDir=l]").addClass("n"),i.children("div[resizeDir=r]").addClass("s"),i.children("div[resizeDir=b]").addClass("w"),i.children("div[resizeDir=t]").addClass("e")):t>5*m&&t<=7*m?(i.children("div[resizeDir=tl]").addClass("e"),i.children("div[resizeDir=tr]").addClass("s"),i.children("div[resizeDir=br]").addClass("w"),i.children("div[resizeDir=bl]").addClass("n"),i.children("div[resizeDir=l]").addClass("n e"),i.children("div[resizeDir=r]").addClass("s w"),i.children("div[resizeDir=b]").addClass("n w"),i.children("div[resizeDir=t]").addClass("s e")):t>7*m&&t<=9*m?(i.children("div[resizeDir=tl]").addClass("s e"),i.children("div[resizeDir=tr]").addClass("s w"),i.children("div[resizeDir=br]").addClass("n w"),i.children("div[resizeDir=bl]").addClass("n e"),i.children("div[resizeDir=l]").addClass("e"),i.children("div[resizeDir=r]").addClass("w"),i.children("div[resizeDir=b]").addClass("n"),i.children("div[resizeDir=t]").addClass("s")):t>9*m&&t<=11*m?(i.children("div[resizeDir=tl]").addClass("s"),i.children("div[resizeDir=tr]").addClass("w"),i.children("div[resizeDir=br]").addClass("n"),i.children("div[resizeDir=bl]").addClass("e"),i.children("div[resizeDir=l]").addClass("s e"),i.children("div[resizeDir=r]").addClass("n w"),i.children("div[resizeDir=b]").addClass("n e"),i.children("div[resizeDir=t]").addClass("s w")):t>11*m&&t<=13*m?(i.children("div[resizeDir=tl]").addClass("s w"),i.children("div[resizeDir=tr]").addClass("n w"),i.children("div[resizeDir=br]").addClass("n e"),i.children("div[resizeDir=bl]").addClass("s e"),i.children("div[resizeDir=l]").addClass("s"),i.children("div[resizeDir=r]").addClass("n"),i.children("div[resizeDir=b]").addClass("e"),i.children("div[resizeDir=t]").addClass("w")):t>13*m&&t<=15*m?(i.children("div[resizeDir=tl]").addClass("w"),i.children("div[resizeDir=tr]").addClass("n"),i.children("div[resizeDir=br]").addClass("e"),i.children("div[resizeDir=bl]").addClass("s"),i.children("div[resizeDir=l]").addClass("s w"),i.children("div[resizeDir=r]").addClass("n e"),i.children("div[resizeDir=b]").addClass("s e"),i.children("div[resizeDir=t]").addClass("n w")):(i.children("div[resizeDir=tl]").addClass("n w"),i.children("div[resizeDir=tr]").addClass("n e"),i.children("div[resizeDir=br]").addClass("s e"),i.children("div[resizeDir=bl]").addClass("s w"),i.children("div[resizeDir=l]").addClass("w"),i.children("div[resizeDir=r]").addClass("e"),i.children("div[resizeDir=b]").addClass("s"),i.children("div[resizeDir=t]").addClass("n")),this.controlStatus.rotatable){var b=i.find(".shape_rotater");b.show();var S={x:e.x+e.w/2,y:e.y-20},w=Utils.getRotated(c,S,t);b.css({top:w.y-20-n.y,left:w.x-20.5-n.x});var k=b[0].getContext("2d");k.lineWidth=1,k.strokeStyle=Designer.config.selectorColor,k.fillStyle="white",k.save(),k.clearRect(0,0,41,40),k.translate(20.5,20),k.rotate(t),k.translate(-20.5,-20),k.beginPath(),k.moveTo(20.5,20),k.lineTo(20.5,40),k.stroke(),k.beginPath(),k.arc(20.5,20,Designer.config.rotaterSize/2,0,2*Math.PI),k.closePath(),k.fill(),k.stroke(),k.restore()}else i.find(".shape_rotater").hide()},renderShapeLink:function(e,t){(e.find(".shape_link_point").remove(),t.link)&&$("").appendTo(e).on("mousedown.link",function(e){e.stopPropagation();var t=Model.getShapeById($(this).parent().attr("id"));if(myshapeLink=t,null!=t){var i=t.props.x,n=t.props.y,r=t.props.w,s=t.props.h,a=$("#link-dialog-normal_contextmenu");a.empty();for(var o=[],l=0;l0&&window.opener){var c=parent.window.$("#appId").val(),u={sid:$("#sid").val(),cmd:"com.actionsoft.apps.coe.pal_pl_repository_designer_viewer_link_perm",uuids:h,filePerms:filePerms};window.opener?u.modelType="used":null!=c&&"com.actionsoft.apps.coe.pal"!=c&&""!=c&&(u.modelType="published"),awsui.ajax.request({url:"./jd",method:"POST",data:u,async:!1,ok:function(e){for(var t=[],i=e.data.uuids,n=0;n"+g.name+"";"owner"==role&&(y+='
删除
"),y+="",a.append(y)}var f=Utils.getShapeByPosition(i,n,!1),x=Designer.clipboard.elements.length;if(null==f)x>0&&(a.children("li[ac=paste]").show(),a.children(".devi_clip").show());else{t=f.shape;a.children("li[ac=cut]").show()}a.css({display:"block","z-index":Model.orderList.length+3,left:i+r+10,top:n+s}),$(document).on("mousedown.link",":not(#link-dialog-normal_contextmenu li):not(#link-dialog-normal_contextmenu ul):not(#link-dialog-normal_contextmenu a):not(#link-dialog-normal_contextmenu div)",function(e){if("link-dialog-normal_contextmenu"==this.id)return!1;a.hide()})}e.stopPropagation()})},renderSahpeAttachment:function(e,t){e.find(".shape_attachment_point").remove();var i=[],n=[],r=!1,s=function(e){$.ajax({method:"POST",async:e,url:"./jd?sid="+encodeURIComponent(sid)+"&cmd=com.actionsoft.apps.coe.pal_processlevel_upfile_load",data:{pl_uuid:ruuid,uuids:t.id},success:function(s){i=s.data.list,$.ajax({method:"POST",async:e,url:"./jd?sid="+encodeURIComponent(sid)+"&cmd=com.actionsoft.apps.coe.pal_processlevel_relation_upfile_load",data:{pl_uuid:ruuid,shape_uuid:t.id},success:function(e){n=e.data.list,r=!0}})}})};s(!0);var a=(new Date).getTime(),o=window.setInterval(function(){((new Date).getTime()-a>5e3||1==r)&&(window.clearInterval(o),(i&&i.length>0||n&&n.length>0)&&$("
").appendTo(e).on("mousedown.attachment",function(e){e.stopPropagation(),s(!1);var t=Model.getShapeById($(this).parent().attr("id"));if(myshapeLink=t,null!=t){var r=t.props.x,a=t.props.y,o=t.props.w,l=t.props.h,d=$("#attachment-dialog-normal_contextmenu");d.empty(),d.append('');for(var h=0;h<2;h++){var p=i,c="附件";if(0==h||(p=n,c="关联附件"),p.length>0){d.append('
  • '+c+"
  • ");for(var u=0;u'+g.fileName+"";x&&(v+='
    下载
    "),v+="",d.append(v)}}}0==i.length&&0==n.length&&d.append('
  • 无附件
  • ');var m=Utils.getShapeByPosition(r,a,!1),b=Designer.clipboard.elements.length;if(null==m)b>0&&(d.children("li[ac=paste]").show(),d.children(".devi_clip").show());else{t=m.shape;d.children("li[ac=cut]").show()}d.css({display:"block","z-index":Model.orderList.length+3,left:r+o+10,top:a+l}),$(document).on("mousedown.attachment",":not(#attachment-dialog-normal_contextmenu span):not(#attachment-dialog-normal_contextmenu li):not(#attachment-dialog-normal_contextmenu ul):not(#attachment-dialog-normal_contextmenu a):not(#attachment-dialog-normal_contextmenu div)",function(e){if("attachment-dialog-normal_contextmenu"==this.id)return!1;d.hide()})}e.stopPropagation()}))},100)}}},Model={define:{},persistence:{},orderList:[],maxZIndex:0,linkerMap:{map:{},add:function(e,t){this.map[e]||(this.map[e]=[]),this.map[e].indexOf(t)<0&&this.map[e].push(t)},remove:function(e,t){this.map[e]&&Utils.removeFromArray(this.map[e],t)},empty:function(){this.map={}}},groupMap:{map:{},add:function(e,t){this.map[e]=t},push:function(e,t){this.map[e]||(this.map[e]=[]),this.map[e].push(t)},remove:function(e){delete this.map[e]},empty:function(){this.map={}}},create:function(e,t,i){var n=Utils.newId(),r=Utils.copy(Schema.shapes[e]);r.id=n,r.props.x=t,r.props.y=i,r.props.zindex=Model.maxZIndex+1,r.props=$.extend(!0,{},Schema.shapeDefaults.props,r.props);for(var s=0;s0)for(var o in Model.define.localAttribute[r.name])a.attributesJsonArray.push(Utils.copy(Model.define.localAttribute[r.name][o]))}return Designer.events.push("create",r),r},add:function(e,t){this.addMulti([e],t)},addMulti:function(e,t){void 0===t&&(t=!0);for(var i=[],n=0;n0)for(var p=0;p0&&this.updateMulti(r),MessageSource.commit(),!0},updatePage:function(e,t){var i=$.extend(Model.define.page,e),n={page:Utils.copy(Model.persistence.page),update:Utils.copy(i)};Model.persistence.page=Utils.copy(i),MessageSource.send("updatePage",n),Designer.initialize.initCanvas()},updateLocalAttribute:function(e){var t=$.extend(Model.define.localAttribute,e),i={localAttribute:Utils.copy(Model.persistence.localAttribute),update:Utils.copy(t)};Model.persistence.localAttribute=Utils.copy(t),MessageSource.send("updateLocalAttribute",i)},getShapeById:function(e){return this.define.elements[e]},getPersistenceById:function(e){return this.persistence.elements[e]},build:function(){for(var e in this.orderList=[],this.linkerMap.empty(),Model.define.elements){var t=Model.getShapeById(e);this.orderList.push({id:t.id,zindex:t.props.zindex}),"linker"==t.name&&(null!=t.from.id&&this.linkerMap.add(t.from.id,t.id),null!=t.to.id&&this.linkerMap.add(t.to.id,t.id)),t.group&&this.groupMap.push(t.group,t.id)}this.orderList.sort(function(e,t){return e.zindex-t.zindex});for(var i=0;i0&&(n=this.orderList[this.orderList.length-1].zindex),this.maxZIndex=n},getShapeLinkers:function(e){return this.linkerMap.map[e]},getGroupShapes:function(e){return this.groupMap.map[e]},changeShape:function(e,t){var i=Schema.shapes[t];e.name=t,e.title=i.shapeName,e.attribute=i.attribute,e.dataAttributes=i.dataAttributes,e.path=i.path,e.textBlock=i.textBlock,e.anchors=i.anchors,Schema.initShapeFunctions(e),Designer.painter.renderShape(e)}},Utils={getDomById:function(e){return document.getElementById(e)},newId:function(){return(Math.random()+(new Date).getTime()).toString(16).replace(".","")},getShapeByPosition:function(e,t,i){for(var n=[],r=Model.orderList.length-1;r>=0;r--){var s=Model.orderList[r].id,a=$("#"+s),o=Model.getShapeById(s),l=a.position(),d=e-l.left,h=t-l.top,p={x:l.left,y:l.top,w:a.width(),h:a.height()},c=a.find(".shape_canvas")[0].getContext("2d"),u=this.pointInRect(e,t,p);if("linker"==o.name){if(!u)continue;if(i)continue;var g={x:e-(v=(v=10).toScale()),y:t-v,w:2*v,h:2*v};if(this.pointInRect(o.to.x.toScale(),o.to.y.toScale(),g)){var y={type:"linker_point",point:"end",shape:o};n.push(y)}else if(this.pointInRect(o.from.x.toScale(),o.from.y.toScale(),g)){y={type:"linker_point",point:"from",shape:o};n.push(y)}else{var f=a.find(".text_canvas"),x=f.position();g={x:x.left,y:x.top,w:f.width(),h:f.height()};if(this.pointInRect(d,h,g)){y={type:"linker_text",shape:o};n.push(y);continue}if(v=(v=7).toScale(),(T=this.pointInLinker({x:e.restoreScale(),y:t.restoreScale()},o,v))>-1){y={type:"linker",shape:o,pointIndex:T};n.push(y)}}}else{if(u&&o.locked&&!i){if(c.isPointInPath(d,h)){y={type:"shape",shape:o};n.push(y)}continue}var v=7;if(u){g={x:e-(v=v.toScale()),y:t-v,w:2*v,h:2*v};for(var m={x:o.props.x+o.props.w/2,y:o.props.y+o.props.h/2},b=o.getAnchors(),S=(y=null,0);S0){var I=_.position(),U=d-I.left,C=h-I.top;if(_[0].getContext("2d").isPointInPath(U,C)){y={type:"dataAttribute",shape:o,attribute:D};break}}}}if(null!=y){n.push(y);continue}}if(!u)continue;if(c.isPointInPath(d,h))if(i){if((b=o.getAnchors())&&b.length){y={type:"shape",shape:o};n.push(y)}}else{y={type:"shape",shape:o};n.push(y)}else if(!o.attribute||void 0===o.attribute.linkable||o.attribute.linkable)if(null!=(k=Utils.getPointAngle(s,e.restoreScale(),t.restoreScale(),v))){y=null;for(var P={angle:k},L=1;L<=v;L++)if(0==k?(P.x=d+L,P.y=h):k1&&i)y=n[0];else if(n.length>1){var z=n[0];if("bounding"==z.type&&"linker_point"!=z.type&&"linker"!=z.type)return z;var T=[],A=[],B=[];for(r=0;r0&&A.length>0)for(r=0;r0&&(A.sort(function(e,t){return Utils.isSelected(e.shape.id)&&!Utils.isSelected(t.shape.id)?-1:!Utils.isSelected(e.shape.id)&&Utils.isSelected(t.shape.id)?1:t.shape.props.zindex-e.shape.props.zindex}),y=A[0]),null==y&&T.length>0&&(T.sort(function(e,t){return Utils.isSelected(e.shape.id)&&!Utils.isSelected(t.shape.id)?-1:!Utils.isSelected(e.shape.id)&&Utils.isSelected(t.shape.id)?1:t.shape.props.zindex-e.shape.props.zindex}),y=T[0]),null==y&&(y=n[0])}return y},checkCross:function(e,t,i,n){var r=!1,s=(t.x-e.x)*(n.y-i.y)-(t.y-e.y)*(n.x-i.x);if(0!=s){var a=((e.y-i.y)*(n.x-i.x)-(e.x-i.x)*(n.y-i.y))/s,o=((e.y-i.y)*(t.x-e.x)-(e.x-i.x)*(t.y-e.y))/s;a>=0&&a<=1&&o>=0&&o<=1&&(r=!0)}return r},rectCross:function(e,t){var i=e.x,n=e.x+e.w,r=e.y,s=e.y+e.h,a=t.x,o=t.x+t.w,l=t.y,d=t.y+t.h;return i=i.x&&e<=i.x+i.w&&t>=i.y&&t<=i.y+i.h},pointInLinker:function(e,t,i){for(var n=this.getLinkerLinePoints(t),r={x:e.x-i,y:e.y},s={x:e.x+i,y:e.y},a={x:e.x,y:e.y-i},o={x:e.x,y:e.y+i},l=1;lt.x2)&&(t.x2=n.x+n.w),(null==t.y2||n.y+n.h>t.y2)&&(t.y2=n.y+n.h)}return{x:t.x1,y:t.y1,w:t.x2-t.x1,h:t.y2-t.y1}},getShapesBounding:function(e){for(var t={x1:null,y1:null,x2:null,y2:null},i=0;it.x2)&&(t.x2=n.x+n.w),(null==t.y2||n.y+n.h>t.y2)&&(t.y2=n.y+n.h)}return{x:t.x1,y:t.y1,w:t.x2-t.x1,h:t.y2-t.y1}},getShapeContext:function(e){return Utils.getDomById(e).getElementsByTagName("canvas")[0].getContext("2d")},selectIds:[],selectShape:function(e,t){if("string"==typeof e){var i=e;(e=[]).push(i)}if(!(e.length<=0)){for(var n=Utils.mergeArray([],e),r=0;r0&&!h)Designer.painter.drawControls(a);void 0===t&&(t=!0),this.selectCallback&&t&&this.selectCallback(),Designer.events.push("selectChanged"),this.showLinkerCursor()}},selectCallback:null,unselect:function(){var e=this.selectIds;this.selectIds=[];for(var t=0;t=0&&!this.isLocked(e)},isLocked:function(e){return!!Model.getShapeById(e).locked},linkerCursorTimer:null,showLinkerCursor:function(){this.hideLinkerCursor();var e=Utils.getSelectedIds();if(1==e.length){var t=Model.getShapeById(e[0]);if("linker"!=t.name){var i=Model.linkerMap.map[t.id];if(i&&i.length){for(var n=[],r=0;r").appendTo("#designer_canvas"),r=i.linker,s=(r.lineStyle.lineWidth+2).toScale();s<5&&(s=5);var a=s/2;i.half=a,i.dom=n,n.css({width:s,height:s,"-webkit-border-radius":a,"-moz-border-radius":a,"-ms-border-radius":a,"-o-border-radius":a,"border-radius":a,"z-index":$("#"+r.id).css("z-index")})}this.linkerCursorTimer=setInterval(function(){for(var t=0;t=i.maxT&&(i.t=0,i.dom.show());var r=i.t;if("broken"==n.linkerType)for(var s=1;s=a.t&&r=1&&i.dom.hide()}},30)},hideLinkerCursor:function(){this.linkerCursorTimer&&clearInterval(this.linkerCursorTimer),$(".linker_cursor").remove()},showLinkerControls:function(){this.hideLinkerControls();var e=Utils.getSelectedIds(),t=null;if(1==e.length){var i=Model.getShapeById(e[0]);"linker"==i.name&&"curve"==i.linkerType&&(t=i)}function n(e,t){var i=null,n=null;"from"==t?(i=e.from,n=e.points[0]):(i=e.to,n=e.points[1]);var r=Utils.measureDistance(i,n).toScale()-6,s={x:(.5*i.x+.5*n.x).toScale(),y:(.5*i.y+.5*n.y).toScale()},a=Utils.getAngle(i,n)+Math.PI/2,o=$("
    ").appendTo("#designer_canvas"),l=$("
    ").appendTo("#designer_canvas"),d="rotate("+Math.round(a/(2*Math.PI)*360)+"deg)";return o.css({left:s.x,top:s.y-r/2,height:r,"z-index":Model.orderList.length,"-webkit-transform":d,"-ms-transform":d,"-o-transform":d,"-moz-transform":d,transform:d}),l.css({left:n.x.toScale()-4,top:n.y.toScale()-4,"z-index":Model.orderList.length}),l.attr("ty",t),l.unbind().bind("mousedown",function(i){e=Model.getShapeById(e.id);var n=null;n="from"==t?e.points[0]:e.points[1],i.stopPropagation(),l.addClass("moving"),Designer.op.changeState("changing_curve"),$(document).bind("mousemove.change_curve",function(t){var i=Utils.getRelativePos(t.pageX,t.pageY,$("#designer_canvas"));n.x=i.x,n.y=i.y,Designer.painter.renderLinker(e),Model.define.elements[e.id]=e,Utils.showLinkerControls(),$(".linker_control_point[ty="+l.attr("ty")+"]").addClass("moving"),$(document).unbind("mouseup.changed_curve").bind("mouseup.changed_curve",function(t){Model.update(e),$(document).unbind("mouseup.changed_curve")})}),$(document).unbind("mouseup.change_curve").bind("mouseup.change_curve",function(e){$(document).unbind("mouseup.change_curve"),$(document).unbind("mousemove.change_curve"),$(".linker_control_point").removeClass("moving"),Designer.op.resetState()})}),l}null!=t&&(n(t,"from"),n(t,"to"))},hideLinkerControls:function(){$(".linker_control_line").remove(),$(".linker_control_point").remove()},showAnchors:function(e){if(!($(".shape_contour[forshape="+e.id+"]").length>0)){var t=$("
    ").appendTo($("#designer_canvas"));t.css({left:e.props.x.toScale(),top:e.props.y.toScale(),"z-index":Model.orderList.length+1}),Utils.isSelected(e.id)||t.addClass("hovered_contour");for(var i=Designer.config.anchorSize-2,n={"border-color":Designer.config.anchorColor,"border-radius":Designer.config.anchorSize/2,width:i,height:i},r=e.getAnchors(),s={x:e.props.w/2,y:e.props.h/2},a=e.props.angle,o=0;o").appendTo(t),h=this.getRotated(s,l,a);n.left=h.x.toScale()-Designer.config.anchorSize/2,n.top=h.y.toScale()-Designer.config.anchorSize/2,d.css(n)}}},hideAnchors:function(){$(".hovered_contour").remove()},removeAnchors:function(){$("#dock_btn_richtext").hide(),$(".shape_contour").remove()},showLockers:function(e){var t=$("#"+e.id),i=t.position();function n(e){(function(){var e=$("").appendTo(t),i=e[0].getContext("2d");return i.strokeStyle="#777",i.lineWidth=1,i.beginPath(),i.moveTo(2,2),i.lineTo(9,9),i.moveTo(2,9),i.lineTo(9,2),i.stroke(),e})().css({left:e.x.toScale()-i.left-5,top:e.y.toScale()-i.top-5})}if("linker"!=e.name){var r=e.props,s={x:r.x+r.w/2,y:r.y+r.h/2};n(this.getRotated(s,{x:r.x,y:r.y},e.props.angle)),n(this.getRotated(s,{x:r.x+r.w,y:r.y},e.props.angle)),n(this.getRotated(s,{x:r.x+r.w,y:r.y+r.h},e.props.angle)),n(this.getRotated(s,{x:r.x,y:r.y+r.h},e.props.angle))}else n(e.from),n(e.to)},removeLockers:function(){$(".shape_locker").remove()},measureDistance:function(e,t){var i=t.y-e.y,n=t.x-e.x;return Math.sqrt(Math.pow(i,2)+Math.pow(n,2))},removeFromArray:function(e,t){var i=e.indexOf(t);return i>=0&&e.splice(i,1),e},addToArray:function(e,t){return e.indexOf(t)<0&&e.push(t),e},mergeArray:function(e,t){for(var i=0;i=t/4&&e=t/4*3&&e=t/4*5&&e=h.x-o&&b.x<=h.x+h.w+o){u=b.xr.y?(m=n,b=r,S=!1):(m=r,b=n,S=!0);h=Model.getShapeById(m.id).props,p=Model.getShapeById(b.id).props;if(b.x>=h.x-o&&b.x<=h.x+h.w+o){c=m.y+o;u=b.xr.x?(m=n,b=r,S=!1):(m=r,b=n,S=!0);h=Model.getShapeById(m.id).props,p=Model.getShapeById(b.id).props;if(b.y>=h.y-o&&b.y<=h.y+h.h+o){var u=m.x+o;c=b.y=h.y-o&&b.y<=h.y+h.h+o){u=m.x-o;c=b.y=h.x&&p.x<=g){var f=h.x+h.w/2;u=b.xy?g+o:y+o,p.ym.x){u=m.x+s/2;t.push({x:u,y:m.y}),t.push({x:u,y:b.y})}else{var x=h.y+h.h,v=p.y+p.h;u=m.x+o;if(v>=h.y&&p.y<=x){f=h.y+h.h/2;c=b.yv?x+o:v+o,p.x+p.w>m.x&&(u=p.x+p.w+o)}else c=b.ym.x&&b.y>m.y)t.push({x:b.x,y:m.y});else if(b.x>m.x&&p.x>m.x){u=p.x-m.x<60?m.x+(p.x-m.x)/2:m.x+o;c=b.y-o;t.push({x:u,y:m.y}),t.push({x:u,y:c}),t.push({x:b.x,y:c})}else if(b.x<=m.x&&b.y>h.y+h.h){x=h.y+h.h,u=m.x+o;c=b.y-x<60?x+(b.y-x)/2:b.y-o,t.push({x:u,y:m.y}),t.push({x:u,y:c}),t.push({x:b.x,y:c})}else{u=(y=p.x+p.w)>m.x?y+o:m.x+o,c=b.ym.y)t.push({x:b.x,y:m.y});else if(b.x=m.x&&b.y>h.y+h.h){x=h.y+h.h,u=m.x-o;c=b.y-x<60?x+(b.y-x)/2:b.y-o,t.push({x:u,y:m.y}),t.push({x:u,y:c}),t.push({x:b.x,y:c})}else{u=p.xm.x&&b.ym.x&&p.x>m.x){u=p.x-m.x<60?m.x+(p.x-m.x)/2:m.x+o;c=b.y+o;t.push({x:u,y:m.y}),t.push({x:u,y:c}),t.push({x:b.x,y:c})}else if(b.x<=m.x&&b.ym.x?y+o:m.x+o,c=b.y>h.y+h.h?b.y+o:h.y+h.h+o,t.push({x:u,y:m.y}),t.push({x:u,y:c}),t.push({x:b.x,y:c})}}else if(3==l&&4==d||4==l&&3==d){4==l?(m=n,b=r,S=!1):(m=r,b=n,S=!0);h=Model.getShapeById(m.id).props,y=(p=Model.getShapeById(b.id).props).x+p.w;if(b.x=m.x&&b.yh.y+h.h?b.y+o:h.y+h.h+o,t.push({x:u,y:m.y}),t.push({x:u,y:c}),t.push({x:b.x,y:c})}}S&&t.reverse()}else if(null!=n.id||null!=r.id){var m,b,S,w;null!=n.id?(m=n,b=r,S=!1,w=n.angle):(m=r,b=n,S=!0,w=r.angle);var k=Model.getShapeById(m.id).props;if(w>=i/4&&w=a)t.push({x:m.x,y:b.y});else{f=a/2;t.push({x:m.x,y:m.y-f}),t.push({x:b.x,y:m.y-f})}else if(t.push({x:m.x,y:m.y-o}),s>=a)if(b.x>=k.x-o&&b.x<=k.x+k.w+o){var M=k.x+k.w/2;b.x=k.x-o&&b.x<=k.x+k.w+o){M=k.x+k.w/2;b.x=i/4*3&&wm.x)if(s>=a){f=s/2;t.push({x:m.x+f,y:m.y}),t.push({x:m.x+f,y:b.y})}else t.push({x:b.x,y:m.y});else if(t.push({x:m.x+o,y:m.y}),s>=a)if(b.y>=k.y-o&&b.y<=k.y+k.h+o){M=k.y+k.h/2;b.y=k.y-o&&b.y<=k.y+k.h+o){M=k.y+k.h/2;b.y=i/4*5&&wm.y)if(s>=a)t.push({x:m.x,y:b.y});else{f=a/2;t.push({x:m.x,y:m.y+f}),t.push({x:b.x,y:m.y+f})}else if(t.push({x:m.x,y:m.y+o}),s>=a)if(b.x>=k.x-o&&b.x<=k.x+k.w+o){M=k.x+k.w/2;b.x=k.x-o&&b.x<=k.x+k.w+o){M=k.x+k.w/2;b.x=a){f=s/2;t.push({x:m.x-f,y:m.y}),t.push({x:m.x-f,y:b.y})}else t.push({x:b.x,y:m.y});else if(t.push({x:m.x-o,y:m.y}),s>=a)if(b.y>=k.y-o&&b.y<=k.y+k.h+o){M=k.y+k.h/2;b.y=k.y-o&&b.y<=k.y+k.h+o){M=k.y+k.h/2;b.y=a){f=(r.x-n.x)/2;t.push({x:n.x+f,y:n.y}),t.push({x:n.x+f,y:r.y})}else{f=(r.y-n.y)/2;t.push({x:n.x,y:n.y+f}),t.push({x:r.x,y:n.y+f})}}else if("curve"==e.linkerType){n=e.from,r=e.to;var D=.4*this.measureDistance(n,r);function _(e,t){if(null!=e.id)return{x:e.x-D*Math.cos(e.angle),y:e.y-D*Math.sin(e.angle)};var i=Math.abs(e.y-t.y),n=Math.abs(e.x-t.x),r=Math.atan(i/n),s={};return e.x<=t.x?s.x=e.x+D*Math.cos(r):s.x=e.x-D*Math.cos(r),e.y<=t.y?s.y=e.y+D*Math.sin(r):s.y=e.y-D*Math.sin(r),s}t.push(_(n,r)),t.push(_(r,n))}return t},getLinkerLinePoints:function(e){var t=[];if("curve"!=e.linkerType)t.push(e.from),t=t.concat(e.points);else for(var i=0;i<=1;){var n={x:(1-i)*(1-i)*(1-i)*e.from.x+3*(1-i)*(1-i)*i*e.points[0].x+3*(1-i)*i*i*e.points[1].x+i*i*i*e.to.x,y:(1-i)*(1-i)*(1-i)*e.from.y+3*(1-i)*(1-i)*i*e.points[0].y+3*(1-i)*i*i*e.points[1].y+i*i*i*e.to.y};t.push(n),i+=.05}return t.push(e.to),t},getLinkerBox:function(e){for(var t=this.getLinkerLinePoints(e),i=t[0].x,n=t[0].y,r=t[0].x,s=t[0].y,a=0;ar&&(r=o.x),o.ys&&(s=o.y)}return{x:i,y:n,w:r-i,h:s-n}},getShapeBox:function(e){var t=e.props,i=e.props.angle;return this.getRotatedBox(t,i)},getRotatedBox:function(e,t,i){if(0==t)return e;i||(i={x:e.x+e.w/2,y:e.y+e.h/2});var n=this.getRotated(i,{x:e.x,y:e.y},t),r=this.getRotated(i,{x:e.x+e.w,y:e.y},t),s=this.getRotated(i,{x:e.x+e.w,y:e.y+e.h},t),a=this.getRotated(i,{x:e.x,y:e.y+e.h},t),o=Math.min(n.x,r.x,s.x,a.x),l=Math.max(n.x,r.x,s.x,a.x),d=Math.min(n.y,r.y,s.y,a.y);return{x:o,y:d,w:l-o,h:Math.max(n.y,r.y,s.y,a.y)-d}},getRotated:function(e,t,i){var n=this.measureDistance(e,t);if(0==n||0==i)return t;var r=Math.atan(Math.abs(t.x-e.x)/Math.abs(e.y-t.y));t.x>=e.x&&t.y>=e.y?r=Math.PI-r:t.x<=e.x&&t.y>=e.y?r=Math.PI+r:t.x<=e.x&&t.y<=e.y&&(r=2*Math.PI-r);var s=((r%=2*Math.PI)+i)%(2*Math.PI);return{x:e.x+Math.sin(s)*n,y:e.y-Math.cos(s)*n}},getShapeAnchorInLinker:function(e){for(var t=e.getAnchors(),i=[],n={x:e.props.x+e.props.w/2,y:e.props.y+e.props.h/2},r=0;r=0;h--){var p=Model.orderList[h].id,c=Model.getShapeById(p);if("linker"==c.name){var u=c,g=null;d=3;for(r=0;r-1&&(null==g&&(g={linker:u,anchors:[],type:"line"}),g.anchors.push(f))}null!=g&&l.push(g)}}return l},getEndpointAngle:function(e,t){var i,n;if(i="from"==t?e.from:e.to,"normal"==e.linkerType)n="from"==t?e.to:e.from;else if("broken"==e.linkerType)n="from"==t?e.points[0]:e.points[e.points.length-1];else{var r,s=Utils.measureDistance(e.from,e.to);n={x:(1-(r="from"==t?12/s:1-12/s))*(1-r)*(1-r)*e.from.x+3*(1-r)*(1-r)*r*e.points[0].x+3*(1-r)*r*r*e.points[1].x+r*r*r*e.to.x,y:(1-r)*(1-r)*(1-r)*e.from.y+3*(1-r)*(1-r)*r*e.points[0].y+3*(1-r)*r*r*e.points[1].y+r*r*r*e.to.y}}return this.getAngle(n,i)},getAngle:function(e,t){var i=Math.atan(Math.abs(e.y-t.y)/Math.abs(e.x-t.x));return t.x<=e.x&&t.y>e.y?i=Math.PI-i:t.x=e.x&&t.y0)for(var a=0;a0)for(var i=0;i=0;n--){var r=Model.orderList[n].id;if(e.id!=r&&!Utils.isSelected(r)&&i.indexOf(r)<0){var s=Model.getShapeById(r);if(!(s.attribute&&void 0!==s.attribute.container&&0!=s.attribute.container||Utils.isFamilyShape(s,e))){var a=Utils.getShapeBox(s);Utils.rectInRect(a,e.props)&&(t.push(s),i.push(r))}}}return t}return t},getAttachedShapes:function(e){for(var t=[],i=0;i=0;a--){var o=Model.orderList[a].id,l=Model.getShapeById(o);l.attachTo==r.id&&!Utils.isSelected(o)&&t.indexOf(o)<0&&s.push(l)}n=n.concat(s)}}return n},copy:function(e){return $.extend(!0,{},e)},rangeChildren:function(e){var t=[];if(e.children&&e.children.length>0)if("verticalPool"==e.name){for(var i=[],n=[],r=0;r-1||t.push(o[h])}g.props.x=a,Designer.painter.renderShape(g),t.push(g),a+=g.props.w}n.sort(function(e,t){return e.props.y-t.props.y});var p=e.props.y+40;for(r=0;r-1||t.push(o[h])}g.props.y=p,Designer.painter.renderShape(g),t.push(g),p+=g.props.h}n.sort(function(e,t){return e.props.x-t.props.x});for(a=e.props.x+40,r=0;r=0;a--){var o=Model.orderList[a].id,l=Model.getShapeById(o);l.attribute&&l.attribute.collapseBy==r.id&&i.indexOf(o)<0&&s.push(l)}t=t.concat(s)}}return t},getCollapsedShapesById:function(e){for(var t=[],i=Model.orderList.length-1;i>=0;i--){var n=Model.orderList[i].id,r=Model.getShapeById(n);r.attribute&&r.attribute.collapseBy==e&&t.push(r)}return t},getShapeLineStyle:function(e,t){return 0!=t&&Model.define.theme&&Model.define.theme.shape?$.extend({},Schema.shapeDefaults.lineStyle,Model.define.theme.shape.lineStyle,e):$.extend({},Schema.shapeDefaults.lineStyle,e)},getLinkerLineStyle:function(e,t){return 0!=t&&Model.define.theme&&Model.define.theme.linker?$.extend({},Schema.linkerDefaults.lineStyle,Model.define.theme.linker.lineStyle,e):$.extend({},Schema.linkerDefaults.lineStyle,e)},getShapeFontStyle:function(e,t){return 0!=t&&Model.define.theme&&Model.define.theme.shape?$.extend({},Schema.shapeDefaults.fontStyle,Model.define.theme.shape.fontStyle,e):$.extend({},Schema.shapeDefaults.fontStyle,e)},getLinkerFontStyle:function(e,t){return 0!=t&&Model.define.theme&&Model.define.theme.linker?$.extend({},Schema.linkerDefaults.fontStyle,Model.define.theme.linker.fontStyle,e):$.extend({},Schema.linkerDefaults.fontStyle,e)},getShapeFillStyle:function(e,t){return 0!=t&&Model.define.theme&&Model.define.theme.shape?$.extend({},Schema.shapeDefaults.fillStyle,Model.define.theme.shape.fillStyle,e):$.extend({},Schema.shapeDefaults.fillStyle,e)},containsChinese:function(e){return escape(e).indexOf("%u")>=0},filterXss:function(e){return e=(e=(e=(e=(e=(e=(e=e.toString()).replace(//g,">")).replace(/%3E/g,">")).replace(/'/g,"'")).replace(/"/g,""")}},GradientHelper={createLinearGradient:function(e,t,i){var n,r,s,a=e.props;if(a.w>a.h?(n={x:0,y:a.h/2},r={x:a.w,y:a.h/2},s=(i.angle+Math.PI/2)%(2*Math.PI)):(n={x:a.w/2,y:0},r={x:a.w/2,y:a.h},s=i.angle),0!=s){var o={x:a.w/2,y:a.h/2};n=Utils.getRotated(o,n,s),r=Utils.getRotated(o,r,s),n.x<0&&(n.x=0),n.x>e.props.w&&(n.x=e.props.w),n.y<0&&(n.y=0),n.y>e.props.h&&(n.y=e.props.h),r.x<0&&(r.x=0),r.x>e.props.w&&(r.x=e.props.w),r.y<0&&(r.y=0),r.y>e.props.h&&(r.y=e.props.h)}var l=t.createLinearGradient(n.x,n.y,r.x,r.y);return l.addColorStop(0,"rgb("+i.beginColor+")"),l.addColorStop(1,"rgb("+i.endColor+")"),l},createRadialGradient:function(e,t,i){var n=e.props,r=n.h;n.w255&&(s=255);var a=Math.round(n+(255-n)/255*60);a>255&&(a=255);var o=Math.round(r+(255-r)/255*60);return o>255&&(o=255),s+","+a+","+o},getDarkerColor:function(e){var t=e.split(","),i=parseInt(t[0]),n=parseInt(t[1]),r=parseInt(t[2]),s=Math.round(i-i/255*60);s<0&&(s=0);var a=Math.round(n-n/255*60);a<0&&(a=0);var o=Math.round(r-r/255*60);return o<0&&(o=0),s+","+a+","+o}},MessageSource={batchSize:0,messages:[],withUndo:!0,withMessage:!0,withDock:!0,undoStack:{stack:[],push:function(e,t){this.stack.push(e),void 0===t&&(t=!0),t&&(MessageSource.redoStack.stack=[]),Designer.events.push("undoStackChanged",this.stack.length)},pop:function(){var e=this.stack.length;if(0==e)return null;var t=this.stack[e-1];return this.stack.splice(e-1,1),MessageSource.redoStack.push(t),Designer.events.push("undoStackChanged",this.stack.length),t}},redoStack:{stack:[],push:function(e){this.stack.push(e),Designer.events.push("redoStackChanged",this.stack.length)},pop:function(){var e=this.stack.length;if(0==e)return null;var t=this.stack[e-1];return this.stack.splice(e-1,1),MessageSource.undoStack.push(t,!1),Designer.events.push("redoStackChanged",this.stack.length),t}},beginBatch:function(){this.batchSize++},commit:function(){this.batchSize--,this.submit()},submit:function(){if(0==this.batchSize&&0!=this.messages.length){if(this.withDock&&Dock.update(!0),0==this.withMessage)return void(this.messages=[]);if(this.withUndo&&this.undoStack.push(this.messages),""!=chartId){var e=JSON.stringify(this.messages);"trial"!=role&&$("#saving_tip").text("<@i18n resource='diagraming.saving'/>");var t={action:"command",messages:e,ignore:"messages",name:userName};CLB.send(t,function(){"trial"!=role&&$("#saving_tip").text("<@i18n resource='diagraming.saved'/>")})}this.messages=[]}},send:function(e,t){this.messages.push({action:e,content:t}),this.submit()},receive:function(e){this.doWithoutMessage(function(){MessageSource.executeMessages(e,!0),Utils.showLinkerControls(),Utils.showLinkerCursor()})},undo:function(){var e=this.undoStack.pop();null!=e&&this.doWithoutUndo(function(){MessageSource.beginBatch();for(var t=0;t

    "+t.text+"

    ")}for(var i in $(".panel_title").unbind().bind("click",function(){$(this).parent().toggleClass("panel_collapsed")}),Schema.shapes){var n=Schema.shapes[i];if(n.attribute.visible&&"standard"!=n.category){if(("process_bpmn2"==n.category||"process.bpmn2"==n.category||"bpmn"==n.category)&&checkRunningTimeShape(n))continue;if(n.groupName)SchemaGroup.getGroup(n.groupName)[0]==i&&r(n,n.groupName);else r(n)}}function r(e,t){var i="
    ",n=$(i).appendTo("#panel_"+e.category);t&&n.append("
    ");var r=n.children()[0];n.bind("mouseenter",function(){if(!$(this).hasClass("readonly")){var t=$("#shape_thumb"),i=e.title,r=e.category;"bpmn"==e.category&&(r="process_bpmn2"),"lane"==r&&(r=methodId),r=r.replace(/_/g,"."),methodObjectDesc[r+"-"+e.name]&&(i+=":"+methodObjectDesc[r+"-"+e.name]),t.children("div").text(i);var s=t.children("canvas")[0].getContext("2d"),a={x:0,y:0,w:e.props.w,h:e.props.h,angle:e.props.angle},o=160;if(s.clearRect(0,0,o,160),e.props.w>=e.props.h?e.props.w>o&&(a.w=o,a.h=parseInt(e.props.h/e.props.w*a.w)):e.props.h>160&&(a.h=160,a.w=parseInt(e.props.w/e.props.h*a.h)),t.children("canvas").attr({width:180,height:a.h+20}),t.show(),e.props=a,s.save(),"text"!=e.name&&"umlText"!=e.name){s.globalAlpha=e.shapeStyle.alpha;var l=(180-a.w)/2;s.translate(l,10),s.translate(a.w/2,a.h/2),s.rotate(a.angle),s.translate(-a.w/2,-a.h/2),Designer.painter.renderShapePath(s,e,!0),Designer.painter.renderMarkers(s,e,!0)}else{s.translate(90,a.h/2+10),s.textBaseline="middle",s.textAlign="center";var d="";e.fontStyle.italic?d+="italic ":d+="normal ",e.fontStyle.bold?d+="bold ":d+="normal ",d+=e.fontStyle.size+"pt ",d+=e.fontStyle.fontFamily,s.font=d,s.fillStyle="rgb("+e.fontStyle.color+")",s.fillText(e.text,0,0)}s.restore();var h=n.offset().top-$("#designer_header").outerHeight()+n.height()/2-t.outerHeight()/2;h<5?h=5:h+t.outerHeight()>$("#designer_viewport").height()-5&&(h=$("#designer_viewport").height()-5-t.outerHeight()),t.css("top",h)}}).bind("mouseleave",function(){$("#shape_thumb").hide()}),Designer.painter.drawPanelItem(r,e.name)}$(".panel_box").die().live("mousedown",function(e){var t=$(this);if(!t.hasClass("readonly")){var i=t.attr("shapeName"),n=[];Designer.op.changeState("creating_from_panel");var r=null,s=null,a=$("#designer_canvas"),o=function(e){var t=$("#creating_shape_canvas"),i=$("#creating_shape_container");return 0==t.length&&(i=$("
    ").appendTo("#designer"),t=$("").appendTo(i)),i.css({left:"0px",top:"0px",width:$(".panel_container").width(),height:$("#shape_panel").outerHeight()}),Designer.painter.drawPanelItem(t[0],e),t}(i);$("#designer").bind("mousemove.creating",function(e){!function(e,t){$("#creating_shape_container").show();var i=Utils.getRelativePos(t.pageX,t.pageY,$("#creating_shape_container"));e.css({left:i.x-Designer.config.panelItemWidth/2,top:i.y-Designer.config.panelItemHeight/2})}(o,e)}),$("#canvas_container").bind("mousemove.create",function(e){var t=Utils.getRelativePos(e.pageX,e.pageY,a);null==r&&(r=function(e,t,i){Utils.newId();var n=Schema.shapes[e],r=t.restoreScale()-n.props.w/2,s=i.restoreScale()-n.props.h/2,a=Model.create(e,r,s);return Designer.painter.renderShape(a),a}(i,t.x,t.y),(s=$("#"+r.id)).attr("class","shape_box_creating")),s.css({left:t.x-s.width()/2+"px",top:t.y-s.height()/2+"px","z-index":Model.orderList.length}),r.props.x=t.x.restoreScale()-r.props.w/2,r.props.y=t.y.restoreScale()-r.props.h/2;var o=r.props,l=Designer.op.snapLine(o,[r.id],!0,r);l.attach?r.attachTo=l.attach.id:delete r.attachTo,s.css({left:(r.props.x-10).toScale()+"px",top:(r.props.y-10).toScale()+"px","z-index":Model.orderList.length}),n=Utils.getShapeAnchorInLinker(r),Designer.op.hideLinkPoint();for(var d=0;d=37&&t.keyCode<=40){if(null==e){var i=Utils.getSelected(),n=Utils.getFamilyShapes(i);i=i.concat(n);var r=Utils.getContainedShapes(i);i=i.concat(r);var s=Utils.getAttachedShapes(i);i=i.concat(s);var a=Utils.getOutlinkers(i);e=i.concat(a)}if(e.length>0){t.preventDefault();var o=10;t.ctrlKey&&(o=1),Utils.hideLinkerCursor(),37==t.keyCode?Designer.op.moveShape(e,{x:-o,y:0}):38==t.keyCode?Designer.op.moveShape(e,{x:0,y:-o}):39==t.keyCode?Designer.op.moveShape(e,{x:o,y:0}):40==t.keyCode&&Designer.op.moveShape(e,{x:0,y:o}),$(document).unbind("keyup.moveshape").bind("keyup.moveshape",function(){Model.updateMulti(e),e=null,$(document).unbind("keyup.moveshape"),Designer.op.hideTip(),Utils.showLinkerCursor()})}}else if(221==t.keyCode&&t.ctrlKey){var l="front";t.shiftKey&&(l="forward"),Designer.layerShapes(l)}else if(219==t.keyCode&&t.ctrlKey){l="back";t.shiftKey&&(l="backward"),Designer.layerShapes(l)}else{if(71==t.keyCode&&t.ctrlKey)t.preventDefault(),t.shiftKey?Designer.ungroup():Designer.group();else if(76==t.keyCode&&t.ctrlKey)t.preventDefault(),t.shiftKey?Designer.unlockShapes():Designer.lockShapes();else if(18==t.keyCode)Designer.op.changeState("drag_canvas");else if(27==t.keyCode)Designer.op.state?"creating_free_text"!=Designer.op.state&&"creating_free_linker"!=Designer.op.state||Designer.op.resetState():(Utils.unselect(),$(".menu.list").hide(),$(".menu").hide(),$(".color_picker").hide());else if(84!=t.keyCode||t.ctrlKey)if(73!=t.keyCode||t.ctrlKey)if(76!=t.keyCode||t.ctrlKey)if(66==t.keyCode&&t.ctrlKey){if((h=Utils.getSelectedIds()).length>0){var d=Model.getShapeById(h[0]);Designer.setFontStyle({bold:!d.fontStyle.bold}),UI.update()}}else if(73==t.keyCode&&t.ctrlKey){if((h=Utils.getSelectedIds()).length>0){d=Model.getShapeById(h[0]);Designer.setFontStyle({italic:!d.fontStyle.italic}),UI.update()}}else if(85==t.keyCode&&t.ctrlKey){if((h=Utils.getSelectedIds()).length>0){d=Model.getShapeById(h[0]);Designer.setFontStyle({underline:!d.fontStyle.underline}),UI.update()}t.preventDefault()}else if(32!=t.keyCode||t.ctrlKey)121==t.keyCode&&(t.preventDefault(),Dock.enterPresentation());else{var h;if(1==(h=Utils.getSelectedIds()).length){d=Model.getShapeById(h[0]);Designer.op.editShapeText(d)}t.preventDefault()}else $(".menu.list").hide(),Designer.op.changeState("creating_free_linker"),$("#designer_contextmenu").hide();else $(".menu.list").hide(),UI.showImageSelect(function(e,t,i){UI.insertImage(e,t,i)}),$("#designer_contextmenu").hide();else $(".menu.list").hide(),Designer.op.changeState("creating_free_text")}}),$("input,textarea,select").die().live("keydown.hotkey",function(e){e.stopPropagation()})},cancel:function(){$(document).unbind("keydown.hotkey")}},contextMenu:{init:function(){$("#designer_contextmenu").unbind("mousedown").bind("mousedown",function(e){e.stopPropagation()}),$("#designer_contextmenu").find("li:not(.devider)").unbind("click").bind("click",function(){var e=$(this);e.menuitem("isDisabled")||0!=e.children(".extend_menu").length||(Designer.contextMenu.execAction(e),Designer.contextMenu.hide())}),$("#canvas_container").unbind("contextmenu").bind("contextmenu",function(e){e.preventDefault();var t=$("#designer_canvas"),i=Utils.getRelativePos(e.pageX,e.pageY,t);Designer.contextMenu.show(i.x,i.y)})},destroy:function(){$("#canvas_container").unbind("contextmenu"),this.hide()},menuPos:{x:0,y:0,shape:null},show:function(e,t){this.menuPos.x=e,this.menuPos.y=t;var i=$("#designer_contextmenu"),n=Utils.getShapeByPosition(e,t,!1);i.children().hide(),i.children("li[ac=selectall]").show(),i.children(".devi_selectall").show(),i.children("li[ac=drawline]").show();var r=Designer.clipboard.elements.length;if(null==n)r>0&&(i.children("li[ac=paste]").show(),i.children(".devi_clip").show());else{var s=n.shape;if(this.menuPos.shape=s,s.locked)r>0&&(i.children("li[ac=paste]").show(),i.children(".devi_clip").show()),i.children("li[ac=unlock]").show(),i.children(".devi_shape").show();else{i.children("li[ac=cut]").show(),i.children("li[ac=copy]").show(),i.children("li[ac=duplicate]").show(),r>0&&i.children("li[ac=paste]").show(),i.children(".devi_clip").show(),i.children("li[ac=front]").show(),i.children("li[ac=back]").show(),i.children("li[ac=lock]").show();var a=Utils.getSelectedIds().length;a>=2&&(i.children("li[ac=group]").show(),$("#ctxmenu_align").show()),Utils.getSelectedGroups().length>=1&&i.children("li[ac=ungroup]").show(),i.children(".devi_shape").show(),1==a&&"linker"!=s.name&&s.link&&i.children("li[ac=changelink]").show(),("linker"==s.name||s.attribute.editable)&&i.children("li[ac=edit]").show(),i.children("li[ac=delete]").show(),i.children(".devi_del").show()}}i.css({display:"block","z-index":Model.orderList.length+3,left:e,top:t}),$(document).bind("mousedown.ctxmenu",function(){Designer.contextMenu.hide()})},hide:function(){$("#designer_contextmenu").hide(),$(document).unbind("mousedown.ctxmenu")},execAction:function(e){var t=e.attr("ac");if("cut"==t)Designer.clipboard.cut();else if("copy"==t)Designer.clipboard.copy();else if("paste"==t)Designer.clipboard.paste(this.menuPos.x,this.menuPos.y);else if("duplicate"==t)Designer.clipboard.duplicate();else if("front"==t)Designer.layerShapes("front");else if("back"==t)Designer.layerShapes("back");else if("lock"==t)Designer.lockShapes();else if("unlock"==t)Designer.unlockShapes();else if("group"==t)Designer.group();else if("ungroup"==t)Designer.ungroup();else if("align_shape"==t){var i=e.attr("al");Designer.alignShapes(i)}else"edit"==t?Designer.op.editShapeText(this.menuPos.shape):"delete"==t?Designer.op.removeShape():"selectall"==t?Designer.selectAll():"drawline"==t?Designer.op.changeState("creating_free_linker"):"changelink"==t&&UI.showInsertLink()}},init:function(){this.initialize.initLayout(),this.initialize.initModel(),this.initialize.initCanvas(),this.initialize.initShapes(),this.hotkey.init(),this.contextMenu.init(),Designer.op.init(),this.initialize.initialized=!0,Designer.events.push("initialized"),$("#designer_layout").on("scroll",function(){$(document).trigger("mouseup.multiselect")})},op:{init:function(){var e=$("#designer_canvas"),t=$("#canvas_container");t.unbind("mousemove.operate").bind("mousemove.operate",function(i){if(null==Designer.op.state){Designer.op.destroy();var n=Utils.getRelativePos(i.pageX,i.pageY,e),r=Utils.getShapeByPosition(n.x,n.y);if(null!=r)if("dataAttribute"==r.type);else if("linker"==r.type){t.css("cursor","pointer"),Designer.op.shapeSelectable(r.shape);var s=r.shape,a=r.pointIndex;"broken"==s.linkerType&&a>1&&a<=s.points.length?Designer.op.brokenLinkerChangable(s,a-1):null==s.from.id&&null==s.to.id&&(t.css("cursor","move"),Designer.op.shapeDraggable()),Designer.op.linkerEditable(s)}else"linker_point"==r.type?(t.css("cursor","move"),Designer.op.shapeSelectable(r.shape),Designer.op.linkerDraggable(r.shape,r.point),Designer.op.linkerEditable(r.shape)):"linker_text"==r.type?(t.css("cursor","text"),Designer.op.shapeSelectable(r.shape),Designer.op.linkerEditable(r.shape)):("shape"==r.type?r.shape.locked?(t.css("cursor","default"),Designer.op.shapeSelectable(r.shape)):(t.css("cursor","move"),Designer.op.shapeSelectable(r.shape),Designer.op.shapeEditable(r.shape),Designer.op.shapeDraggable(),r.shape.link):(t.css("cursor","crosshair"),Designer.op.shapeSelectable(r.shape),Designer.op.shapeLinkable(r.shape,r.linkPoint)),r.shape.parent?Utils.showAnchors(Model.getShapeById(r.shape.parent)):Utils.showAnchors(r.shape));else t.css("cursor","default"),Designer.op.shapeMultiSelectable()}})},cancel:function(){$("#canvas_container").unbind("mousemove.operate").css("cursor","default"),this.destroy()},destroy:function(){$("#designer_canvas").unbind("mousedown.drag").unbind("dblclick.edit").unbind("mousedown.draglinker").unbind("mousedown.select").unbind("mousedown.brokenLinker").unbind("dblclick.edit_linker"),$("#canvas_container").unbind("mousedown.link").unbind("mousedown.create_text").unbind("mousedown.drag_canvas"),$("#designer_layout").unbind("mousedown.multiselect"),Utils.hideAnchors(),$("#link_spot").hide()},state:null,changeState:function(e){this.state=e,"creating_free_text"==e?(this.destroy(),$("#canvas_container").css("cursor","crosshair"),this.textCreatable()):"creating_free_linker"==e?(this.destroy(),$("#canvas_container").css("cursor","crosshair"),this.shapeLinkable()):"drag_canvas"==e?(this.destroy(),this.canvasDraggable()):"changing_curve"==e&&this.destroy()},resetState:function(){this.state=null,$("#canvas_container").css("cursor","default")},shapeSelectable:function(e){var t=$("#designer_canvas");t.bind("mousedown.select",function(i){Designer.op.changeState("seelcting_shapes");var n=e.id,r=[];if(i.ctrlKey){r=Utils.getSelectedIds();Utils.isSelected(n)?Utils.removeFromArray(r,n):r.push(n),Utils.unselect(),r.length>0&&Utils.selectShape(r)}else Utils.selectIds.indexOf(n)<0&&(Utils.unselect(),Utils.selectShape(n));$(document).bind("mouseup.select",function(){Designer.op.resetState(),t.unbind("mousedown.select"),$(document).unbind("mouseup.select")})})},shapeDraggable:function(){var e=$("#designer_canvas"),t=$("#canvas_container");e.bind("mousedown.drag",function(i){Utils.hideLinkerCursor(),Utils.hideLinkerControls(),Designer.op.changeState("dragging");var n=Utils.getRelativePos(i.pageX,i.pageY,e),r=Utils.getSelected(),s=!0;1==r.length&&"linker"==r[0].name&&(s=!1);var a=null;s&&(a=Utils.getShapesBounding(r));var o=Utils.getFamilyShapes(r);r=r.concat(o);var l=Utils.getContainedShapes(r);r=r.concat(l);var d=Utils.getAttachedShapes(r);r=r.concat(d);var h=[];if(s)for(var p=0;p=i.x2||r.y+l.y<=i.y1||r.y+r.h+l.y>=i.y2)return $.simpleAlert("子流程内部节点只能在范围标识框内部移动","warning"),t.unbind("mousemove.drag"),void e.unbind("mousedown.drag")}}}Designer.op.moveShape(r,l),n=o,$(document).unbind("mouseup.drop").bind("mouseup.drop",function(){Model.updateMulti(r),$(document).unbind("mouseup.drop")})}}),$(document).bind("mouseup.drag",function(){Designer.op.resetState(),t.unbind("mousemove.drag"),e.unbind("mousedown.drag"),$(document).unbind("mouseup.drag"),Designer.op.hideTip(),Designer.op.hideSnapLine(),Utils.showLinkerCursor(),Utils.showLinkerControls();var i=Utils.getSelected()[0];if(i){var n=i.props,r=Model.define.page;n.x+n.w>r.width-r.padding&&(Designer.setPageStyle({width:n.x+n.w+r.padding+30}),$("#page_size_w").spinner("value",n.x+n.w+r.padding+30)),n.y+n.h>r.height-r.padding&&(Designer.setPageStyle({height:n.y+n.h+r.padding+30}),$("#page_size_h").spinner("value",n.x+n.w+r.padding+30))}"0"==isAutoSave&&($("#saving_tip").css("color","rgb(255, 0, 0)"),$("#saving_tip").text("文件已修改,未保存"))})})},shapeResizable:function(){$(".shape_controller").bind("mousedown",function(e){if(!isAdmin&&"1"==isCustomDefine)for(var t=Utils.getSelected(),i=0;i=0?u.x=o.x+o.w:c.indexOf("r")>=0?u.x=o.x:u.x=o.x+o.w/2,c.indexOf("t")>=0?u.y=o.y+o.h:c.indexOf("b")>=0?u.y=o.y:u.y=o.y+o.h/2,u=Utils.getRotated(p,u,o.angle);var y=[],f={},x=[],v=Utils.getAttachedShapes(d);d=d.concat(v);for(var m=[],b=0;b0)for(var w=0;w=0?n.w=i.x-u.x:c.indexOf("l")>=0&&(n.w=u.x-i.x),c.indexOf("b")>=0?n.h=i.y-u.y:c.indexOf("t")>=0&&(n.h=u.y-i.y),e.ctrlKey&&2==c.length?o.w>=o.h?(n.h=o.h/o.w*n.w,n.h=0?r.x=u.x+n.w:c.indexOf("l")>=0?r.x=u.x-n.w:r.x=u.x,c.indexOf("b")>=0?r.y=u.y+n.h:c.indexOf("t")>=0?r.y=u.y-n.h:r.y=u.y;var a=Utils.getRotated(u,r,o.angle),d={x:.5*u.x+.5*a.x,y:.5*u.y+.5*a.y},h=Utils.getRotated(d,u,-o.angle);if(c.indexOf("r")>=0?n.x=h.x:c.indexOf("l")>=0?n.x=h.x-n.w:n.x=h.x-n.w/2,c.indexOf("b")>=0?n.y=h.y:c.indexOf("t")>=0?n.y=h.y-n.h:n.y=h.y-n.h/2,0==n.angle)y[0],Designer.op.snapResizeLine(n,m,c);Utils.removeAnchors();for(var p=0;p"+C),Designer.op.showTip(C),$(document).unbind("mouseup.resize_ok").bind("mouseup.resize_ok",function(){_.length>0&&(y=y.concat(_)),Model.updateMulti(y),$(document).unbind("mouseup.resize_ok")})}),$(document).bind("mouseup.resize",function(){r.css("cursor","default"),Designer.op.resetState(),r.unbind("mousemove.resize"),$(document).unbind("mouseup.resize");var e=Utils.getSelected()[0];if(e){var t=e.props,i=Model.define.page;t.x+t.w>i.width-i.padding&&Designer.setPageStyle({width:t.x+t.w+i.padding+10}),t.y+t.h>i.height-i.padding&&Designer.setPageStyle({height:t.y+t.h+i.padding+10})}Designer.op.hideTip(),Utils.showLinkerCursor(),Designer.op.hideSnapLine()})})},shapeRotatable:function(){$(".shape_rotater").bind("mousemove",function(e){var t=$(this),i=e.pageX-t.offset().left,n=e.pageY-t.offset().top,r=t[0].getContext("2d");t.unbind("mousedown"),t.removeClass("rotate_enable"),r.isPointInPath(i,n)?(t.addClass("rotate_enable"),t.bind("mousedown",function(e){Utils.hideLinkerCursor(),$("#shape_text_edit").length&&$("#shape_text_edit").trigger("blur"),e.stopPropagation(),Designer.op.changeState("rotating");var t,i,n=Utils.getSelectedIds();if(1==n.length){var r=Model.getShapeById(n[0]);t=r.props,i=r.props.angle}else t=Utils.getControlBox(n),i=0;var s={x:t.x+t.w/2,y:t.y+t.h/2},a=Utils.toScale(s),o=$("#designer_canvas"),l=Utils.getSelected(),d=Utils.getAttachedShapes(l);l=l.concat(d);var h=Utils.getOutlinkers(l);l=l.concat(h);var p=i;$(document).bind("mousemove.rotate",function(e){var n=Utils.getRelativePos(e.pageX,e.pageY,o),r=Math.atan(Math.abs(n.x-a.x)/Math.abs(a.y-n.y));n.x>=a.x&&n.y>=a.y?r=Math.PI-r:n.x<=a.x&&n.y>=a.y?r=Math.PI+r:n.x<=a.x&&n.y<=a.y&&(r=2*Math.PI-r),r%=2*Math.PI;var d=Math.PI/36,h=Math.round(r/d);if((r=d*h)!=p){p=r,Designer.op.showTip(5*h%360+"°"),Designer.painter.rotateControls(t,r),Utils.removeAnchors();for(var c=r-i,u=0;u0)for(var o in Model.define.localAttribute[e])s.attributesJsonArray.push(Utils.copy(Model.define.localAttribute[e][o]));for(var l=0;l0&&(p=p.concat(i)),Model.updateMulti(p)}})})},shapeMultiSelectable:function(){var e=$("#designer_canvas"),t=$("#designer_layout");t.unbind("mousedown.multiselect").bind("mousedown.multiselect",function(i){var n=null;i.ctrlKey||Utils.unselect();var r=Utils.getRelativePos(i.pageX,i.pageY,e);Designer.op.changeState("multi_selecting"),t.bind("mousemove.multiselect",function(t){null==n&&(n=$("
    ").appendTo(e));var i=Utils.getRelativePos(t.pageX,t.pageY,e),s={"z-index":Model.orderList.length,left:i.x,top:i.y};i.x>r.x&&(s.left=r.x),i.y>r.y&&(s.top=r.y),s.width=Math.abs(i.x-r.x),s.height=Math.abs(i.y-r.y),n.css(s)}),$(document).unbind("mouseup.multiselect").bind("mouseup.multiselect",function(e){if(null!=n){var i={x:n.position().left.restoreScale(),y:n.position().top.restoreScale(),w:n.width().restoreScale(),h:n.height().restoreScale()},r=Utils.getShapesByRange(i);if(e.ctrlKey){var s=Utils.getSelectedIds();Utils.mergeArray(r,s)}Utils.unselect(),Utils.selectShape(r),n.remove()}Designer.op.resetState(),$(document).unbind("mouseup.multiselect"),t.unbind("mousemove.multiselect")}),t.unbind("mousedown.multiselect")})},shapeEditable:function(e){var t=$("#designer_canvas");0!=e.attribute.editable&&t.unbind("dblclick.edit").bind("dblclick.edit",function(){Designer.op.editShapeText(e),t.unbind("dblclick.edit")})},editShapeText:function(e){if("linker"!=e.name){var t=$("#shape_text_edit");0==t.length&&(t=$("").appendTo("#designer_canvas"));var i=$("#shape_text_ruler");0==i.length&&(i=$("").appendTo("#designer_canvas")),$(".text_canvas[forshape="+e.id+"]").hide();var n=e.fontStyle,r=e.getTextBlock();if("horizontal"==n.orientation){var s={x:r.x+r.w/2,y:r.y+r.h/2};r={x:s.x-r.h/2,y:s.y-r.w/2,w:r.h,h:r.w}}var a={width:r.w+"px","z-index":Model.orderList.length+2,"line-height":Math.round(1.25*n.size)+"px","font-size":n.size+"px","font-family":n.fontFamily,"font-weight":n.bold?"bold":"normal","font-style":n.italic?"italic":"normal","text-align":n.textAlign,color:"rgb("+n.color+")","text-decoration":n.underline?"underline":"none"};t.css(a),i.css(a),t.show(),r.x+=e.props.x,r.y+=e.props.y,t.val(e.text),$("#shape_text_edit").unbind().bind("keyup",function(){var s=$(this).val();i.val(s),i.scrollTop(99999);var a=i.scrollTop();t.css({height:a});r.x,r.w;var o=r.y+r.h/2,l=0,d=0,h=r.h;"middle"==e.fontStyle.vAlign?a>h?(l=o-(h=a)/2,d=0):(l=o-r.h/2,d=(r.h-a)/2,h=r.h-d):"bottom"==e.fontStyle.vAlign?a>h?(h=a,l=o+r.h/2-h,d=0):(l=o-r.h/2,d=r.h-a,h=r.h-d):(l=o-r.h/2,d=0,h=a>h?a:r.h);var p=d+h,c={x:r.x+r.w/2,y:l+p/2},u=e.props.angle;if(0!=u){var g={x:e.props.x+e.props.w/2,y:e.props.y+e.props.h/2};c=Utils.getRotated(g,c,u)}"horizontal"==n.orientation&&(u=(1.5*Math.PI+u)%(2*Math.PI));var y="rotate("+Math.round(u/(2*Math.PI)*360)+"deg) scale("+Designer.config.scale+")";t.css({width:r.w,height:h,"padding-top":d,left:c.x.toScale()-r.w/2-2,top:c.y.toScale()-p/2-2,"-webkit-transform":y,"-ms-transform":y,"-o-transform":y,"-moz-transform":y,transform:y})}).bind("keydown",function(t){var n=$(this);if(13==t.keyCode&&t.ctrlKey)return o(),!1;if(27==t.keyCode)n.unbind().remove(),$(".text_canvas[forshape="+e.id+"]").show();else if(66==t.keyCode&&t.ctrlKey){var r=!e.fontStyle.bold;e.fontStyle.bold=r,Model.update(e);var s=r?"bold":"normal";$(this).css("font-weight",s),i.css("font-weight",s),UI.update()}else if(73==t.keyCode&&t.ctrlKey){r=!e.fontStyle.italic;e.fontStyle.italic=r,Model.update(e);s=r?"italic":"normal";$(this).css("font-style",s),i.css("font-style",s),UI.update()}else if(85==t.keyCode&&t.ctrlKey){r=!e.fontStyle.underline;e.fontStyle.underline=r,Model.update(e);s=r?"underline":"none";$(this).css("text-decoration",s),i.css("text-decoration",s),t.preventDefault(),UI.update()}}).bind("blur",function(e){o()}).bind("mousemove",function(e){e.stopPropagation()}).bind("mousedown",function(e){e.stopPropagation()}).bind("mouseenter",function(e){Designer.op.destroy()}),$("#shape_text_edit").trigger("keyup"),t.select()}else this.editLinkerText(e);function o(){var t=$("#shape_text_edit").val();$("#shape_text_edit").length&&$("#shape_text_edit").is(":visible")&&(t!=e.text&&(e.text=t,Model.update(e)),Designer.painter.renderShape(e),$("#shape_text_edit").remove())}},shapeLinkable:function(e,t){var i=$("#designer_canvas"),n=$("#canvas_container");n.unbind("mousedown.link").bind("mousedown.link",function(r){Designer.op.changeState("linking_from_shape");var s,a=null;if(e)(s=t).id=e.id;else{var o=Utils.getRelativePos(r.pageX,r.pageY,i);s={x:o.x.restoreScale(),y:o.y.restoreScale(),id:null,angle:null}}n.bind("mousemove.link",function(e){n.css("cursor","default");var t=Utils.getRelativePos(e.pageX,e.pageY,i);null==a&&(a=function(e,t){var i=Utils.newId(),n=Utils.copy(Schema.linkerDefaults);return n.from=e,n.to={id:null,x:t.x,y:t.y,angle:null},n.props={zindex:Model.maxZIndex+1},n.id=i,n}(s,t),Designer.events.push("linkerCreating",a)),Designer.op.moveLinker(a,"to",t.x,t.y),$(document).unbind("mouseup.droplinker").bind("mouseup.droplinker",function(){Math.abs(t.x-s.x)>20||Math.abs(t.y-s.y)>20?(Model.add(a),Designer.events.push("linkerCreated",a),null==a.to.id&&null!=a.from.id&&Designer.op.linkDashboard(a),Utils.showLinkerCursor()):$("#"+a.id).remove(),$(document).unbind("mouseup.droplinker")})}),$(document).bind("mouseup.link",function(){Designer.op.hideLinkPoint(),Designer.op.resetState(),"process.subprocess"==methodId&&window.subProcess.linkerBoxPointerEvent(),n.unbind("mousedown.link"),n.unbind("mousemove.link"),$(document).unbind("mouseup.link")})})},linkerEditable:function(e){var t=$("#designer_canvas");t.unbind("dblclick.edit_linker").bind("dblclick.edit_linker",function(){Designer.op.editLinkerText(e),t.unbind("dblclick.edit_linker")})},editLinkerText:function(e){Designer.contextMenu.hide();var t=Designer.painter.getLinkerMidpoint(e),i=$("#"+e.id).find(".text_canvas"),n=$("#linker_text_edit");0==n.length&&(n=$("").appendTo("#designer_canvas")),$("#"+e.id).find(".text_canvas").hide();var r=e.fontStyle,s="scale("+Designer.config.scale+")",a=Math.round(1.25*r.size);function o(){var t=$("#linker_text_edit");if(t.length&&t.is(":visible")){var i=t.val();i!=e.text&&(e.text=i,Model.update(e)),Designer.painter.renderLinker(e),t.remove()}}n.css({"z-index":Model.orderList.length,"line-height":a+"px","font-size":r.size+"px","font-family":r.fontFamily,"font-weight":r.bold?"bold":"normal","font-style":r.italic?"italic":"normal","text-align":r.textAlign,color:"rgb("+r.color+")","text-decoration":r.underline?"underline":"none","-webkit-transform":s,"-ms-transform":s,"-o-transform":s,"-moz-transform":s,transform:s}),n.val(e.text).show().select(),n.unbind().bind("keyup",function(){var e=$(this).val().replace(//g,">").replace(/\n/g,"
    ");i.html(e+"
    ");var r=i.width();r<50&&(r=50);var s=i.height();s1&&(a=!0),n.bind("mousemove.draglinker",function(r){n.css("cursor","default");var o=Utils.getRelativePos(r.pageX,r.pageY,i);Designer.op.moveLinker(e,t,o.x,o.y),a&&Designer.painter.drawControls(s),$(document).unbind("mouseup.droplinker").bind("mouseup.droplinker",function(){$(document).unbind("mouseup.droplinker"),Model.update(e),Utils.showLinkerControls()})}),$(document).bind("mouseup.draglinker",function(){Designer.op.hideLinkPoint(),Designer.op.resetState(),i.unbind("mousedown.draglinker"),n.unbind("mousemove.draglinker"),$(document).unbind("mouseup.draglinker"),Utils.showLinkerControls()})})},linkClickable:function(e,t){var i=$("#link_spot");0==i.length&&(i=$("").appendTo("#designer_canvas")),-1==e.trim().toLowerCase().indexOf("http")&&(e="http://"+e),i.show().css({left:t.x-50,top:t.y-50,"z-index":Model.orderList.length+1})},textCreatable:function(){var e=$("#designer_canvas"),t=$("#canvas_container");t.unbind("mousedown.create_text").bind("mousedown.create_text",function(i){var n=null;i.ctrlKey||Utils.unselect();var r=Utils.getRelativePos(i.pageX,i.pageY,e),s=null;t.bind("mousemove.create_text",function(t){null==n&&(n=$("
    ").appendTo(e));var i=Utils.getRelativePos(t.pageX,t.pageY,e);s={"z-index":Model.orderList.length,left:i.x-1,top:i.y-1},i.x>r.x&&(s.left=r.x-1),i.y>r.y&&(s.top=r.y-1),s.width=Math.abs(i.x-r.x-2),s.height=Math.abs(i.y-r.y-2),n.css(s)}),$(document).unbind("mouseup.create_text").bind("mouseup.create_text",function(e){if(null!=s&&s.width>=20&&s.height>=20){var i=Model.create("standardText",s.left.restoreScale(),s.top.restoreScale());i.props.w=s.width.restoreScale(),i.props.h=s.height.restoreScale(),Model.add(i),Designer.painter.renderShape(i),Designer.op.editShapeText(i),Utils.unselect(),Utils.selectShape(i.id)}n.remove(),Designer.op.resetState(),$(document).unbind("mouseup.create_text"),t.unbind("mousemove.create_text")}),t.unbind("mousedown.create_text")})},canvasDragTimeout:null,canvasDraggable:function(){var e=$("#canvas_container");e.css("cursor","url(../apps/_bpm.platform/js/designer/themes/default/images/diagraming/cursor_hand.png) 8 8, auto"),this.canvasDragTimeout&&clearTimeout(this.canvasDragTimeout),this.canvasDragTimeout=setTimeout(function(){e.unbind("mousedown.drag_canvas"),Designer.op.resetState(),e.unbind("mousemove.drag_canvas"),$(document).unbind("mouseup.drag_canvas")},500),e.unbind("mousedown.drag_canvas").bind("mousedown.drag_canvas",function(t){var i=$("#designer_layout").scrollTop(),n=$("#designer_layout").scrollLeft();e.bind("mousemove.drag_canvas",function(e){var r=e.pageX-t.pageX,s=e.pageY-t.pageY;$("#designer_layout").scrollLeft(n-r),$("#designer_layout").scrollTop(i-s)}),$(document).unbind("mouseup.drag_canvas").bind("mouseup.drag_canvas",function(t){e.unbind("mousemove.drag_canvas"),$(document).unbind("mouseup.drag_canvas")})}),$(document).unbind("keyup.drag_canvas").bind("keyup.drag_canvas",function(t){e.unbind("mousedown.drag_canvas"),Designer.op.resetState(),$(document).unbind("mouseup.drag_canvas"),t.preventDefault(),clearTimeout(this.canvasDragTimeout),e.unbind("mousemove.drag_canvas")})},canvasFreeDraggable:function(){var e=$("#canvas_container");e.css("cursor","url(../apps/_bpm.platform/js/designer/themes/default/images/diagraming/cursor_hand.png) 8 8, auto"),e.unbind("mousedown.drag_canvas").bind("mousedown.drag_canvas",function(t){var i=$("#designer_layout").scrollTop(),n=$("#designer_layout").scrollLeft();e.bind("mousemove.drag_canvas",function(e){var r=e.pageX-t.pageX,s=e.pageY-t.pageY;$("#designer_layout").scrollLeft(n-r),$("#designer_layout").scrollTop(i-s)}),$(document).unbind("mouseup.drag_canvas").bind("mouseup.drag_canvas",function(t){e.unbind("mousemove.drag_canvas"),$(document).unbind("mouseup.drag_canvas")})})},moveShape:function(e,t){for(var i=[],n=0;n=0)&&(a.from.x+=s.x,a.from.y+=s.y,d=!0),(null==l.id||i.indexOf(l.id)>=0)&&(a.to.x+=s.x,a.to.y+=s.y,h=!0)):(null!=o.id&&i.indexOf(o.id)>=0&&(a.from.x+=s.x,a.from.y+=s.y,d=!0),null!=l.id&&i.indexOf(l.id)>=0&&(a.to.x+=s.x,a.to.y+=s.y,h=!0)),d&&h){for(var p=0;p0){var f=Utils.getSelectedIds();Designer.painter.drawControls(f)}else{var x=$("#shape_controls");x.css({left:parseFloat(x.css("left"))+t.x,top:parseFloat(x.css("top"))+t.y})}var v=$("#shape_controls").position();v&&Utils.getSelected().length>0&&Designer.op.showTip("X: "+Math.round(v.left.restoreScale())+"  Y: "+Math.round(v.top.restoreScale()))}function m(e){e.props.x+=s.x,e.props.y+=s.y;var i=$("#"+e.id);i.css({left:parseFloat(i.css("left"))+t.x,top:parseFloat(i.css("top"))+t.y})}},moveLinker:function(e,t,i,n){var r=null,s=null,a=Utils.getShapeByPosition(i,n,!0);if(Designer.op.hideLinkPoint(),null!=a){var o,l,d=a.shape;if(Utils.showAnchors(d),s=d.id,"bounding"==a.type)r=a.linkPoint,Designer.op.showLinkPoint(Utils.toScale(r));else if("shape"==a.type)if("from"==t?(o={x:e.to.x,y:e.to.y},l=e.to.id):(o={x:e.from.x,y:e.from.y},l=e.from.id),d.id==l)Designer.op.hideLinkPoint(),(r={x:i.restoreScale(),y:n.restoreScale()}).angle=null,s=null;else{for(var h,p=d.getAnchors(),c=-1,u={x:d.props.x+d.props.w/2,y:d.props.y+d.props.h/2},g=0;g=e.to.x-6&&r.x<=e.to.x+6&&(e.from.x=e.to.x),r.y>=e.to.y-6&&r.y<=e.to.y+6&&(e.from.y=e.to.y))):(e.to.x=r.x,e.to.y=r.y,e.to.id=s,e.to.angle=r.angle,null==s&&(r.x>=e.from.x-6&&r.x<=e.from.x+6&&(e.to.x=e.from.x),r.y>=e.from.y-6&&r.y<=e.from.y+6&&(e.to.y=e.from.y))),Designer.painter.renderLinker(e,!0)},showLinkPoint:function(e){var t=$("").appendTo($("#designer_canvas")),i=t[0].getContext("2d");i.translate(1,1),i.lineWidth=1,i.globalAlpha=.3,i.strokeStyle=Designer.config.anchorColor,i.fillStyle=Designer.config.anchorColor,i.beginPath(),i.moveTo(0,15),i.bezierCurveTo(0,-5,30,-5,30,15),i.bezierCurveTo(30,35,0,35,0,15),i.closePath(),i.fill(),i.stroke(),t.css({left:e.x-16,top:e.y-16,"z-index":Model.orderList.length}).show()},hideLinkPoint:function(){$(".link_point_canvas").hide()},brokenLinkerChangable:function(e,t){var i=$("#canvas_container"),n=$("#designer_canvas"),r=e.points[t-1],s=e.points[t];r.x==s.x?i.css("cursor","e-resize"):i.css("cursor","n-resize"),n.bind("mousedown.brokenLinker",function(t){Designer.op.changeState("changing_broken_linker");var a=Utils.getRelativePos(t.pageX,t.pageY,n),o=Utils.getSelectedIds();i.bind("mousemove.brokenLinker",function(t){var i=Utils.getRelativePos(t.pageX,t.pageY,n),l={x:i.x-a.x,y:i.y-a.y};l=Utils.restoreScale(l),r.x==s.x?(r.x+=l.x,s.x+=l.x):(r.y+=l.y,s.y+=l.y),Designer.painter.renderLinker(e),o.length>1&&Designer.painter.drawControls(o),a=i,$(document).unbind("mouseup.changed").bind("mouseup.changed",function(){Model.update(e),$(document).unbind("mouseup.changed")})}),$(document).bind("mouseup.brokenLinker",function(){Designer.op.resetState(),i.unbind("mousemove.brokenLinker"),n.unbind("mousedown.brokenLinker"),$(document).unbind("mouseup.brokenLinker")})})},removeShape:function(){var d=Utils.getSelected();if(d.length>0){Utils.unselect();var e=Utils.getAttachedShapes(d);d=d.concat(e);for(var c=[],b=0;b0){for(var shapeIds=[],index=0;index0?$.ajax({url:"./jd?sid="+$("#sid").val()+"&cmd=com.actionsoft.apps.coe.pal_pl_repository_designer_relation_search",data:{shapeIds:shapeIds.join(","),fileId:ruuid},success:function(msg){"string"==typeof msg&&(msg=eval("("+msg+")"));var relationShapes=msg.data.relationShapes;if(relationShapes.length>0){var options={title:"提示",content:"图形["+relationShapes+"]被关联,确定删除吗?",onConfirm:function(){Model.remove(d)}};$.confirm(options)}else Model.remove(d)}}):Model.remove(d)}}},showTip:function(e){var t=$("#designer_op_tip");0==t.length&&(t=$("
    ").appendTo("#designer_canvas")),t.stop().html(e);var i=$("#shape_controls"),n=i.position();t.css({top:n.top+i.height()+5,left:n.left+i.width()/2-t.outerWidth()/2,"z-index":Model.orderList.length}).show()},hideTip:function(){$("#designer_op_tip").fadeOut(100)},snapLine:function(e,t,i,n){var r=e.y,s=e.y+e.h/2,a=e.y+e.h,o=e.x,l=e.x+e.w/2,d=e.x+e.w,h={v:null,h:null,attach:null},p=null;if(p=i?n:Model.getShapeById(t[0]),1==t.length&&"boundaryEvent"==p.groupName)for(var c=Model.orderList.length-1;c>=0;c--){var u=Model.orderList[c].id;if("linker"!=(w=Model.getShapeById(u)).name&&w.id!=p.id){var g=w.props;if(null==h.attach&&0==g.angle&&("task"==w.groupName||"callActivity"==w.groupName||"subProcess"==w.groupName)){var y={x:g.x-2,y:g.y-2,w:g.w+4,h:g.h+4};if(Utils.pointInRect(l,s,y)){var f=g.y,x=g.y+g.h,v=g.x,m=g.x+g.w,b=!1,S=!1;f>=s-2&&f<=s+2?(e.y=f-e.h/2,S=!0):x>=s-2&&x<=s+2&&(e.y=x-e.h/2,S=!0),v>=l-2&&v<=l+2?(e.x=v-e.w/2,b=!0):m>=l-2&&m<=l+2&&(e.x=m-e.w/2,b=!0),(b||S)&&(h.attach=w)}}}}if(null==h.attach)for(c=Model.orderList.length-1;c>=0;c--){var w;u=Model.orderList[c].id;if(!("linker"==(w=Model.getShapeById(u)).name||t.indexOf(u)>=0||w.parent)){g=w.props;if(null==h.h){f=g.y;var k=g.y+g.h/2;x=g.y+g.h;k>=s-2&&k<=s+2?(h.h={type:"middle",y:k},e.y=k-e.h/2):f>=r-2&&f<=r+2?(h.h={type:"top",y:f},e.y=f):x>=a-2&&x<=a+2?(h.h={type:"bottom",y:x},e.y=x-e.h):x>=r-2&&x<=r+2?(h.h={type:"top",y:x},e.y=x):f>=a-2&&f<=a+2&&(h.h={type:"bottom",y:f},e.y=f-e.h)}if(null==h.v){v=g.x;var M=g.x+g.w/2;m=g.x+g.w;M>=l-2&&M<=l+2?(h.v={type:"center",x:M},e.x=M-e.w/2):v>=o-2&&v<=o+2?(h.v={type:"left",x:v},e.x=v):m>=d-2&&m<=d+2?(h.v={type:"right",x:m},e.x=m-e.w):m>=o-2&&m<=o+2?(h.v={type:"left",x:m},e.x=m):v>=d-2&&v<=d+2&&(h.v={type:"right",x:v},e.x=v-e.w)}if(null!=h.h&&null!=h.v)break}}this.hideSnapLine();var D=$("#designer_canvas");if(null!=h.attach){var _=$("#designer_op_snapline_attach");0==_.length&&(_=$("
    ").appendTo(D));var I=h.attach,U=I.lineStyle.lineWidth;_.css({width:(I.props.w+U).toScale(),height:(I.props.h+U).toScale(),left:(I.props.x-U/2).toScale()-2,top:(I.props.y-U/2).toScale()-2,"z-index":$("#"+I.id).css("z-index")}).show()}if(null!=h.h){var C=$("#designer_op_snapline_h");0==C.length&&(C=$("
    ").appendTo(D)),C.css({width:D.width()+2*Designer.config.pageMargin,left:-Designer.config.pageMargin,top:Math.round(h.h.y.toScale()),"z-index":Model.orderList.length+1}).show()}if(null!=h.v){var P=$("#designer_op_snapline_v");0==P.length&&(P=$("
    ").appendTo(D)),P.css({height:D.height()+2*Designer.config.pageMargin,top:-Designer.config.pageMargin,left:Math.round(h.v.x.toScale()),"z-index":Model.orderList.length+1}).show()}return h},snapResizeLine:function(e,t,i){for(var n=e.y,r=e.y+e.h/2,s=e.y+e.h,a=e.x,o=e.x+e.w/2,l=e.x+e.w,d={v:null,h:null},h=Model.orderList.length-1;h>=0;h--){var p=Model.orderList[h].id,c=Model.getShapeById(p);if(!("linker"==c.name||t.indexOf(p)>=0||c.parent)){var u=c.props;if(null==d.h&&(i.indexOf("t")>=0||i.indexOf("b")>=0)){var g=u.y,y=u.y+u.h/2,f=u.y+u.h;y>=r-2&&y<=r+2?(d.h={type:"middle",y:y},i.indexOf("t")>=0?(e.h=2*(s-y),e.y=s-e.h):e.h=2*(y-e.y)):i.indexOf("t")>=0&&g>=n-2&&g<=n+2?(d.h={type:"top",y:g},e.y=g,e.h=s-g):i.indexOf("b")>=0&&f>=s-2&&f<=s+2?(d.h={type:"bottom",y:f},e.h=f-n):i.indexOf("t")>=0&&f>=n-2&&f<=n+2?(d.h={type:"top",y:f},e.y=f,e.h=s-f):i.indexOf("b")>=0&&g>=s-2&&g<=s+2&&(d.h={type:"bottom",y:g},e.h=g-e.y)}if(null==d.v&&(i.indexOf("l")>=0||i.indexOf("r")>=0)){var x=u.x,v=u.x+u.w/2,m=u.x+u.w;v>=o-2&&v<=o+2?(d.v={type:"center",x:v},i.indexOf("l")>=0?(e.w=2*(l-v),e.x=l-e.w):e.w=2*(v-e.x)):i.indexOf("l")>=0&&x>=a-2&&x<=a+2?(d.v={type:"left",x:x},e.x=x,e.w=l-x):i.indexOf("r")>=0&&m>=l-2&&m<=l+2?(d.v={type:"right",x:m},e.w=m-e.x):i.indexOf("l")>=0&&m>=a-2&&m<=a+2?(d.v={type:"left",x:m},e.x=m,e.w=l-m):i.indexOf("r")>=0&&x>=l-2&&x<=l+2&&(d.v={type:"right",x:x},e.w=x-e.x)}if(null!=d.h&&null!=d.v)break}}this.hideSnapLine();var b=$("#designer_canvas");if(null!=d.h){var S=$("#designer_op_snapline_h");0==S.length&&(S=$("
    ").appendTo(b)),S.css({width:b.width()+2*Designer.config.pageMargin,left:-Designer.config.pageMargin,top:Math.round(d.h.y.toScale()),"z-index":Model.orderList.length+1}).show()}if(null!=d.v){var w=$("#designer_op_snapline_v");0==w.length&&(w=$("
    ").appendTo(b)),w.css({height:b.height()+2*Designer.config.pageMargin,top:-Designer.config.pageMargin,left:Math.round(d.v.x.toScale()),"z-index":Model.orderList.length+1}).show()}return d},hideSnapLine:function(){$("#designer_op_snapline_h").hide(),$("#designer_op_snapline_v").hide(),$("#designer_op_snapline_attach").hide()},linkDashboard:function(e){var t=Model.getShapeById(e.from.id).category;if(0!=$("#panel_"+t).length){var i=$("#shape_dashboard_"+t);if(0==i.length){function n(e,t){var n="
    ",r=$(n).appendTo(i);t&&r.append("");var s=r.children()[0];Designer.painter.drawPanelItem(s,e.name)}for(var r in i=$("").appendTo("#designer_canvas"),Schema.shapes){var s=Schema.shapes[r];if(("process_bpmn2"!=s.category&&"process.bpmn2"!=s.category&&"bpmn"!=s.category||!checkRunningTimeShape(s))&&s.category==t){var a=s.attribute;if(a.visible&&a.linkable)if(s.groupName)SchemaGroup.getGroup(s.groupName)[0]==s.name&&n(s,s.groupName);else n(s)}}i.bind("mousemove",function(e){e.stopPropagation()}).bind("mousedown",function(e){e.stopPropagation()})}function o(t){var i,n=Schema.shapes[t],r=Utils.getEndpointAngle(e,"to"),s=Utils.getAngleDir(r),a=n.getAnchors();if(1==s)for(var o=null,l=0;lh)&&(h=d.x,i=d)}}else if(3==s){var p=null;for(l=0;lp)&&(p=d.y,i=d)}}else if(4==s){var c=null;for(l=0;l").appendTo("#designer_canvas");for(var s=SchemaGroup.getGroup(e),a=0;a").appendTo(r).children("canvas")[0];Designer.painter.drawPanelItem(d,l.name)}}r.bind("mousedown",function(e){e.stopPropagation()})}return r.css({left:t,top:i,"z-index":Model.orderList.length+1}).show(),$(".dashboard_box").unbind().bind("click",function(){var e=$(this).attr("shapeName");n(e),r.hide(),$(document).unbind("mousedown.group_dashboard")}),$(document).bind("mousedown.group_dashboard",function(){r.hide(),$(document).unbind("mousedown.group_dashboard")}),r},showPanelGroup:function(e,t,i){t.stopPropagation();var n=$("#group_dashboard_"+e);if($(".group_dashboard").hide(),0==n.length){n=$("").appendTo("#designer");for(var r=SchemaGroup.getGroup(e),s=0;s").appendTo(n).children("canvas")[0];Designer.painter.drawPanelItem(h,o.name)}}n.css("position","fixed")}var p=$(i).parent(),c=p.offset();n.show();var u=c.top+p.height();u+n.outerHeight()>$(window).height()&&(u=$(window).height()-n.outerHeight()),n.css({left:c.left-7,top:u}),$(document).bind("mousedown.group_board",function(){n.hide(),$(document).unbind("mousedown.group_board")})},changeShapeProps:function(e,t){function i(i){if(void 0!==t.x&&(i.x+=t.x-e.props.x),void 0!==t.y&&(i.y+=t.y-e.props.y),void 0!==t.w||void 0!==t.h||void 0!==t.angle){var n=$.extend({},e.props,t),r={x:e.props.x+e.props.w/2,y:e.props.y+e.props.h/2},s=Utils.getRotated(r,i,-e.props.angle),a=e.props.w,o=e.props.h;void 0!==t.w?(i.x=e.props.x+(s.x-e.props.x)/e.props.w*t.w,a=t.w):i.x=s.x,void 0!==t.h?(i.y=e.props.y+(s.y-e.props.y)/e.props.h*t.h,o=t.h):i.y=s.y;var l={x:e.props.x+a/2,y:e.props.y+o/2},d=Utils.getRotated(l,i,n.angle);i.x=d.x,i.y=d.y}void 0!==t.angle&&(i.angle+=t.angle-e.props.angle)}var n=[],r=Model.getShapeLinkers(e.id);if(r&&r.length>0){for(var s=0;s").appendTo("#designer_viewport")),r.html("选择目标图形并使用格式刷样式
    Esc取消").show(),$(document).unbind("keydown.cancelbrush").bind("keydown.cancelbrush",function(e){27==e.keyCode&&($("#bar_brush").button("unselect"),r.hide(),$(document).unbind("keydown.cancelbrush"),Utils.selectCallback=null,$("#bar_brush").button("disable"))}),Utils.selectCallback=function(){for(var e=Utils.getSelected(),i=0;i1&&(n=1);var l={x:(1-n)*i.x+n*e.x,y:(1-n)*i.y+n*e.y};(Utils.measureDistance(s,l)>=t[a]||n>=1)&&(o?this.lineTo(l.x,l.y):this.moveTo(l.x,l.y),o=!o,s=l,++a>=t.length&&(a=0))}this.moveTo(e.x,e.y)}else this.lineTo(e.x,e.y);this.prePoint=e,null==this.beginPoint&&(this.beginPoint=e)},curve:function(e){if(void 0!==this.webkitLineDash&&void 0===this.lineDashOffset&&0!=this.lineWidth){for(var t=this.webkitLineDash,i=this.prePoint,n=0,r=1/Utils.measureDistance(i,e),s=i,a=0,o=!0,l=0;n<1;){(n+=r)>1&&(n=1);var d={x:i.x*Math.pow(1-n,3)+e.x1*n*Math.pow(1-n,2)*3+e.x2*Math.pow(n,2)*(1-n)*3+e.x*Math.pow(n,3),y:i.y*Math.pow(1-n,3)+e.y1*n*Math.pow(1-n,2)*3+e.y2*Math.pow(n,2)*(1-n)*3+e.y*Math.pow(n,3)};if(Utils.measureDistance(s,d)>=t[a]||n>=1){if(o){var h=l+(n-l)/2,p={x:i.x*Math.pow(1-h,3)+e.x1*h*Math.pow(1-h,2)*3+e.x2*Math.pow(h,2)*(1-h)*3+e.x*Math.pow(h,3),y:i.y*Math.pow(1-h,3)+e.y1*h*Math.pow(1-h,2)*3+e.y2*Math.pow(h,2)*(1-h)*3+e.y*Math.pow(h,3)};this.lineTo(p.x,p.y),this.lineTo(d.x,d.y)}else this.moveTo(d.x,d.y);o=!o,s=d,l=n,++a>=t.length&&(a=0)}}this.moveTo(e.x,e.y)}else this.bezierCurveTo(e.x1,e.y1,e.x2,e.y2,e.x,e.y);this.prePoint=e,null==this.beginPoint&&(this.beginPoint=e)},quadraticCurve:function(e){if(void 0!==this.webkitLineDash&&void 0===this.lineDashOffset&&0!=this.lineWidth){for(var t=this.webkitLineDash,i=this.prePoint,n=0,r=1/Utils.measureDistance(i,e),s=i,a=0,o=!0,l=0;n<1;){(n+=r)>1&&(n=1);var d={x:i.x*Math.pow(1-n,2)+e.x1*n*(1-n)*2+e.x*Math.pow(n,2),y:i.y*Math.pow(1-n,2)+e.y1*n*(1-n)*2+e.y*Math.pow(n,2)};if(Utils.measureDistance(s,d)>=t[a]||n>=1){if(o){var h=l+(n-l)/2,p={x:i.x*Math.pow(1-h,2)+e.x1*h*(1-h)*2+e.x*Math.pow(h,2),y:i.y*Math.pow(1-h,2)+e.y1*h*(1-h)*2+e.y*Math.pow(h,2)};this.lineTo(p.x,p.y),this.lineTo(d.x,d.y)}else this.moveTo(d.x,d.y);o=!o,s=d,l=n,++a>=t.length&&(a=0)}}this.moveTo(e.x,e.y)}else this.quadraticCurveTo(e.x1,e.y1,e.x,e.y);this.prePoint=e,null==this.beginPoint&&(this.beginPoint=e)},close:function(){if(void 0!==this.webkitLineDash&&void 0===this.lineDashOffset&&0!=this.lineWidth)for(var e=this.webkitLineDash,t=this.prePoint,i=this.beginPoint,n=0,r=1/Utils.measureDistance(t,i),s=t,a=0,o=!0;n<1;){(n+=r)>1&&(n=1);var l={x:(1-n)*t.x+n*i.x,y:(1-n)*t.y+n*i.y};(Utils.measureDistance(s,l)>=e[a]||n>=1)&&(o?this.lineTo(l.x,l.y):this.moveTo(l.x,l.y),o=!o,s=l,++a>=e.length&&(a=0))}this.closePath()},curveArc:function(e){this.arc(e.centerX,e.centerY,e.radius,e.startAngle,e.endAngle)}},setLineDash:function(e,t){e.setLineDash||(e.setLineDash=function(){}),e.setLineDash(t),e.mozDash=t,e.webkitLineDash=t},renderShapePath:function(e,t,i){var n;n=i&&t.drawIcon?t.drawIcon(t.props.w,t.props.h):t.getPath(),this.renderPath(e,t,n,i)},renderPath:function(e,t,i,n){for(var r=0;r=Designer.config.panelItemWidth||r.h>=Designer.config.panelItemWidth)&&(r.panelProps?(r.w=n.props.w,r.h=n.props.h):n.props.w>=n.props.h?(r.w=Designer.config.panelItemWidth-2*n.lineStyle.lineWidth,r.h=parseInt(n.props.h/n.props.w*r.w)):(r.h=Designer.config.panelItemHeight-2*n.lineStyle.lineWidth,r.w=parseInt(n.props.w/n.props.h*r.h))),n.props=r,i.save(),i.lineJoin="round",i.globalAlpha=n.shapeStyle.alpha;var s=(Designer.config.panelItemWidth-r.w)/2,a=(Designer.config.panelItemHeight-r.h)/2;r.panelProps&&(r.panelProps.x&&(s=-r.panelProps.x),r.panelProps.y&&(a=-r.panelProps.y)),i.translate(s,a),i.translate(r.w/2,r.h/2),i.rotate(r.angle),i.translate(-r.w/2,-r.h/2),this.renderShapePath(i,n,!0,function(){Designer.painter.drawPanelItem(e,t)}),this.renderMarkers(i,n,!0),i.restore()},handleShapeConfigData:function(e,t,i){for(var n,r=t.dataAttributes.length-1;r>=0;r--){(n=t.dataAttributes[r]).horizontal,n.vertical;if(n.hasOwnProperty("attributesJsonArray")){var s=n.dataShowConfig;null!=s&&(s.value=[]);break}}var a=t.name;for(r=0;r0)for(var y=0;y=0&&(p+"").trim().length>0&&(p="("+o.attrName+")"+p),"relation"==g||"awsorg"==g){var x=t.id+"_"+u,v=relationShapeModelObject;p=v[x]?v[x].join(","):"",o.isShowAttrName&&(p="("+o.attrName+")"+p)}c.showType="attr",c.value=p}t.dataAttributes||(t.dataAttributes=[]),c.id=Utils.newId(),c.category="custom",n.dataShowConfig||(n.dataShowConfig={},n.dataShowConfig.value||(n.dataShowConfig.value=[])),n.dataShowConfig.value.push(c)}else{c={w:16,h:16,textw:20,texth:17,imgT:0,category:"custom",icon:o.iconContent,name:a,showName:!1,showType:"icon",type:"string",value:"",horizontal:d,vertical:h};t.dataAttributes||(t.dataAttributes=[]),c.id=Utils.newId(),c.category="custom",n.dataShowConfig||(n.dataShowConfig={},n.dataShowConfig.value||(n.dataShowConfig.value=[])),n.dataShowConfig.value.push(c)}}},renderShape:function(e){if("linker"==e.name)return void this.renderLinker(e);for(var t,i,n=Utils.copy(Model.define.commonShapeConfig),r=e.dataAttributes,s=0;s0)for(s=0;s=0||l.push(n[s])}d=l.length>0?t.concat(l):t,this.handleShapeConfigData(d,e,i)}var u=$("#"+e.id);if(0==u.length){var g=$("#designer_canvas");u="lane"==e.category?$("
    ").appendTo(g):$("
    ").appendTo(g)}var y=Utils.getShapeBox(e),f=(y.w+20).toScale(),x=(y.h+20).toScale();u.find(".shape_canvas").attr({width:f,height:x}),u.css({left:(y.x-10).toScale()+"px",top:(y.y-10).toScale()+"px",width:f,height:x});var v=u.find(".shape_canvas")[0].getContext("2d");v.clearRect(0,0,e.props.w+20,e.props.h+20),v.scale(Designer.config.scale,Designer.config.scale),v.translate(10,10),v.translate(e.props.x-y.x,e.props.y-y.y),v.translate(e.props.w/2,e.props.h/2),v.rotate(e.props.angle),v.translate(-e.props.w/2,-e.props.h/2);e.lineStyle;v.globalAlpha=e.shapeStyle.alpha,v.lineJoin="round",this.renderShapePath(v,e),this.renderMarkers(v,e);var m=e.getPath(),b=Utils.copy(m[m.length-1]);b.fillStyle={type:"none"},b.lineStyle={lineWidth:0};var S=[b];this.renderPath(v,e,S),this.renderText(e,y);let w=Utils.copy(Model.define.commonShapeConfig);if(void 0===t&&void 0===w[o]||this.renderDataAttributes(e,y),this.renderTitleShow(e,y),Designer.painter.renderShapeLink(u,e),Designer.painter.renderSahpeAttachment(u,e),null!=e.attributesJsonArray&&e.attributesJsonArray.length>0){u.find(".shape_danger").remove(),u.find(".shape_regulate").remove();var k=!1;for(var M in e.attributesJsonArray){var D=e.attributesJsonArray[M];if(null!=D&&"danger"==D.key&&null!=D.value&&""!=D.value&&null!=relationShapesObject)if("object"==typeof D.value&&D.value.constructor==Array){for(m=0;m").appendTo(u)}},fillShape:function(e,t,i){if(t.save(),void 0!==i.colorOverlay&&"multiplyOverlay"===i.colorOverlay&&(i.color=function(e){let[t,i,n]=e.split(",").map(Number),[r,s,a]=e.split(",").map(Number),o=t/255*(r/255)*255,l=i/255*(s/255)*255,d=n/255*(a/255)*255;return`${Math.round(o)}, ${Math.round(l)}, ${Math.round(d)}`}(i.color)),"solid"==i.type)t.fillStyle="rgb("+i.color+")",t.fill();else if("gradient"==i.type){var n;n="linear"==i.gradientType?GradientHelper.createLinearGradient(e,t,i):GradientHelper.createRadialGradient(e,t,i),t.fillStyle=n,t.fill()}else if("image"===i.type||"imageDef"===i.type){let n=!1,a=i.fileId;"insert"===i.from&&(a=shapeImages[i.fileId]),"imageDef"===i.type&&(imageDefMap[i.fileId]?a=imageDefMap[i.fileId]:(a=shapeImages[i.fileId],n=!0));var r=$(".shape_img[src='"+a+"']");0==r.length?((r=$("").appendTo("#shape_img_container")).bind("load.drawshape",function(){var a="insert"===i.from?0:(Designer.config.panelItemWidth-e.props.w)/2,o="insert"===i.from?0:(Designer.config.panelItemHeight-e.props.h)/2;n&&(o=0,a=0),t.translate(a,o),s(r),t.restore(),$(this).attr("loaded","1")}),r.attr("src",a)):"0"==r.attr("loaded")?r.bind("load.drawshape",function(){t.translate(0,0),s(r),t.restore()}):s(r)}function s(n){if(t.save(),t.clip(),"fit"==i.display)if((c=(l=n.width())/(d=n.height()))>e.props.w/e.props.h){var r=0,s=(o=e.props.w)/c,a=e.props.h/2-s/2;t.drawImage(n[0],r,a,o,s)}else{a=0;var o=(s=e.props.h)*c;r=e.props.w/2-o/2;t.drawImage(n[0],r,a,o,s)}else if("stretch"==i.display)t.drawImage(n[0],0,0,e.props.w,e.props.h);else if("original"==i.display){var l=n.width(),d=n.height();r=e.props.w/2-l/2,a=e.props.h/2-d/2;t.drawImage(n[0],r,a,l,d)}else if("tile"==i.display)for(r=0,l=n.width(),d=n.height();re.props.w/e.props.h){a=0,o=(s=e.props.h)*c,r=e.props.w/2-o/2;t.drawImage(n[0],r,a,o,s)}else{r=0,s=(o=e.props.w)/c,a=e.props.h/2-s/2;t.drawImage(n[0],r,a,o,s)}}t.restore()}t.restore()},renderText:function(e,t){var i=$("#"+e.id),n=i.find(".text_canvas[forshape="+e.id+"]");if(0==n.length&&(n=$("").appendTo(i)).bind("focus",function(){$(this).blur()}),n.attr("readonly","readonly"),null!=e.text&&""!=e.text.trim()){var r=e.fontStyle,s={"line-height":Math.round(1.25*r.size)+"px","font-size":r.size+"px","font-family":r.fontFamily,"font-weight":r.bold?"bold":"normal","font-style":r.italic?"italic":"normal","text-align":r.textAlign,color:"rgb("+r.color+")","text-decoration":r.underline?"underline":"none",opacity:e.shapeStyle.alpha};n.css(s),n.show();var a=e.getTextBlock();if("horizontal"==e.fontStyle.orientation){var o={x:a.x+a.w/2,y:a.y+a.h/2};a={x:o.x-a.h/2,y:o.y-a.w/2,w:a.h,h:a.w}}n.css({width:a.w}),n.height(0),n.val(e.text),n.scrollTop(99999);var l=n.scrollTop(),d=0;d="middle"==r.vAlign?a.y+a.h/2-l/2:"bottom"==e.fontStyle.vAlign?a.y+a.h-l:a.y;var h={x:a.x+a.w/2,y:d+l/2},p=e.props.angle;if(0!=p){var c={x:e.props.w/2,y:e.props.h/2};h=Utils.getRotated(c,h,p)}"horizontal"==r.orientation&&(p=(1.5*Math.PI+p)%(2*Math.PI));var u="rotate("+Math.round(p/(2*Math.PI)*360)+"deg) scale("+Designer.config.scale+")",g=a.w,y=l;n.css({width:g,height:y,left:(h.x+(e.props.x-t.x)+10).toScale()-a.w/2,top:(h.y+(e.props.y-t.y)+10).toScale()-l/2,"-webkit-transform":u,"-ms-transform":u,"-o-transform":u,"-moz-transform":u,transform:u})}else n.css({height:"0px",width:"0px"}).hide()},calculateTextLines:function(e,t,i){for(var n=t.w,r=(t.h,[]),s=e.split(/\n/),a=0;an)for(var c=0;cn?(r.push(d),d=p[c]):d=u}else{u=d+p;i.measureText(u).width>n?(r.push(d),d=p):d=u}}""!=d&&r.push(d)}}return r},renderMarkers:function(e,t,i){if(t.attribute&&t.attribute.markers&&t.attribute.markers.length>0){var n=t.attribute.markers,r=Schema.config.markerSize;i&&(r=10);var s=t.attribute.markerOffset;i&&(s=5);for(var a=n.length*r+4*(n.length-1),o=t.props.w/2-a/2,l=0;l").appendTo($("#"+e.id));i.css({left:(10+e.props.titleProps.x)*Designer.config.scale+"px",top:(17+e.props.titleProps.y)*Designer.config.scale+"px"});var n=i[0].getContext("2d"),r="13px ";r+=e.fontStyle.fontFamily,n.font=r,n.fillStyle="#696969",e.titleStyle&&e.titleStyle.titleColor&&(n.fillStyle=e.titleStyle.titleColor),n.scale(Designer.config.scale,Designer.config.scale),n.fillText(e.title,0,12)}},renderDataAttributes:function(i,k){if($("#"+i.id).children(".attr_canvas").remove(),i.dataAttributes&&0!=i.dataAttributes.length)for(var n={x:i.props.w/2,y:i.props.h/2},p=0;p0)for(var n=0;ni&&e>0?(r.push(s.trim()),s=n[e]+" "):s=a}return r.push(s.trim()),r}function getTextWidth(e,t,i){let n=document.createElement("div");n.style.visibility="hidden",n.style.position="absolute",n.style.whiteSpace="nowrap",n.style.font=t,n.style.fontFamily=i,n.innerText=e,document.body.appendChild(n);let r=n.offsetWidth;return document.body.removeChild(n),r}function m(e,t){let r=e.horizontal,s=e.vertical,a=getTextWidth(t,"12px",i.fontStyle.fontFamily),o=$("
    "+t+"
    ").appendTo($("#"+i.id)),l={position:"absolute",left:0,top:0,width:a+"px","font-size":"12px","font-family":i.fontStyle.fontFamily,"word-break":"normal",color:""};a>i.props.w&&(l.width=i.props.w+"px",i.props.w<100&&(l.width="100px")),"link"==e.type?l.color="#4183C4":l.color="#333","text"!=e.showType&&"attr"!=e.showType||(l.color=e.color),o.css(l);let d=i.props.angle,h="rotate("+Math.round(d/(2*Math.PI)*360)+"deg) scale("+Designer.config.scale+")";o.css({"-webkit-transform":h,"-ms-transform":h,"-o-transform":h,"-moz-transform":h,"transform-origin":"top left"});let p=o.width(),c=o.height(),u=0,g=0;switch(r){case"mostleft":u=-p-2;break;case"left":u=2;break;case"center":u=i.props.w/2-p/2;break;case"right":u=i.props.w-p-2;break;case"mostright":u=i.props.w+2}switch(s){case"mosttop":g=-c;break;case"top":g=0;break;case"middle":g=i.props.h/2-c/2;break;case"bottom":g=i.props.h-c;break;case"mostbottom":g=i.props.h}let y={x:u,y:g,w:p,h:c},f=Utils.getRotatedBox(y,i.props.angle,n),x=(f.x+(i.props.x-k.x)+10).toScale(),v=(f.y+(i.props.y-k.y)+10).toScale();o.css({left:x,top:v})}function m1(c,y,x){var h,I,icon,iconColor,H,D,a,E,F,g,G,d,e,tempShapeWidth,h=c.horizontal,I=c.vertical,H=$("").appendTo($("#"+i.id)),b=H[0].getContext("2d"),w="12px ";w+=i.fontStyle.fontFamily,b.font=w;var D=b.measureText(y).width,a=20,E,F;""!=x&&(D+=20),E="mostleft"==h?-D-2:"leftedge"==h?-D/2:"left"==h?2:"center"==h?(i.props.w-D)/2:"right"==h?i.props.w-D-2:"rightedge"==h?i.props.w-D/2:i.props.w+2,F="mosttop"==I?-a:"topedge"==I?-a/2:"top"==I?0:"middle"==I?(i.props.h-a)/2:"bottom"==I?i.props.h-a:"bottomedge"==I?i.props.h-a/2:i.props.h;var g={x:E,y:F,w:D,h:a};if(D>i.props.w){let e=i.props.w;if(e<100&&(e=100),1==y.split(" ").length)g.w=e+10,g.h=15*Math.ceil(D/e);else{let t=getStrLines(y,b,e).length;g.w=e,g.h=15*t}}var G=Utils.getRotatedBox(g,i.props.angle,n);H.attr({width:G.w.toScale(),height:G.h.toScale()}),b.font=w;var d=(G.x+(i.props.x-k.x)+10).toScale(),e=(G.y+(i.props.y-k.y)+10).toScale();if("mostleft"==h&&"left"!=h&&"right"==h||H.css({left:d,top:e}),b.scale(Designer.config.scale,Designer.config.scale),b.translate(G.w/2,G.h/2),b.rotate(i.props.angle),b.translate(-G.w/2,-G.h/2),b.translate((G.w-g.w)/2,(G.h-g.h)/2),b.globalAlpha=i.shapeStyle.alpha,"link"==c.type?b.fillStyle="#4183C4":b.fillStyle="#333","text"==c.showType&&(b.fillStyle="#696969"),"attr"==c.showType&&(b.fillStyle="#191970"),b.textBaseline="middle",D>i.props.w){var tempShapeWidth=i.props.w;tempShapeWidth<100&&(tempShapeWidth=100);let t=y.split(" ");if(1==t.length)for(var v=0;v1&&H.css({left:15,top:e}),"right"==h&&"mosttop"!=I&&"bottom"!=I&&(d=tempShapeWidth/4,H.css({left:d,top:e}))}else"mostleft"==h&&(d=-D,H.css({left:d,top:e})),"right"==h&&(d=(i.props.w-D+4).toScale(),H.css({left:d,top:e})),b.fillText(y,0,a/2);if(""!=x)if(x.indexOf("&#x")>=0){var icon=x.split("|")[0],iconColor=x.split("|")[1];icon=eval("('"+icon.replace("&#x","\\u").replace(";","")+"')");const font=new FontFace("awsui-iconfont","url(../commons/css/font/iconfont.woff");font.load().then(function(e){document.fonts.add(e),console.debug("Font loaded successfully"),b.font="19px awsui-iconfont",b.fillStyle=iconColor,b.fillText(icon,0,a/2)}),iconCavCode=H[0].toDataURL("image/png"),c.iconCavCode=iconCavCode}else{var J="/images/data-attr/"+x+".png",f=$(".shape_img[src='"+J+"']");0==f.length&&(f=$("").appendTo("#shape_img_container")),"true"==f.attr("loaded")?b.drawImage(f[0],g.w-20,0,20,20):f.bind("load.drawshape",function(){$(this).attr("loaded","true"),b.drawImage(f[0],g.w-20,0,20,20)})}b.beginPath(),b.rect(0,0,D,a),b.closePath()}},renderLinker:function(e,t){t&&(e.points=Utils.getLinkerPoints(e)),"curve"!=e.linkerType&&"broken"!=e.linkerType||e.points&&0!=e.points.length||(e.points=Utils.getLinkerPoints(e));var i=e.points,n=Utils.copy(e.from),r=Utils.copy(e.to);if(e.attribute&&e.attribute.collapseBy)$("#"+e.id).hide();else{$("#"+e.id).show();var s=Utils.getEndpointAngle(e,"from"),a=Utils.getEndpointAngle(e,"to"),o=Utils.getLinkerLineStyle(e.lineStyle);C(n,e,o.beginArrowStyle,s),C(r,e,o.endArrowStyle,a);var l=r.x,d=r.y,h=n.x,p=n.y;r.xh&&(h=u.x),u.yp&&(p=u.y)}var g=l,y=d,f=h-l,x=p-d,v=$("#"+e.id);if(0==v.length){var m=$("#designer_canvas");v=$("
    ").appendTo(m)}Model.getShapeById(e.id)||(v.css("z-index",Model.orderList.length+1),v.css({"pointer-events":"none"}));var b=v.find(".shape_canvas");b.attr({width:(f+20).toScale(),height:(x+20).toScale()}),v.css({left:(g-10).toScale(),top:(y-10).toScale(),width:(f+20).toScale(),height:(x+20).toScale()});var S=b[0].getContext("2d");S.scale(Designer.config.scale,Designer.config.scale),S.translate(10,10);var w=Utils.getLinkerLineStyle(e.lineStyle);S.lineWidth=w.lineWidth,S.strokeStyle="rgb("+w.lineColor+")",S.fillStyle="rgb("+w.lineColor+")",S.save();var k={x:n.x-g,y:n.y-y},M={x:r.x-g,y:r.y-y};if(S.save(),"dashed"==w.lineStyle?this.setLineDash(S,[5*w.lineWidth,2*w.lineWidth]):"dot"==w.lineStyle?this.setLineDash(S,[w.lineWidth,1.5*w.lineWidth]):"dashdot"==w.lineStyle&&this.setLineDash(S,[5*w.lineWidth,2*w.lineWidth,w.lineWidth,2*w.lineWidth]),S.lineJoin="round",S.beginPath(),this.actions.move.call(S,k),"curve"==e.linkerType){var D=i[0],_=i[1],I={x1:D.x-g,y1:D.y-y,x2:_.x-g,y2:_.y-y,x:M.x,y:M.y};this.actions.curve.call(S,I)}else{for(c=0;c").appendTo(t));var n=e.fontStyle,r="scale("+Designer.config.scale+")",s={"line-height":Math.round(1.25*n.size)+"px","font-size":n.size+"px","font-family":n.fontFamily,"font-weight":n.bold?"bold":"normal","font-style":n.italic?"italic":"normal","text-align":n.textAlign,color:"rgb("+n.color+")","text-decoration":n.underline?"underline":"none","-webkit-transform":r,"-ms-transform":r,"-o-transform":r,"-moz-transform":r,transform:r};if(i.css(s),null!=e.text&&""!=e.text){i.show();var a=e.text.replace(//g,">").replace(/\n/g,"
    ");i.html(a+"
    ");var o=this.getLinkerMidpoint(e),l=t.position();i.css({left:o.x.toScale()-l.left-i.width()/2,top:o.y.toScale()-l.top-i.height()/2})}else i.hide()},getLinkerMidpoint:function(e){var t={};if("normal"==e.linkerType)t={x:.5*e.from.x+.5*e.to.x,y:.5*e.from.y+.5*e.to.y};else if("curve"==e.linkerType){var i=e.from,n=e.points[0],r=e.points[1],s=e.to;t={x:.125*i.x+.375*n.x+.375*r.x+.125*s.x,y:.125*i.y+.375*n.y+.375*r.y+.125*s.y}}else{var a=[];a.push(e.from),(a=a.concat(e.points)).push(e.to);for(var o=0,l=1;ld){var u=(d-h)/p;t={x:(1-u)*n.x+u*r.x,y:(1-u)*n.y+u*r.y};break}h=c}}return t},controlStatus:{resizeDir:[],rotatable:!0},drawControls:function(e){var t=$("#shape_controls");if(0==t.length){var i=$("#designer_canvas");(t=$("
    ").appendTo(i)).append(""),t.append("
    "),t.append("
    "),t.append("
    "),t.append("
    "),t.append("
    "),t.append("
    "),t.append("
    "),t.append("
    "),Designer.op.shapeResizable(),t.append(""),Designer.op.shapeRotatable(),t.append("
    "),Designer.op.groupShapeChangable(),$(".shape_controller").css({"border-color":Designer.config.anchorColor,width:Designer.config.anchorSize-2,height:Designer.config.anchorSize-2})}$(".shape_controller").css({"z-index":Model.orderList.length}),$(".change_shape_icon").hide(),t.show();var n,r,s=0;1==e.length?(n=(l=Model.getShapeById(e[0])).props,s=l.props.angle,r=l.resizeDir,l.groupName&&SchemaGroup.groupExists(l.groupName)&&$(".change_shape_icon").show()):(n=Utils.getControlBox(e),r=["tl","tr","br","bl"]);for(var a=!0,o=0;o1)&&(r=[])}return this.controlStatus.rotatable=a,this.controlStatus.resizeDir=r,this.rotateControls(n,s),t},rotateControls:function(e,t){var i=$("#shape_controls"),n=Utils.getRotatedBox(e,t),r=n.w.toScale(),s=n.h.toScale();i.css({left:n.x.toScale(),top:n.y.toScale(),width:r,height:s,"z-index":Model.orderList.length});var a=r+20,o=s+20,l=$("#controls_bounding");l.attr({width:a,height:o});var d=l[0].getContext("2d");d.lineJoin="round",0==this.controlStatus.resizeDir.length?(d.lineWidth=2,d.strokeStyle=Designer.config.selectorColor,d.globalAlpha=.8):(d.lineWidth=1,d.strokeStyle=Designer.config.selectorColor,d.globalAlpha=.5),d.save(),d.clearRect(0,0,a,o),d.translate(a/2,o/2),d.rotate(t),d.translate(-a/2,-o/2),d.translate(9.5,9.5);var h={x:Math.round((e.x-n.x).toScale()),y:Math.round((e.y-n.y).toScale()),w:Math.floor(e.w.toScale()+1),h:Math.floor(e.h.toScale()+1)};d.strokeRect(h.x,h.y,h.w,h.h),d.restore();var p=0-Designer.config.anchorSize/2;e=Utils.toScale(e),n=Utils.toScale(n);var c={x:e.x+e.w/2,y:e.y+e.h/2};i.children(".shape_controller").hide();for(var u=0;u=0?e.x:f.indexOf("r")>=0?e.x+e.w:e.x+e.w/2,y=f.indexOf("t")>=0?e.y:f.indexOf("b")>=0?e.y+e.h:e.y+e.h/2;var v=Utils.getRotated(c,{x:g,y:y},t);x.css({left:v.x-n.x+p,top:v.y-n.y+p})}var m=Math.PI/8;if(i.children(".shape_controller").removeClass("s n e w"),t>m&&t<=3*m?(i.children("div[resizeDir=tl]").addClass("n"),i.children("div[resizeDir=tr]").addClass("e"),i.children("div[resizeDir=br]").addClass("s"),i.children("div[resizeDir=bl]").addClass("w"),i.children("div[resizeDir=l]").addClass("n w"),i.children("div[resizeDir=r]").addClass("s e"),i.children("div[resizeDir=b]").addClass("s w"),i.children("div[resizeDir=t]").addClass("n e")):t>3*m&&t<=5*m?(i.children("div[resizeDir=tl]").addClass("n e"),i.children("div[resizeDir=tr]").addClass("s e"),i.children("div[resizeDir=br]").addClass("s w"),i.children("div[resizeDir=bl]").addClass("n w"),i.children("div[resizeDir=l]").addClass("n"),i.children("div[resizeDir=r]").addClass("s"),i.children("div[resizeDir=b]").addClass("w"),i.children("div[resizeDir=t]").addClass("e")):t>5*m&&t<=7*m?(i.children("div[resizeDir=tl]").addClass("e"),i.children("div[resizeDir=tr]").addClass("s"),i.children("div[resizeDir=br]").addClass("w"),i.children("div[resizeDir=bl]").addClass("n"),i.children("div[resizeDir=l]").addClass("n e"),i.children("div[resizeDir=r]").addClass("s w"),i.children("div[resizeDir=b]").addClass("n w"),i.children("div[resizeDir=t]").addClass("s e")):t>7*m&&t<=9*m?(i.children("div[resizeDir=tl]").addClass("s e"),i.children("div[resizeDir=tr]").addClass("s w"),i.children("div[resizeDir=br]").addClass("n w"),i.children("div[resizeDir=bl]").addClass("n e"),i.children("div[resizeDir=l]").addClass("e"),i.children("div[resizeDir=r]").addClass("w"),i.children("div[resizeDir=b]").addClass("n"),i.children("div[resizeDir=t]").addClass("s")):t>9*m&&t<=11*m?(i.children("div[resizeDir=tl]").addClass("s"),i.children("div[resizeDir=tr]").addClass("w"),i.children("div[resizeDir=br]").addClass("n"),i.children("div[resizeDir=bl]").addClass("e"),i.children("div[resizeDir=l]").addClass("s e"),i.children("div[resizeDir=r]").addClass("n w"),i.children("div[resizeDir=b]").addClass("n e"),i.children("div[resizeDir=t]").addClass("s w")):t>11*m&&t<=13*m?(i.children("div[resizeDir=tl]").addClass("s w"),i.children("div[resizeDir=tr]").addClass("n w"),i.children("div[resizeDir=br]").addClass("n e"),i.children("div[resizeDir=bl]").addClass("s e"),i.children("div[resizeDir=l]").addClass("s"),i.children("div[resizeDir=r]").addClass("n"),i.children("div[resizeDir=b]").addClass("e"),i.children("div[resizeDir=t]").addClass("w")):t>13*m&&t<=15*m?(i.children("div[resizeDir=tl]").addClass("w"),i.children("div[resizeDir=tr]").addClass("n"),i.children("div[resizeDir=br]").addClass("e"),i.children("div[resizeDir=bl]").addClass("s"),i.children("div[resizeDir=l]").addClass("s w"),i.children("div[resizeDir=r]").addClass("n e"),i.children("div[resizeDir=b]").addClass("s e"),i.children("div[resizeDir=t]").addClass("n w")):(i.children("div[resizeDir=tl]").addClass("n w"),i.children("div[resizeDir=tr]").addClass("n e"),i.children("div[resizeDir=br]").addClass("s e"),i.children("div[resizeDir=bl]").addClass("s w"),i.children("div[resizeDir=l]").addClass("w"),i.children("div[resizeDir=r]").addClass("e"),i.children("div[resizeDir=b]").addClass("s"),i.children("div[resizeDir=t]").addClass("n")),this.controlStatus.rotatable){var b=i.find(".shape_rotater");b.show();var S={x:e.x+e.w/2,y:e.y-20},w=Utils.getRotated(c,S,t);b.css({top:w.y-20-n.y,left:w.x-20.5-n.x});var k=b[0].getContext("2d");k.lineWidth=1,k.strokeStyle=Designer.config.selectorColor,k.fillStyle="white",k.save(),k.clearRect(0,0,41,40),k.translate(20.5,20),k.rotate(t),k.translate(-20.5,-20),k.beginPath(),k.moveTo(20.5,20),k.lineTo(20.5,40),k.stroke(),k.beginPath(),k.arc(20.5,20,Designer.config.rotaterSize/2,0,2*Math.PI),k.closePath(),k.fill(),k.stroke(),k.restore()}else i.find(".shape_rotater").hide()},renderShapeLink:function(e,t){(e.find(".shape_link_point").remove(),t.link)&&$("").appendTo(e).on("mousedown.link",function(e){e.stopPropagation();var t=Model.getShapeById($(this).parent().attr("id"));if(myshapeLink=t,null!=t){var i=t.props.x,n=t.props.y,r=t.props.w,s=t.props.h,a=$("#link-dialog-normal_contextmenu");a.empty();for(var o=[],l=0;l0&&window.opener){var c=parent.window.$("#appId").val(),u={sid:$("#sid").val(),cmd:"com.actionsoft.apps.coe.pal_pl_repository_designer_viewer_link_perm",uuids:h,filePerms:filePerms};window.opener?u.modelType="used":null!=c&&"com.actionsoft.apps.coe.pal"!=c&&""!=c&&(u.modelType="published"),awsui.ajax.request({url:"./jd",method:"POST",data:u,async:!1,ok:function(e){for(var t=[],i=e.data.uuids,n=0;n"+g.name+"";"owner"==role&&(y+='
    删除
    "),y+="",a.append(y)}var f=Utils.getShapeByPosition(i,n,!1),x=Designer.clipboard.elements.length;if(null==f)x>0&&(a.children("li[ac=paste]").show(),a.children(".devi_clip").show());else{t=f.shape;a.children("li[ac=cut]").show()}a.css({display:"block","z-index":Model.orderList.length+3,left:i+r+10,top:n+s}),$(document).on("mousedown.link",":not(#link-dialog-normal_contextmenu li):not(#link-dialog-normal_contextmenu ul):not(#link-dialog-normal_contextmenu a):not(#link-dialog-normal_contextmenu div)",function(e){if("link-dialog-normal_contextmenu"==this.id)return!1;a.hide()})}e.stopPropagation()})},renderSahpeAttachment:function(e,t){e.find(".shape_attachment_point").remove();var i=[],n=[],r=!1,s=function(e){$.ajax({method:"POST",async:e,url:"./jd?sid="+encodeURIComponent(sid)+"&cmd=com.actionsoft.apps.coe.pal_processlevel_upfile_load",data:{pl_uuid:ruuid,uuids:t.id},success:function(s){i=s.data.list,$.ajax({method:"POST",async:e,url:"./jd?sid="+encodeURIComponent(sid)+"&cmd=com.actionsoft.apps.coe.pal_processlevel_relation_upfile_load",data:{pl_uuid:ruuid,shape_uuid:t.id},success:function(e){n=e.data.list,r=!0}})}})};s(!0);var a=(new Date).getTime(),o=window.setInterval(function(){((new Date).getTime()-a>5e3||1==r)&&(window.clearInterval(o),(i&&i.length>0||n&&n.length>0)&&$("
    ").appendTo(e).on("mousedown.attachment",function(e){e.stopPropagation(),s(!1);var t=Model.getShapeById($(this).parent().attr("id"));if(myshapeLink=t,null!=t){var r=t.props.x,a=t.props.y,o=t.props.w,l=t.props.h,d=$("#attachment-dialog-normal_contextmenu");d.empty(),d.append('');for(var h=0;h<2;h++){var p=i,c="附件";if(0==h||(p=n,c="关联附件"),p.length>0){d.append('
  • '+c+"
  • ");for(var u=0;u'+g.fileName+"";x&&(v+='
    下载
    "),v+="",d.append(v)}}}0==i.length&&0==n.length&&d.append('
  • 无附件
  • ');var m=Utils.getShapeByPosition(r,a,!1),b=Designer.clipboard.elements.length;if(null==m)b>0&&(d.children("li[ac=paste]").show(),d.children(".devi_clip").show());else{t=m.shape;d.children("li[ac=cut]").show()}d.css({display:"block","z-index":Model.orderList.length+3,left:r+o+10,top:a+l}),$(document).on("mousedown.attachment",":not(#attachment-dialog-normal_contextmenu span):not(#attachment-dialog-normal_contextmenu li):not(#attachment-dialog-normal_contextmenu ul):not(#attachment-dialog-normal_contextmenu a):not(#attachment-dialog-normal_contextmenu div)",function(e){if("attachment-dialog-normal_contextmenu"==this.id)return!1;d.hide()})}e.stopPropagation()}))},100)}}},Model={define:{},persistence:{},orderList:[],maxZIndex:0,linkerMap:{map:{},add:function(e,t){this.map[e]||(this.map[e]=[]),this.map[e].indexOf(t)<0&&this.map[e].push(t)},remove:function(e,t){this.map[e]&&Utils.removeFromArray(this.map[e],t)},empty:function(){this.map={}}},groupMap:{map:{},add:function(e,t){this.map[e]=t},push:function(e,t){this.map[e]||(this.map[e]=[]),this.map[e].push(t)},remove:function(e){delete this.map[e]},empty:function(){this.map={}}},create:function(e,t,i){var n=Utils.newId(),r=Utils.copy(Schema.shapes[e]);r.id=n,r.props.x=t,r.props.y=i,r.props.zindex=Model.maxZIndex+1,r.props=$.extend(!0,{},Schema.shapeDefaults.props,r.props);for(var s=0;s0)for(var o in Model.define.localAttribute[r.name])a.attributesJsonArray.push(Utils.copy(Model.define.localAttribute[r.name][o]))}return Designer.events.push("create",r),r},add:function(e,t){this.addMulti([e],t)},addMulti:function(e,t){void 0===t&&(t=!0);for(var i=[],n=0;n0)for(var p=0;p0&&this.updateMulti(r),MessageSource.commit(),!0},updatePage:function(e,t){var i=$.extend(Model.define.page,e),n={page:Utils.copy(Model.persistence.page),update:Utils.copy(i)};Model.persistence.page=Utils.copy(i),MessageSource.send("updatePage",n),Designer.initialize.initCanvas()},updateLocalAttribute:function(e){var t=$.extend(Model.define.localAttribute,e),i={localAttribute:Utils.copy(Model.persistence.localAttribute),update:Utils.copy(t)};Model.persistence.localAttribute=Utils.copy(t),MessageSource.send("updateLocalAttribute",i)},getShapeById:function(e){return this.define.elements[e]},getPersistenceById:function(e){return this.persistence.elements[e]},build:function(){for(var e in this.orderList=[],this.linkerMap.empty(),Model.define.elements){var t=Model.getShapeById(e);this.orderList.push({id:t.id,zindex:t.props.zindex}),"linker"==t.name&&(null!=t.from.id&&this.linkerMap.add(t.from.id,t.id),null!=t.to.id&&this.linkerMap.add(t.to.id,t.id)),t.group&&this.groupMap.push(t.group,t.id)}this.orderList.sort(function(e,t){return e.zindex-t.zindex});for(var i=0;i0&&(n=this.orderList[this.orderList.length-1].zindex),this.maxZIndex=n},getShapeLinkers:function(e){return this.linkerMap.map[e]},getGroupShapes:function(e){return this.groupMap.map[e]},changeShape:function(e,t){var i=Schema.shapes[t];e.name=t,e.title=i.shapeName,e.attribute=i.attribute,e.dataAttributes=i.dataAttributes,e.path=i.path,e.textBlock=i.textBlock,e.anchors=i.anchors,Schema.initShapeFunctions(e),Designer.painter.renderShape(e)}},Utils={getDomById:function(e){return document.getElementById(e)},newId:function(){return(Math.random()+(new Date).getTime()).toString(16).replace(".","")},getShapeByPosition:function(e,t,i){for(var n=[],r=Model.orderList.length-1;r>=0;r--){var s=Model.orderList[r].id,a=$("#"+s),o=Model.getShapeById(s),l=a.position(),d=e-l.left,h=t-l.top,p={x:l.left,y:l.top,w:a.width(),h:a.height()},c=a.find(".shape_canvas")[0].getContext("2d"),u=this.pointInRect(e,t,p);if("linker"==o.name){if(!u)continue;if(i)continue;var g={x:e-(v=(v=10).toScale()),y:t-v,w:2*v,h:2*v};if(this.pointInRect(o.to.x.toScale(),o.to.y.toScale(),g)){var y={type:"linker_point",point:"end",shape:o};n.push(y)}else if(this.pointInRect(o.from.x.toScale(),o.from.y.toScale(),g)){y={type:"linker_point",point:"from",shape:o};n.push(y)}else{var f=a.find(".text_canvas"),x=f.position();g={x:x.left,y:x.top,w:f.width(),h:f.height()};if(this.pointInRect(d,h,g)){y={type:"linker_text",shape:o};n.push(y);continue}if(v=(v=7).toScale(),(T=this.pointInLinker({x:e.restoreScale(),y:t.restoreScale()},o,v))>-1){y={type:"linker",shape:o,pointIndex:T};n.push(y)}}}else{if(u&&o.locked&&!i){if(c.isPointInPath(d,h)){y={type:"shape",shape:o};n.push(y)}continue}var v=7;if(u){g={x:e-(v=v.toScale()),y:t-v,w:2*v,h:2*v};for(var m={x:o.props.x+o.props.w/2,y:o.props.y+o.props.h/2},b=o.getAnchors(),S=(y=null,0);S0){var I=_.position(),U=d-I.left,C=h-I.top;if(_[0].getContext("2d").isPointInPath(U,C)){y={type:"dataAttribute",shape:o,attribute:D};break}}}}if(null!=y){n.push(y);continue}}if(!u)continue;if(c.isPointInPath(d,h))if(i){if((b=o.getAnchors())&&b.length){y={type:"shape",shape:o};n.push(y)}}else{y={type:"shape",shape:o};n.push(y)}else if(!o.attribute||void 0===o.attribute.linkable||o.attribute.linkable)if(null!=(k=Utils.getPointAngle(s,e.restoreScale(),t.restoreScale(),v))){y=null;for(var P={angle:k},L=1;L<=v;L++)if(0==k?(P.x=d+L,P.y=h):k1&&i)y=n[0];else if(n.length>1){var z=n[0];if("bounding"==z.type&&"linker_point"!=z.type&&"linker"!=z.type)return z;var T=[],A=[],B=[];for(r=0;r0&&A.length>0)for(r=0;r0&&(A.sort(function(e,t){return Utils.isSelected(e.shape.id)&&!Utils.isSelected(t.shape.id)?-1:!Utils.isSelected(e.shape.id)&&Utils.isSelected(t.shape.id)?1:t.shape.props.zindex-e.shape.props.zindex}),y=A[0]),null==y&&T.length>0&&(T.sort(function(e,t){return Utils.isSelected(e.shape.id)&&!Utils.isSelected(t.shape.id)?-1:!Utils.isSelected(e.shape.id)&&Utils.isSelected(t.shape.id)?1:t.shape.props.zindex-e.shape.props.zindex}),y=T[0]),null==y&&(y=n[0])}return y},checkCross:function(e,t,i,n){var r=!1,s=(t.x-e.x)*(n.y-i.y)-(t.y-e.y)*(n.x-i.x);if(0!=s){var a=((e.y-i.y)*(n.x-i.x)-(e.x-i.x)*(n.y-i.y))/s,o=((e.y-i.y)*(t.x-e.x)-(e.x-i.x)*(t.y-e.y))/s;a>=0&&a<=1&&o>=0&&o<=1&&(r=!0)}return r},rectCross:function(e,t){var i=e.x,n=e.x+e.w,r=e.y,s=e.y+e.h,a=t.x,o=t.x+t.w,l=t.y,d=t.y+t.h;return i=i.x&&e<=i.x+i.w&&t>=i.y&&t<=i.y+i.h},pointInLinker:function(e,t,i){for(var n=this.getLinkerLinePoints(t),r={x:e.x-i,y:e.y},s={x:e.x+i,y:e.y},a={x:e.x,y:e.y-i},o={x:e.x,y:e.y+i},l=1;lt.x2)&&(t.x2=n.x+n.w),(null==t.y2||n.y+n.h>t.y2)&&(t.y2=n.y+n.h)}return{x:t.x1,y:t.y1,w:t.x2-t.x1,h:t.y2-t.y1}},getShapesBounding:function(e){for(var t={x1:null,y1:null,x2:null,y2:null},i=0;it.x2)&&(t.x2=n.x+n.w),(null==t.y2||n.y+n.h>t.y2)&&(t.y2=n.y+n.h)}return{x:t.x1,y:t.y1,w:t.x2-t.x1,h:t.y2-t.y1}},getShapeContext:function(e){return Utils.getDomById(e).getElementsByTagName("canvas")[0].getContext("2d")},selectIds:[],selectShape:function(e,t){if("string"==typeof e){var i=e;(e=[]).push(i)}if(!(e.length<=0)){for(var n=Utils.mergeArray([],e),r=0;r0&&!h)Designer.painter.drawControls(a);void 0===t&&(t=!0),this.selectCallback&&t&&this.selectCallback(),Designer.events.push("selectChanged"),this.showLinkerCursor()}},selectCallback:null,unselect:function(){var e=this.selectIds;this.selectIds=[];for(var t=0;t=0&&!this.isLocked(e)},isLocked:function(e){return!!Model.getShapeById(e).locked},linkerCursorTimer:null,showLinkerCursor:function(){this.hideLinkerCursor();var e=Utils.getSelectedIds();if(1==e.length){var t=Model.getShapeById(e[0]);if("linker"!=t.name){var i=Model.linkerMap.map[t.id];if(i&&i.length){for(var n=[],r=0;r").appendTo("#designer_canvas"),r=i.linker,s=(r.lineStyle.lineWidth+2).toScale();s<5&&(s=5);var a=s/2;i.half=a,i.dom=n,n.css({width:s,height:s,"-webkit-border-radius":a,"-moz-border-radius":a,"-ms-border-radius":a,"-o-border-radius":a,"border-radius":a,"z-index":$("#"+r.id).css("z-index")})}this.linkerCursorTimer=setInterval(function(){for(var t=0;t=i.maxT&&(i.t=0,i.dom.show());var r=i.t;if("broken"==n.linkerType)for(var s=1;s=a.t&&r=1&&i.dom.hide()}},30)},hideLinkerCursor:function(){this.linkerCursorTimer&&clearInterval(this.linkerCursorTimer),$(".linker_cursor").remove()},showLinkerControls:function(){this.hideLinkerControls();var e=Utils.getSelectedIds(),t=null;if(1==e.length){var i=Model.getShapeById(e[0]);"linker"==i.name&&"curve"==i.linkerType&&(t=i)}function n(e,t){var i=null,n=null;"from"==t?(i=e.from,n=e.points[0]):(i=e.to,n=e.points[1]);var r=Utils.measureDistance(i,n).toScale()-6,s={x:(.5*i.x+.5*n.x).toScale(),y:(.5*i.y+.5*n.y).toScale()},a=Utils.getAngle(i,n)+Math.PI/2,o=$("
    ").appendTo("#designer_canvas"),l=$("
    ").appendTo("#designer_canvas"),d="rotate("+Math.round(a/(2*Math.PI)*360)+"deg)";return o.css({left:s.x,top:s.y-r/2,height:r,"z-index":Model.orderList.length,"-webkit-transform":d,"-ms-transform":d,"-o-transform":d,"-moz-transform":d,transform:d}),l.css({left:n.x.toScale()-4,top:n.y.toScale()-4,"z-index":Model.orderList.length}),l.attr("ty",t),l.unbind().bind("mousedown",function(i){e=Model.getShapeById(e.id);var n=null;n="from"==t?e.points[0]:e.points[1],i.stopPropagation(),l.addClass("moving"),Designer.op.changeState("changing_curve"),$(document).bind("mousemove.change_curve",function(t){var i=Utils.getRelativePos(t.pageX,t.pageY,$("#designer_canvas"));n.x=i.x,n.y=i.y,Designer.painter.renderLinker(e),Model.define.elements[e.id]=e,Utils.showLinkerControls(),$(".linker_control_point[ty="+l.attr("ty")+"]").addClass("moving"),$(document).unbind("mouseup.changed_curve").bind("mouseup.changed_curve",function(t){Model.update(e),$(document).unbind("mouseup.changed_curve")})}),$(document).unbind("mouseup.change_curve").bind("mouseup.change_curve",function(e){$(document).unbind("mouseup.change_curve"),$(document).unbind("mousemove.change_curve"),$(".linker_control_point").removeClass("moving"),Designer.op.resetState()})}),l}null!=t&&(n(t,"from"),n(t,"to"))},hideLinkerControls:function(){$(".linker_control_line").remove(),$(".linker_control_point").remove()},showAnchors:function(e){if(!($(".shape_contour[forshape="+e.id+"]").length>0)){var t=$("
    ").appendTo($("#designer_canvas"));t.css({left:e.props.x.toScale(),top:e.props.y.toScale(),"z-index":Model.orderList.length+1}),Utils.isSelected(e.id)||t.addClass("hovered_contour");for(var i=Designer.config.anchorSize-2,n={"border-color":Designer.config.anchorColor,"border-radius":Designer.config.anchorSize/2,width:i,height:i},r=e.getAnchors(),s={x:e.props.w/2,y:e.props.h/2},a=e.props.angle,o=0;o").appendTo(t),h=this.getRotated(s,l,a);n.left=h.x.toScale()-Designer.config.anchorSize/2,n.top=h.y.toScale()-Designer.config.anchorSize/2,d.css(n)}}},hideAnchors:function(){$(".hovered_contour").remove()},removeAnchors:function(){$("#dock_btn_richtext").hide(),$(".shape_contour").remove()},showLockers:function(e){var t=$("#"+e.id),i=t.position();function n(e){(function(){var e=$("").appendTo(t),i=e[0].getContext("2d");return i.strokeStyle="#777",i.lineWidth=1,i.beginPath(),i.moveTo(2,2),i.lineTo(9,9),i.moveTo(2,9),i.lineTo(9,2),i.stroke(),e})().css({left:e.x.toScale()-i.left-5,top:e.y.toScale()-i.top-5})}if("linker"!=e.name){var r=e.props,s={x:r.x+r.w/2,y:r.y+r.h/2};n(this.getRotated(s,{x:r.x,y:r.y},e.props.angle)),n(this.getRotated(s,{x:r.x+r.w,y:r.y},e.props.angle)),n(this.getRotated(s,{x:r.x+r.w,y:r.y+r.h},e.props.angle)),n(this.getRotated(s,{x:r.x,y:r.y+r.h},e.props.angle))}else n(e.from),n(e.to)},removeLockers:function(){$(".shape_locker").remove()},measureDistance:function(e,t){var i=t.y-e.y,n=t.x-e.x;return Math.sqrt(Math.pow(i,2)+Math.pow(n,2))},removeFromArray:function(e,t){var i=e.indexOf(t);return i>=0&&e.splice(i,1),e},addToArray:function(e,t){return e.indexOf(t)<0&&e.push(t),e},mergeArray:function(e,t){for(var i=0;i=t/4&&e=t/4*3&&e=t/4*5&&e=h.x-o&&b.x<=h.x+h.w+o){u=b.xr.y?(m=n,b=r,S=!1):(m=r,b=n,S=!0);h=Model.getShapeById(m.id).props,p=Model.getShapeById(b.id).props;if(b.x>=h.x-o&&b.x<=h.x+h.w+o){c=m.y+o;u=b.xr.x?(m=n,b=r,S=!1):(m=r,b=n,S=!0);h=Model.getShapeById(m.id).props,p=Model.getShapeById(b.id).props;if(b.y>=h.y-o&&b.y<=h.y+h.h+o){var u=m.x+o;c=b.y=h.y-o&&b.y<=h.y+h.h+o){u=m.x-o;c=b.y=h.x&&p.x<=g){var f=h.x+h.w/2;u=b.xy?g+o:y+o,p.ym.x){u=m.x+s/2;t.push({x:u,y:m.y}),t.push({x:u,y:b.y})}else{var x=h.y+h.h,v=p.y+p.h;u=m.x+o;if(v>=h.y&&p.y<=x){f=h.y+h.h/2;c=b.yv?x+o:v+o,p.x+p.w>m.x&&(u=p.x+p.w+o)}else c=b.ym.x&&b.y>m.y)t.push({x:b.x,y:m.y});else if(b.x>m.x&&p.x>m.x){u=p.x-m.x<60?m.x+(p.x-m.x)/2:m.x+o;c=b.y-o;t.push({x:u,y:m.y}),t.push({x:u,y:c}),t.push({x:b.x,y:c})}else if(b.x<=m.x&&b.y>h.y+h.h){x=h.y+h.h,u=m.x+o;c=b.y-x<60?x+(b.y-x)/2:b.y-o,t.push({x:u,y:m.y}),t.push({x:u,y:c}),t.push({x:b.x,y:c})}else{u=(y=p.x+p.w)>m.x?y+o:m.x+o,c=b.ym.y)t.push({x:b.x,y:m.y});else if(b.x=m.x&&b.y>h.y+h.h){x=h.y+h.h,u=m.x-o;c=b.y-x<60?x+(b.y-x)/2:b.y-o,t.push({x:u,y:m.y}),t.push({x:u,y:c}),t.push({x:b.x,y:c})}else{u=p.xm.x&&b.ym.x&&p.x>m.x){u=p.x-m.x<60?m.x+(p.x-m.x)/2:m.x+o;c=b.y+o;t.push({x:u,y:m.y}),t.push({x:u,y:c}),t.push({x:b.x,y:c})}else if(b.x<=m.x&&b.ym.x?y+o:m.x+o,c=b.y>h.y+h.h?b.y+o:h.y+h.h+o,t.push({x:u,y:m.y}),t.push({x:u,y:c}),t.push({x:b.x,y:c})}}else if(3==l&&4==d||4==l&&3==d){4==l?(m=n,b=r,S=!1):(m=r,b=n,S=!0);h=Model.getShapeById(m.id).props,y=(p=Model.getShapeById(b.id).props).x+p.w;if(b.x=m.x&&b.yh.y+h.h?b.y+o:h.y+h.h+o,t.push({x:u,y:m.y}),t.push({x:u,y:c}),t.push({x:b.x,y:c})}}S&&t.reverse()}else if(null!=n.id||null!=r.id){var m,b,S,w;null!=n.id?(m=n,b=r,S=!1,w=n.angle):(m=r,b=n,S=!0,w=r.angle);var k=Model.getShapeById(m.id).props;if(w>=i/4&&w=a)t.push({x:m.x,y:b.y});else{f=a/2;t.push({x:m.x,y:m.y-f}),t.push({x:b.x,y:m.y-f})}else if(t.push({x:m.x,y:m.y-o}),s>=a)if(b.x>=k.x-o&&b.x<=k.x+k.w+o){var M=k.x+k.w/2;b.x=k.x-o&&b.x<=k.x+k.w+o){M=k.x+k.w/2;b.x=i/4*3&&wm.x)if(s>=a){f=s/2;t.push({x:m.x+f,y:m.y}),t.push({x:m.x+f,y:b.y})}else t.push({x:b.x,y:m.y});else if(t.push({x:m.x+o,y:m.y}),s>=a)if(b.y>=k.y-o&&b.y<=k.y+k.h+o){M=k.y+k.h/2;b.y=k.y-o&&b.y<=k.y+k.h+o){M=k.y+k.h/2;b.y=i/4*5&&wm.y)if(s>=a)t.push({x:m.x,y:b.y});else{f=a/2;t.push({x:m.x,y:m.y+f}),t.push({x:b.x,y:m.y+f})}else if(t.push({x:m.x,y:m.y+o}),s>=a)if(b.x>=k.x-o&&b.x<=k.x+k.w+o){M=k.x+k.w/2;b.x=k.x-o&&b.x<=k.x+k.w+o){M=k.x+k.w/2;b.x=a){f=s/2;t.push({x:m.x-f,y:m.y}),t.push({x:m.x-f,y:b.y})}else t.push({x:b.x,y:m.y});else if(t.push({x:m.x-o,y:m.y}),s>=a)if(b.y>=k.y-o&&b.y<=k.y+k.h+o){M=k.y+k.h/2;b.y=k.y-o&&b.y<=k.y+k.h+o){M=k.y+k.h/2;b.y=a){f=(r.x-n.x)/2;t.push({x:n.x+f,y:n.y}),t.push({x:n.x+f,y:r.y})}else{f=(r.y-n.y)/2;t.push({x:n.x,y:n.y+f}),t.push({x:r.x,y:n.y+f})}}else if("curve"==e.linkerType){n=e.from,r=e.to;var D=.4*this.measureDistance(n,r);function _(e,t){if(null!=e.id)return{x:e.x-D*Math.cos(e.angle),y:e.y-D*Math.sin(e.angle)};var i=Math.abs(e.y-t.y),n=Math.abs(e.x-t.x),r=Math.atan(i/n),s={};return e.x<=t.x?s.x=e.x+D*Math.cos(r):s.x=e.x-D*Math.cos(r),e.y<=t.y?s.y=e.y+D*Math.sin(r):s.y=e.y-D*Math.sin(r),s}t.push(_(n,r)),t.push(_(r,n))}return t},getLinkerLinePoints:function(e){var t=[];if("curve"!=e.linkerType)t.push(e.from),t=t.concat(e.points);else for(var i=0;i<=1;){var n={x:(1-i)*(1-i)*(1-i)*e.from.x+3*(1-i)*(1-i)*i*e.points[0].x+3*(1-i)*i*i*e.points[1].x+i*i*i*e.to.x,y:(1-i)*(1-i)*(1-i)*e.from.y+3*(1-i)*(1-i)*i*e.points[0].y+3*(1-i)*i*i*e.points[1].y+i*i*i*e.to.y};t.push(n),i+=.05}return t.push(e.to),t},getLinkerBox:function(e){for(var t=this.getLinkerLinePoints(e),i=t[0].x,n=t[0].y,r=t[0].x,s=t[0].y,a=0;ar&&(r=o.x),o.ys&&(s=o.y)}return{x:i,y:n,w:r-i,h:s-n}},getShapeBox:function(e){var t=e.props,i=e.props.angle;return this.getRotatedBox(t,i)},getRotatedBox:function(e,t,i){if(0==t)return e;i||(i={x:e.x+e.w/2,y:e.y+e.h/2});var n=this.getRotated(i,{x:e.x,y:e.y},t),r=this.getRotated(i,{x:e.x+e.w,y:e.y},t),s=this.getRotated(i,{x:e.x+e.w,y:e.y+e.h},t),a=this.getRotated(i,{x:e.x,y:e.y+e.h},t),o=Math.min(n.x,r.x,s.x,a.x),l=Math.max(n.x,r.x,s.x,a.x),d=Math.min(n.y,r.y,s.y,a.y);return{x:o,y:d,w:l-o,h:Math.max(n.y,r.y,s.y,a.y)-d}},getRotated:function(e,t,i){var n=this.measureDistance(e,t);if(0==n||0==i)return t;var r=Math.atan(Math.abs(t.x-e.x)/Math.abs(e.y-t.y));t.x>=e.x&&t.y>=e.y?r=Math.PI-r:t.x<=e.x&&t.y>=e.y?r=Math.PI+r:t.x<=e.x&&t.y<=e.y&&(r=2*Math.PI-r);var s=((r%=2*Math.PI)+i)%(2*Math.PI);return{x:e.x+Math.sin(s)*n,y:e.y-Math.cos(s)*n}},getShapeAnchorInLinker:function(e){for(var t=e.getAnchors(),i=[],n={x:e.props.x+e.props.w/2,y:e.props.y+e.props.h/2},r=0;r=0;h--){var p=Model.orderList[h].id,c=Model.getShapeById(p);if("linker"==c.name){var u=c,g=null;d=3;for(r=0;r-1&&(null==g&&(g={linker:u,anchors:[],type:"line"}),g.anchors.push(f))}null!=g&&l.push(g)}}return l},getEndpointAngle:function(e,t){var i,n;if(i="from"==t?e.from:e.to,"normal"==e.linkerType)n="from"==t?e.to:e.from;else if("broken"==e.linkerType)n="from"==t?e.points[0]:e.points[e.points.length-1];else{var r,s=Utils.measureDistance(e.from,e.to);n={x:(1-(r="from"==t?12/s:1-12/s))*(1-r)*(1-r)*e.from.x+3*(1-r)*(1-r)*r*e.points[0].x+3*(1-r)*r*r*e.points[1].x+r*r*r*e.to.x,y:(1-r)*(1-r)*(1-r)*e.from.y+3*(1-r)*(1-r)*r*e.points[0].y+3*(1-r)*r*r*e.points[1].y+r*r*r*e.to.y}}return this.getAngle(n,i)},getAngle:function(e,t){var i=Math.atan(Math.abs(e.y-t.y)/Math.abs(e.x-t.x));return t.x<=e.x&&t.y>e.y?i=Math.PI-i:t.x=e.x&&t.y0)for(var a=0;a0)for(var i=0;i=0;n--){var r=Model.orderList[n].id;if(e.id!=r&&!Utils.isSelected(r)&&i.indexOf(r)<0){var s=Model.getShapeById(r);if(!(s.attribute&&void 0!==s.attribute.container&&0!=s.attribute.container||Utils.isFamilyShape(s,e))){var a=Utils.getShapeBox(s);Utils.rectInRect(a,e.props)&&(t.push(s),i.push(r))}}}return t}return t},getAttachedShapes:function(e){for(var t=[],i=0;i=0;a--){var o=Model.orderList[a].id,l=Model.getShapeById(o);l.attachTo==r.id&&!Utils.isSelected(o)&&t.indexOf(o)<0&&s.push(l)}n=n.concat(s)}}return n},copy:function(e){return $.extend(!0,{},e)},rangeChildren:function(e){var t=[];if(e.children&&e.children.length>0)if("verticalPool"==e.name){for(var i=[],n=[],r=0;r-1||t.push(o[h])}g.props.x=a,Designer.painter.renderShape(g),t.push(g),a+=g.props.w}n.sort(function(e,t){return e.props.y-t.props.y});var p=e.props.y+40;for(r=0;r-1||t.push(o[h])}g.props.y=p,Designer.painter.renderShape(g),t.push(g),p+=g.props.h}n.sort(function(e,t){return e.props.x-t.props.x});for(a=e.props.x+40,r=0;r=0;a--){var o=Model.orderList[a].id,l=Model.getShapeById(o);l.attribute&&l.attribute.collapseBy==r.id&&i.indexOf(o)<0&&s.push(l)}t=t.concat(s)}}return t},getCollapsedShapesById:function(e){for(var t=[],i=Model.orderList.length-1;i>=0;i--){var n=Model.orderList[i].id,r=Model.getShapeById(n);r.attribute&&r.attribute.collapseBy==e&&t.push(r)}return t},getShapeLineStyle:function(e,t){return 0!=t&&Model.define.theme&&Model.define.theme.shape?$.extend({},Schema.shapeDefaults.lineStyle,Model.define.theme.shape.lineStyle,e):$.extend({},Schema.shapeDefaults.lineStyle,e)},getLinkerLineStyle:function(e,t){return 0!=t&&Model.define.theme&&Model.define.theme.linker?$.extend({},Schema.linkerDefaults.lineStyle,Model.define.theme.linker.lineStyle,e):$.extend({},Schema.linkerDefaults.lineStyle,e)},getShapeFontStyle:function(e,t){return 0!=t&&Model.define.theme&&Model.define.theme.shape?$.extend({},Schema.shapeDefaults.fontStyle,Model.define.theme.shape.fontStyle,e):$.extend({},Schema.shapeDefaults.fontStyle,e)},getLinkerFontStyle:function(e,t){return 0!=t&&Model.define.theme&&Model.define.theme.linker?$.extend({},Schema.linkerDefaults.fontStyle,Model.define.theme.linker.fontStyle,e):$.extend({},Schema.linkerDefaults.fontStyle,e)},getShapeFillStyle:function(e,t){return 0!=t&&Model.define.theme&&Model.define.theme.shape?$.extend({},Schema.shapeDefaults.fillStyle,Model.define.theme.shape.fillStyle,e):$.extend({},Schema.shapeDefaults.fillStyle,e)},containsChinese:function(e){return escape(e).indexOf("%u")>=0},filterXss:function(e){return e=(e=(e=(e=(e=(e=(e=e.toString()).replace(//g,">")).replace(/%3E/g,">")).replace(/'/g,"'")).replace(/"/g,""")}},GradientHelper={createLinearGradient:function(e,t,i){var n,r,s,a=e.props;if(a.w>a.h?(n={x:0,y:a.h/2},r={x:a.w,y:a.h/2},s=(i.angle+Math.PI/2)%(2*Math.PI)):(n={x:a.w/2,y:0},r={x:a.w/2,y:a.h},s=i.angle),0!=s){var o={x:a.w/2,y:a.h/2};n=Utils.getRotated(o,n,s),r=Utils.getRotated(o,r,s),n.x<0&&(n.x=0),n.x>e.props.w&&(n.x=e.props.w),n.y<0&&(n.y=0),n.y>e.props.h&&(n.y=e.props.h),r.x<0&&(r.x=0),r.x>e.props.w&&(r.x=e.props.w),r.y<0&&(r.y=0),r.y>e.props.h&&(r.y=e.props.h)}var l=t.createLinearGradient(n.x,n.y,r.x,r.y);return l.addColorStop(0,"rgb("+i.beginColor+")"),l.addColorStop(1,"rgb("+i.endColor+")"),l},createRadialGradient:function(e,t,i){var n=e.props,r=n.h;n.w255&&(s=255);var a=Math.round(n+(255-n)/255*60);a>255&&(a=255);var o=Math.round(r+(255-r)/255*60);return o>255&&(o=255),s+","+a+","+o},getDarkerColor:function(e){var t=e.split(","),i=parseInt(t[0]),n=parseInt(t[1]),r=parseInt(t[2]),s=Math.round(i-i/255*60);s<0&&(s=0);var a=Math.round(n-n/255*60);a<0&&(a=0);var o=Math.round(r-r/255*60);return o<0&&(o=0),s+","+a+","+o}},MessageSource={batchSize:0,messages:[],withUndo:!0,withMessage:!0,withDock:!0,undoStack:{stack:[],push:function(e,t){this.stack.push(e),void 0===t&&(t=!0),t&&(MessageSource.redoStack.stack=[]),Designer.events.push("undoStackChanged",this.stack.length)},pop:function(){var e=this.stack.length;if(0==e)return null;var t=this.stack[e-1];return this.stack.splice(e-1,1),MessageSource.redoStack.push(t),Designer.events.push("undoStackChanged",this.stack.length),t}},redoStack:{stack:[],push:function(e){this.stack.push(e),Designer.events.push("redoStackChanged",this.stack.length)},pop:function(){var e=this.stack.length;if(0==e)return null;var t=this.stack[e-1];return this.stack.splice(e-1,1),MessageSource.undoStack.push(t,!1),Designer.events.push("redoStackChanged",this.stack.length),t}},beginBatch:function(){this.batchSize++},commit:function(){this.batchSize--,this.submit()},submit:function(){if(0==this.batchSize&&0!=this.messages.length){if(this.withDock&&Dock.update(!0),0==this.withMessage)return void(this.messages=[]);if(this.withUndo&&this.undoStack.push(this.messages),""!=chartId){var e=JSON.stringify(this.messages);"trial"!=role&&$("#saving_tip").text("<@i18n resource='diagraming.saving'/>");var t={action:"command",messages:e,ignore:"messages",name:userName};CLB.send(t,function(){"trial"!=role&&$("#saving_tip").text("<@i18n resource='diagraming.saved'/>")})}this.messages=[]}},send:function(e,t){this.messages.push({action:e,content:t}),this.submit()},receive:function(e){this.doWithoutMessage(function(){MessageSource.executeMessages(e,!0),Utils.showLinkerControls(),Utils.showLinkerCursor()})},undo:function(){var e=this.undoStack.pop();null!=e&&this.doWithoutUndo(function(){MessageSource.beginBatch();for(var t=0;t