function WorkflowDesigner(e){var t=this;this.Settings=e,this.GetName=function(){return t.Settings.name},this.error=function(e){alert(e)},this.load=function(e){var i=new Array;this.schemecode=e.schemecode,this.processid=e.processid,this.schemeid=e.schemeid,this.readonly=e.readonly,i.push({name:"schemecode",value:this.schemecode}),i.push({name:"processid",value:this.processid}),i.push({name:"schemeid",value:this.schemeid}),i.push({name:"operation",value:"load"});$.ajax({url:this.Settings.apiurl,data:i,async:!0,success:function(e){var i={};try{i=JSON.parse(e)}catch(n){return void t.error(e)}return i.isError?void t.error(i.errorMessage):(t.data=i,void t.render())},error:function(e,i,n){t.error(i+" "+n)}})},this.exists=function(e){var i=new Array;this.schemecode=e.schemecode,this.processid=e.processid,this.schemeid=e.schemeid,this.readonly=e.readonly,i.push({name:"schemecode",value:this.schemecode}),i.push({name:"processid",value:this.processid}),i.push({name:"schemeid",value:this.schemeid}),i.push({name:"operation",value:"exists"});var n=$.ajax({url:this.Settings.apiurl,data:i,async:!1,error:function(e,i,n){t.error(i+" "+n)}}).responseText;try{return JSON.parse(n)}catch(o){return t.error(n),!1}},this.create=function(){var e=new Array;e.push({name:"operation",value:"load"});$.ajax({url:this.Settings.apiurl,data:e,async:!0,success:function(e){try{t.data=JSON.parse(e)}catch(i){t.error(e)}t.render()}})},this.render=function(){t.Graph&&t.Graph.destroy(),t.Graph=new WorkflowGraph(this.Settings.renderTo,t,t.Settings,[WorkflowDesignerBackground,WorkflowDesignerToolbar,WorkflowDesignerActivity,WorkflowDesignerTransition,WorkflowDesignerKeyboard]),WorkflowDesignerCommon.DataCorrection(t.data),t.Graph.Draw(t.data)},this.save=function(e){if(t.readonly)return void alert(WorkflowDesignerConstants.ErrorReadOnlySaveText);var i=new Array;i.push({name:"schemecode",value:this.schemecode}),i.push({name:"processid",value:this.processid}),i.push({name:"schemeid",value:this.schemeid}),i.push({name:"operation",value:"save"}),i.push({name:"data",value:JSON.stringify(this.data)});$.ajax({url:this.Settings.apiurl,data:i,async:!0,type:"post",success:function(i){var n={};try{n=JSON.parse(i)}catch(o){return void t.error(i)}return n.isError?void t.error(n.errorMessage):(t.data=n,t.render(),void(e&&setTimeout(function(){e(t)},100)))}})},this.downloadscheme=function(e){var t=new Array;t.push({name:"operation",value:"downloadscheme"}),t.push({name:"data",value:JSON.stringify(this.data)}),WorkflowDesignerCommon.download(this.Settings.apiurl,t,"post")},this.uploadscheme=function(e,i){var n=this.GetName()+"_uploadiframe",o=document.createElement("iframe");o.setAttribute("id",n),o.setAttribute("name",n),o.setAttribute("width","0"),o.setAttribute("height","0"),o.setAttribute("border","0"),o.setAttribute("style","width: 0; height: 0; border: none;"),e.parentNode.appendChild(o),window.frames[n].name=n,iframeId=document.getElementById(n);var r=function(){iframeId.detachEvent?iframeId.detachEvent("onload",r):iframeId.removeEventListener("load",r,!1),iframeId.contentDocument?content=iframeId.contentDocument.body.innerHTML:iframeId.contentWindow?content=iframeId.contentWindow.document.body.innerHTML:iframeId.document&&(content=iframeId.document.body.innerHTML),setTimeout("iframeId.parentNode.removeChild(iframeId)",250);var e={};try{e=JSON.parse(content)}catch(n){return void t.error(content)}return e.isError?void t.error(e.errorMessage):(t.data=e,t.render(),void(i&&i(t)))};iframeId.addEventListener&&iframeId.addEventListener("load",r,!0),iframeId.attachEvent&&iframeId.attachEvent("onload",r),e.setAttribute("target",n),e.setAttribute("action",this.createurl("uploadscheme")),e.setAttribute("method","post"),e.setAttribute("enctype","multipart/form-data"),e.setAttribute("encoding","multipart/form-data"),e.submit()},this.createurl=function(e){var t=this.Settings.apiurl,i="?";return t.indexOf("?")>=0&&(i="&"),t+=i+"operation="+e,i="&",void 0!=this.schemeid&&(t+=i+"schemeid="+this.schemeid),void 0!=this.processid&&(t+=i+"processid="+this.processid),void 0!=this.schemecode&&(t+=i+"schemecode="+this.schemecode),t},this.validate=function(){var e=void 0,i=$.grep(t.data.Activities,function(e){return 1==e.IsInitial});return 1!=i.length&&(e=WorkflowDesignerConstants.ErrorActivityIsInitialCountText),e},this.destroy=function(){this.schemecode=void 0,this.processid=void 0,this.schemeid=void 0,this.data=void 0,this.Graph.destroy()},this.compile=function(e,i){e={Name:e.Name,Type:e.Type,IsGlobal:e.IsGlobal,ActionCode:e.ActionCode,Usings:e.Usings};var n=new Array;n.push({name:"schemecode",value:this.schemecode}),n.push({name:"processid",value:this.processid}),n.push({name:"schemeid",value:this.schemeid}),n.push({name:"operation",value:"compile"}),n.push({name:"data",value:JSON.stringify(e)});$.ajax({url:this.Settings.apiurl,data:n,async:!0,type:"post",success:function(e){try{e=JSON.parse(e)}catch(n){t.error(e)}i&&setTimeout(function(){i(e)},100)}})},this.getemptytype=function(e,t){var i=new Array;i.push({name:"operation",value:"getemptytype"}),i.push({name:"data",value:JSON.stringify(e)});$.ajax({url:this.Settings.apiurl,data:i,async:!0,type:"post",success:function(e){t&&setTimeout(function(){t(e)},100)}})}}function WorkflowDesignerActivity(){this.type="WorkflowDesignerActivity",this.init=function(e){this.designer=e,this.Layer=new Kinetic.Layer,this.designer.Stage.add(this.Layer),this.Layer.setZIndex(1),this.ImageCreateTransitionAndActivity=new Image,this.ImageCreateTransitionAndActivity.src=this.designer.Settings.imagefolder+"designer.createat.png",this.ImageCreateTransition=new Image,this.ImageCreateTransition.src=this.designer.Settings.imagefolder+"designer.createt.png",this.ImageDeleteActivity=new Image,this.ImageDeleteActivity.src=this.designer.Settings.imagefolder+"designer.delete.png"},this.ItemControls=new Array,this.draw=function(){null!=this.ItemControls&&this.ItemControls.forEach(function(e){e.control.destroy()}),this.ItemControls=new Array;var e=this;void 0!=this.designer.data.Activities&&this.designer.data.Activities.forEach(function(t){var i,n;if(""!=t.DesignerSettings.X&&""!=t.DesignerSettings.Y)i=Number(t.DesignerSettings.X),n=Number(t.DesignerSettings.Y);else{var o=this.GetDefaultPosition();i=o.x,n=o.y}var r=new WorkflowDesignerActivityControl({x:i,y:n,item:t,designer:e.designer,manager:e});e.ItemControls.push(r),r.Draw(),r.Sync()}),this.Layer.batchDraw()},this.CreateNewActivity=function(e,t){void 0==e&&(e=this.GetDefaultPosition()),void 0==t&&(t={IsAutoSchemeUpdate:!0,IsForSetState:!0}),void 0==t.Name&&(t.Name=this.GetDefaultName()),0==this.designer.data.Activities.length&&(t.IsInitial=!0),t.DesignerSettings&&(t.DesignerSettings=new{X:e.x,Y:e.y});var i=new WorkflowDesignerActivityControl({x:e.x,y:e.y,item:t,designer:this.designer,manager:this});return this.designer.data.Activities.push(t),this.ItemControls.push(i),i.Draw(),i.Sync(),i},this.GetDefaultName=function(){for(var e=WorkflowDesignerConstants.ActivityNamePrefix,t=1,i=0;ie.x2&&(e.x2=a),s>e.y2&&(e.y2=s)}return e},this.GetSelected=function(){var e=new Array;return this.ItemControls.forEach(function(t){t.selected&&e.push(t)}),e},this.SelectByPosition=function(e){this.ItemControls.forEach(function(t){t.getIntersectingActivityRect(e)&&t.Select()})},this.SelectByItem=function(e){this.ItemControls.forEach(function(t){t.item==e&&t.Select()})},this.ObjectMove=function(e){this.ItemControls.forEach(function(t){t.selected&&e.sender!=t&&t.ObjectMove(e.changepos)}),this.redrawTransitions()},this.createTransitionAndActivity=function(e){var t={x:e.control.getX()+2*e.rectangle.attrs.width,y:e.control.getY()},i=this.CreateNewActivity(t),n=this.designer.GetComponentByType("WorkflowDesignerTransition");n.CreateNewTransition(e,i),this.designer.redrawAll()},this.createTransition=function(e){var t=this.designer.GetComponentByType("WorkflowDesignerTransition");return t.CreateNewTransition(e)}}function WorkflowDesignerActivityControl(e){var t=this;this.manager=e.manager,this.designer=e.designer,this.x=e.x,this.y=e.y,this.item=e.item,this.control=void 0,this.rectangle=void 0,this.text=void 0,this.deleteButton=void 0,this.createTransitionAndActivityButton=void 0,this.createTransitionButton=void 0,this.selected=!1,this.dependentTransitions=new Array,this.getX=function(){return this.rectangle.attrs.x+this.control.attrs.x},this.getY=function(){return this.rectangle.attrs.y+this.control.attrs.y},this.GetName=function(){return this.item.Name},this.SetName=function(e){this.item.Name=e},this.Draw=function(){var i=t.designer.Settings;t.control=new Kinetic.Group({x:e.x,y:e.y,rotationDeg:0,draggable:!0,dragBoundFunc:function(e){var n=(i.DefaultMoveStep*t.manager.Layer.getScaleX(),i.DefaultMoveStep*t.manager.Layer.getScaleY()),e={x:Math.round(e.x/n)*n,y:Math.round(e.y/n)*n};if(t.selected){var o=this.getAbsolutePosition();t.manager.ObjectMove({sender:t,changepos:{x:e.x-o.x,y:e.y-o.y}})}return e}});var n=WorkflowDesignerConstants.ActivityColor;t.item.IsFinal&&(n=WorkflowDesignerConstants.ActivityFinalColor),t.item.IsInitial&&(n=WorkflowDesignerConstants.ActivityInitialColor),t.designer.GetCurrentActivity()==t.item.Name&&(n=WorkflowDesignerConstants.ActivityCurrentColor),t.rectangle=new Kinetic.Rect({x:0,y:0,width:this.designer.Settings.DefaultActivityWidth,height:this.designer.Settings.DefaultActivityHeight,stroke:"black",strokeWidth:1,fill:n,shadowOpacity:.5}),t.text=new Kinetic.Text({x:2,y:2,text:this.GetName(),fontSize:12,fontFamily:"Calibri",fontStyle:"bold",fill:"black"}),t.text.setX((t.rectangle.attrs.width-t.text.getWidth())/2),t.text.setY((t.rectangle.attrs.height-t.text.getHeight())/2-6),void 0==t.item.State&&(t.item.State=""),t.stateText=new Kinetic.Text({x:2,y:2,text:WorkflowDesignerConstants.ActivityFormLabel.State+": "+t.item.State,fontSize:10,fontFamily:"Calibri",fill:"black"}),t.stateText.setX((t.rectangle.attrs.width-t.stateText.getWidth())/2),t.stateText.setY(t.text.getY()+15),t.deleteButton=new Kinetic.Image({x:t.rectangle.attrs.width-13,y:3,image:t.manager.ImageDeleteActivity,width:10,height:10}),t.createTransitionAndActivityButton=new Kinetic.Image({x:t.rectangle.attrs.width-13,y:t.rectangle.attrs.height-26,image:t.manager.ImageCreateTransitionAndActivity,width:10,height:10}),t.createTransitionButton=new Kinetic.Image({x:t.rectangle.attrs.width-13,y:t.rectangle.attrs.height-13,image:t.manager.ImageCreateTransition,width:10,height:10}),t.control.add(t.rectangle),t.control.add(t.text),t.control.add(t.stateText),t.control.add(t.deleteButton),t.control.add(t.createTransitionAndActivityButton),t.control.add(t.createTransitionButton),this.control.on("dragend",this.Sync),this.control.on("dragmove",this._onMove),this.control.on("click",this._onClick),this.control.on("dblclick",this._onDblClick),this.deleteButton.on("click",this._onDelete),this.createTransitionAndActivityButton.on("click",this._onCreateTransitionAndActivity),this.createTransitionButton.on("click",this._onCreateTransition),t.manager.Layer.add(t.control)},this.Delete=function(){this.control.destroy(),this.designer.data.Activities.splice(this.designer.data.Activities.indexOf(this.item),1),this.manager.ItemControls.splice(this.manager.ItemControls.indexOf(this),1);for(var e=new Array,t=0;t=t.xl&&e.x=t.yl&&e.yt.xr||e.xrt.yr||e.yr10||Math.abs(i.yl-i.yr)>10)&&(t.designer.DeselectAll(),t.designer.ComponentsExecute("SelectByPosition",i))}t._mousedownpos=void 0,t.DeleteSelectionRect()})},this.setMoveModeEnabled=function(e){this._movemodeenabled=e,this.RectBG.setDraggable(this._movemodeenabled)},this.LayerScale=function(e){this.BackgroundLayer.setScale({x:this.BackgroundLayer.getScale().x+e,y:this.BackgroundLayer.getScale().y+e})},this.LayerScaleNorm=function(e){this.BackgroundLayer.setScale({x:1,y:1}),this.SelectionLayer.setScale({x:1,y:1}),this.RectBG.setPosition({x:0,y:0})},this.DrawSelectionRect=function(e){this.RectSelection?(this.RectSelection.setWidth(e.x-this._mousedownpos.x),this.RectSelection.setHeight(e.y-this._mousedownpos.y)):(this.RectSelection=new Kinetic.Rect({x:this._mousedownpos.x,y:this._mousedownpos.y,width:e.x-this._mousedownpos.x,height:e.y-this._mousedownpos.y,draggable:!1,fill:"#66CCFF",opacity:.2}),this.SelectionLayer.add(this.RectSelection)),this.SelectionLayer.batchDraw()},this.DeleteSelectionRect=function(e){this.RectSelection&&(this.RectSelection.destroy(),this.RectSelection=void 0,this.SelectionLayer.batchDraw())},this.getSelectionRectPos=function(){if(void 0!=this.RectSelection){var e=this.RectSelection.getAbsolutePosition(),t=e.x,i=e.y,n=t+this.RectSelection.getWidth()*this.SelectionLayer.getScaleX(),o=i+this.RectSelection.getHeight()*this.SelectionLayer.getScaleX();return{xl:Math.min(t,n),yl:Math.min(i,o),xr:Math.max(t,n),yr:Math.max(i,o)}}}}function WorkflowDesignerKeyboard(){this.type="WorkflowDesignerKeyboard",this.init=function(e){this.designer=e}}function WorkflowDesignerToolbar(){this.type="WorkflowDesignerToolbar";var e=this;this.init=function(t){this.designer=t,this.Layer=new Kinetic.Layer,this.designer.Stage.add(this.Layer),this.Layer.setZIndex(4);var i=40,n=10,o=0;this.Items.forEach(function(t){t.index=o,o++,t.separator||(t.ImageToolbar=new Image,t.ImageToolbar.onload=function(){t.cImageToolbar=new Kinetic.Image({x:i+40*t.index,y:n,image:t.ImageToolbar,width:32,height:32,strokeWidth:0}),t.cImageToolbar.on("click",t.click),e.Layer.add(t.cImageToolbar),WorkflowDesignerTooltip(e.Layer,t.cImageToolbar,t.title),e.Layer.batchDraw()},t.ImageToolbar.src=e.designer.Settings.imagefolder+t.img,t.imgactive&&(t.ImageActiveToolbar=new Image,t.ImageActiveToolbar.src=e.designer.Settings.imagefolder+t.imgactive))}),this.CreateInfoBlock({x:i+40*(this.Items[this.Items.length-1].index+1),y:n-7});var r=this.GetWorkflowDesignerBackground();r.RectBG.setDraggable(!1)},this.draw=function(){this.GraphRedrawAll()},this.GraphRedrawAll=function(){this.UpdateInfoBlock(),this.Layer.batchDraw()},this.CreateInfoBlock=function(e){this.infoText=new Kinetic.Text({text:this.GetInfoBlockText(),fontFamily:"Calibri",fontSize:12,padding:5,fill:"black"}),this.info=new Kinetic.Group(e),this.info.add(this.infoText),this.Layer.add(this.info)},this.UpdateInfoBlock=function(e){this.infoText.setText(this.GetInfoBlockText())},this.GetInfoBlockText=function(){var e=0,t=0,i=0;return void 0!=this.designer.data&&(e=this.designer.data.Activities.length,t=this.designer.data.Transitions.length,i=this.designer.data.Commands.length),WorkflowDesignerConstants.InfoBlockLabel.Activity+e+"\r\n"+WorkflowDesignerConstants.InfoBlockLabel.Transition+t+"\r\n"+WorkflowDesignerConstants.InfoBlockLabel.Command+i},this.ToolbarMovePress=function(){var e=this.GetWorkflowDesignerBackground();e.setMoveModeEnabled(!e._movemodeenabled);var t=this.GetItemByCode("move").cImageToolbar;e._movemodeenabled?(t.setStrokeWidth(4),t.setStrokeEnabled(!0),t.setStroke(WorkflowDesignerConstants.SelectColor)):(t.setStrokeEnabled(!1),t.setStroke("black")),this.Layer.batchDraw()},this.GetWorkflowDesignerBackground=function(){return this.designer.GetComponentByType("WorkflowDesignerBackground")},this.CreateActivity=function(){var e=this.designer.GetComponentByType("WorkflowDesignerActivity");e.CreateNewActivity(),this.designer.redrawAll()},this.AutoArrangement=function(){if(0!=e.designer.data.Activities.length){var t=new Array;e.designer.data.Activities.forEach(function(e){e.IsInitial&&t.push(e)}),e.designer.data.Activities.forEach(function(i){if(!i.IsInitial){for(var n=!0,o=0;o=0||(c.DesignerSettings.X=s.x,o.push(c),d.push(c))}for(var l=0;l0&&(s.y+=n.y);var h=new Array;e.designer.data.Transitions.forEach(function(e){"Direct"==e.Classifier&&e.From==c&&h.push(e.To)}),c.DesignerSettings.Y=s.y;var m=r(h,{x:s.x,y:s.y});s.y=m.y}return{x:s.x,y:s.y}};r(t,i,!0),e.designer.data.Transitions.forEach(function(e){void 0==e.DesignerSettings&&(e.DesignerSettings={}),e.DesignerSettings.Bending=0}),e.designer.Draw(e.designer.data)}},this.CopySelectedGenUniqueValue=function(e,t,i){for(var n=e,o=1;!0;o++){for(var r=!1,a=0;a'),beforerowadded:function(e){void 0!=e.Type&&(e.Type=decodeURIComponent(e.Type))},onrowadded:function(e){var t=e.find("[name=Purpose]"),i=t[0];t.change(function(){s(e)}),void 0!=i&&"System"!==i.value&&e.find('[name=Purpose] option[value="System"]').remove(),s(e)}},o=new WorkflowDesignerForm(n),r=function(){for(var e=$(o.window.find(".WorkflowDesignerTable"))[0],t=0;t"),n.top.buttonset().click(function(e,t){var i=n.top.buttonset().first()[0].childNodes[0].checked;i?a():r()});var l=function(e,i){if(o.CheckRequired(e,["Name","Type","Purpose","Parameter"],WorkflowDesignerConstants.FieldIsRequired)&&o.CheckUnique(e,["Name"],WorkflowDesignerConstants.FieldMustBeUnique)){o.ClearTempField(e),t.SyncTable(t.designer.data.Parameters,e,n);for(var r=0;r=0;n--){var r=$.grep(t,function(t){return e[n][i.keyproperty]==t.keyproperty});0==r.length?e.splice(n,1):i.elements.forEach(function(t){e[n][t.field]=r[0][t.field]})}for(var n=0;n0?1:d>=Math.PI/2?-1:0>=d&&d>-Math.PI/2?-1:1,s=(d>0?1:-1)*s;var c=a*l*s,h=(e+i)/2,m=(t+n)/2,g=h-c*Math.cos(Math.PI/2+d),u=m-c*Math.sin(Math.PI/2+d);return{x:g,y:u}},this.DrawTransition=function(e,t){var i,n,o,r,a=this.bending,s=50,d=this.from.rectangle,l=this.to.rectangle;i=this.from.getX(),n=this.from.getY(),o=this.to.getX(),r=this.to.getY();var c,h,m,g,u=i+d.attrs.width/2,f=n+d.attrs.height/2,p=o+l.attrs.width/2,y=r+l.attrs.height/2;p>=u-s-l.attrs.width/2&&p<=u+s+l.attrs.width/2&&y>=f?(c=u,h=n+d.attrs.height,m=p,g=r):p>=u-s-l.attrs.width/2&&p<=u+s+l.attrs.width/2&&f>y?(c=u,h=n,m=p,g=r+l.attrs.height):u>p?(c=i,h=f,m=o+l.attrs.width,g=y):(c=i+d.attrs.width,h=n+d.attrs.height/2,m=o,g=r+l.attrs.height/2),void 0!=e&&(c=e.x,h=e.y),void 0!=t&&(m=t.x,g=t.y);var v=Math.atan2(g-h,m-c),C=this._getLineLength(c,h,m,g),w=this._getCBPoint(c,h,m,g,v,C,a),T=w.x,A=w.y,S=.5,b=Math.atan2(g-A,m-T),D=Math.PI/10*(a>0?1:0>a?-1:0);Math.abs(v)>=Math.PI/2&&(D=-D),b+=D;var k=void 0==this.item.Classifier?"notspecified":this.item.Classifier.toLowerCase(),I="notspecified"==k?"gray":"direct"==k?"green":"red";if(this.start={x:c,y:h},this.end={x:m,y:g},this.middle={x:T,y:A},this.angle=b,this.lineAngle=v,this.control)WorkflowDesignerCommon.updateArrowByAngle(this.arrow,m,g,b,15,I),this.line.setPoints([c,h,T,A,m,g]),this.line.setTension(S);else{this.control=new Kinetic.Group({x:0,y:0,rotationDeg:0}),this.arrow=WorkflowDesignerCommon.createArrowByAngle(m,g,b,15,I);var x={points:[c,h,T,A,m,g],stroke:I,strokeWidth:1,lineCap:"round",lineJoin:"round",tension:S};this.item.IsFork&&(x.dash=[10,10]),this.line=new Kinetic.Line(x),this.control.add(this.line),this.control.add(this.arrow),this.manager.Layer.add(this.control)}},this.DrawActivePoint=function(){if(this.activePoint)this._moveActivePoint(this.middle.x,this.middle.y);else{var e=this._createActivePoint(this.middle.x,this.middle.y,this.control);t.manager.APLayer.add(e),this.activePoint=e}},this.DrawTouchPoints=function(){var e=.1*this._getLineLength(this.start.x,this.start.y,this.end.x,this.end.y);if(2==this.touchpoints.length)this._moveTouchPoints(this.touchpoints[0],this.start.x,this.start.y,e,this.angle,this.lineAngle),this._moveTouchPoints(this.touchpoints[1],this.end.x,this.end.y,e,this.angle,this.lineAngle,!0);else{var i=this._createTouchPoint(this.start.x,this.start.y,e,this.angle,this.lineAngle,this.control),n=this._createTouchPoint(this.end.x,this.end.y,e,this.angle,this.lineAngle,this.control,!0);t.manager.APLayer.add(i),t.manager.APLayer.add(n),this.touchpoints=[i,n]}},this.Draw=function(e,t){this.DrawTransition(e,t),this.DrawActivePoint(),this.DrawTouchPoints()},this.DeleteTouchPoint=function(e){for(var t=0;t=s&&(a=-a,s=-s,d=-d);var l=-(d+a*o)/s,c=r>l?-1:1,h=this._getLineLength(e,t,i,n),m=(e+i)/2,g=(t+n)/2,u=this._getLineLength(m,g,o,r),f=u/h*c;return 0==s&&(f=-f),f},this.getIntersectingRect=function(e){var t=this.activePoint.getAbsolutePosition();return t.x>=e.xl&&t.x=e.yl&&t.yAdditional params").button({icons:{primary:"ui-icon-wrench"},text:!1}).on("click",function(){a.is(":visible")&&"and"===g?a.hide():a.show(),s.is(":visible")&&"and"===u?s.hide():s.show()});p.append(" "),p.append(y);var v=$(e.find("[name=condition]").parent().parent().children()[0]),C=$("").button({icons:{primary:"ui-icon-wrench"},text:!1}).on("click",function(){d.is(":visible")&&"and"===f?d.hide():d.show()});v.append(" "),v.append(C)}},n=new WorkflowDesignerForm(i),o=function(e,i){var n=!0;n&=e.CheckRequired([i],["Name"],WorkflowDesignerConstants.FieldIsRequired);var o=["Type"];"Command"==i.Trigger.Type?o.push("Command.Name"):"Timer"==i.Trigger.Type&&o.push("Timer.Name"),n&=e.CheckRequired([i.Trigger],o,WorkflowDesignerConstants.FieldIsRequired),i.Conditions.forEach(function(t){o=["Type"],"Action"==t.Type&&o.push("Action.ActionName"),n&=e.CheckRequired([t],o,WorkflowDesignerConstants.FieldIsRequired),"Always"==t.Type&&i.Conditions.length>1?(n=!1,e.ControlAddError(t.control_Type,WorkflowDesignerConstants.AlwaysConditionShouldBeSingle)):"Otherwise"==t.Type&&i.Conditions.length>1&&(n=!1,e.ControlAddError(t.control_Type,WorkflowDesignerConstants.OtherwiseConditionShouldBeSingle))});var r=$(i.control_Conditions.parent().parent().children()[0]).children("label");return!i.Conditions.length>0?(r.attr("title",WorkflowDesignerConstants.TransitionFormLabel.ConditionsListShouldNotBeEmpty),r.css("color","red"),n=!1):(r.attr("title",void 0),r.css("color","")),t.designer.data.Transitions.forEach(function(o){o!=t.item&&o.Name==i.Name&&(n=!1,e.ControlAddError(i.control_Name,WorkflowDesignerConstants.FieldMustBeUnique))}),e.CheckRequired(i.Restrictions,["Type","Actor.Name"],WorkflowDesignerConstants.FieldIsRequired)||(n=!1),n},r=function(e){return o(n,e)?(n.ClearTempField(e),t.item.Name=e.Name,t.item.From.Name=e.From.Name,t.item.To.Name=e.To.Name,t.item.Classifier=e.Classifier,t.item.Restrictions=e.Restrictions,t.item.Trigger=e.Trigger,t.item.Conditions=e.Conditions,t.item.IsFork=e.IsFork,t.item.MergeViaSetState=e.MergeViaSetState,t.item.DisableParentStateControl=e.DisableParentStateControl,t.item.ConditionsConcatenationType=e.ConditionsConcatenationType,t.item.AllowConcatenationType=e.AllowConcatenationType,t.item.RestrictConcatenationType=e.RestrictConcatenationType,WorkflowDesignerCommon.DataCorrection(t.designer.data),t.designer.Draw(t.designer.data),!0):!1};n.showModal(r)},this.Sync=function(){t.item.DesignerSettings.Bending=t.bending},this.destroy=function(){this.control.destroy(),this.activePoint.destroy(),this.touchpoints.forEach(function(e){e.destroy()})}}function WorkflowDesignerTransitionTempControl(e){this.x=e.x,this.y=e.y,this.manager=e.manager,this.control=void 0,this.Draw=function(e,t){this.control=new Kinetic.Group({x:0,y:0,rotationDeg:0}),this.line=new Kinetic.Line({points:[this.x,this.y,e,t],stroke:"#FFCC99",strrokeWidth:1});var i=Math.atan2(t-this.y,e-this.x);this.arrow=WorkflowDesignerCommon.createArrowByAngle(e,t,i,20,"#FFCC99"),this.control.add(this.line),this.control.add(this.arrow),this.manager.Layer.add(this.control)},this.Redraw=function(e){this.line.setPoints([this.x,this.y,e.x,e.y]);var t=Math.atan2(e.y-this.y,e.x-this.x);WorkflowDesignerCommon.updateArrowByAngle(this.arrow,e.x,e.y,t,20,"#FFCC99")},this.Delete=function(){this.control.destroy()}}function WorkflowDesignerForm(e){this.type="WorkflowDesignerForm",this.parameters=e,this.id=WorkflowDesignerCommon.createUUID(),this.isReadOnly=function(){return this.parameters.readonly},this.showModal=function(e){var t=this;t.window=$("
"),t.window.id=this.id;var i=void 0;"table"===this.parameters.type?i=this.generateTable(this.parameters):"form"===this.parameters.type&&(i=this.generateForm(this.parameters)),void 0==i&&(i=new Array),void 0!=t.parameters.top&&i.unshift(t.parameters.top),void 0!=t.parameters.bottom&&i.push(t.parameters.bottom),t.window.append(i),void 0!=this.parameters.renderFinalFunc&&this.parameters.renderFinalFunc(i),t.window.dialog({modal:!0,title:this.parameters.title,width:this.parameters.width,maxHeight:WorkflowDesignerConstants.FormMaxHeight,beforeClose:function(i,n){if(t.ClearError(),void 0!=e&&!t.isReadOnly()){var o=t.getEditData(t.parameters);return e(o,t.parameters)}},close:function(e,t){$(this).dialog("destroy").remove()}})},this.getEditData=function(e){var t,i=this;if("form"==e.type)t={},e.elements.forEach(function(e){t["control_"+e.field]=e.control,"table"==e.type||"form"==e.type?t[e.field]=i.getEditData(e):i.SetValueByPropertyName(t,e.field,i.getEasyControlValue(e))});else if("table"==e.type){t=[];var n=e.control;if(e.elements.forEach(function(e){var o=i.getElementCode(e),r="[name="+o+"]",a=n.find(r);if(void 0!=a)for(var s=0;s');n.attr("name",i.getElementCode(e));var o=new Array;return e.elements.forEach(function(n){var r=$("");void 0==t&&(t="");var a=t+"_"+n.field,s=$("");if(s[0].innerHTML=n.name,r.append($("").append(s)),"table"==n.type){n.fieldFunc?n.data=n.fieldFunc(e.data):n.data=e.data[n.field];var d=i.generateTable(n,a);r.append($("").append(d))}else if("form"==n.type){n.fieldFunc?n.data=n.fieldFunc(e.data):n.data=e.data[n.field];var d=i.generateForm(n,a);r.append($("").append(d))}else{var l=i.generateEasyControls(n,i.GetValueByPropertyName(e.data,n.field),a);s[0]["for"]=l[0].id,n.control=l[0],r.append($("").append(l[0]))}o.push(r)}),e.control=n,n.append(o),n},this.generateTable=function(e,t){var i=this,n=$('
');n.attr("name",i.getElementCode(e));var o=$(""),r=$("");e.elements.forEach(function(e){var t=$("");t[0].innerHTML=e.name,void 0!=e.width&&(t[0].width=e.width),r.append(t)}),this.isReadOnly()||r.append(""),o.append(r),n.append(o);var a=function(o){void 0!=e.beforerowadded&&e.beforerowadded(o);var r=$("");e.keyproperty&&r.attr("keyproperty",o[e.keyproperty]),void 0==t&&(t="");var a=t+WorkflowDesignerCommon.createUUID();if(e.elements.forEach(function(e){if("table"==e.type){e.fieldFunc?e.data=e.fieldFunc(o):e.data=o[e.field];var t=i.generateTable(e,a);r.append($("").append(t))}else{var n=i.generateEasyControls(e,i.GetValueByPropertyName(o,e.field),a,o);r.append($("").append(n))}}),!i.isReadOnly()){var s=$('');s[0].innerHTML=WorkflowDesignerConstants.ButtonTextDelete,s[0].href="#",s.on("click",function(){return r.remove(),!1}),r.append($("").append(s))}n.append(r),void 0!=e.onrowadded&&e.onrowadded(r)};void 0!=e.data&&e.data.forEach(function(e){a(e)}),e.control=n;var s=new Array;if(s.push(n),!this.isReadOnly()){var d=$('');d[0].innerHTML=WorkflowDesignerConstants.ButtonTextCreate,d[0].href="#",d.on("click",function(){var t={};return e.datadefault&&(t=e.datadefault),a(t),!1}),s.push(d)}return s},this.generateEasyControls=function(e,t,i,n){var o=this;if("input"==e.type){var r=$('');if(r[0].id=this.generateid(e.field,i),r[0].name=o.getElementCode(e),void 0!=t&&(r[0].value=t),o.isReadOnly()&&r.attr("readonly",!0),void 0!=e.datasource){var a={minLength:0,autoFocus:!0,source:e.datasource,open:function(e,t){$(this).autocomplete("option","appendTo",r[0].id),r[0].acwasopened||($(this).autocomplete("close"),r[0].acwasopened=!0,$(this).autocomplete("search",r[0].value))}};r.autocomplete(a),r.autocomplete("option","appendTo",r[0].id)}return r}if("json"==e.type){var r=$('');r[0].id=this.generateid(e.field,i),r[0].name=o.getElementCode(e),void 0!=t&&(r[0].value=t),o.isReadOnly()&&r.attr("readonly",!0);var s=$('');s[0].id=r[0].id+"_button";var d=$('
'+r[0].value+"
");return d[0].id=r[0].id+"_form",s.on("click",function(t){var i=d.dialog({autoOpen:!1,height:WorkflowDesignerConstants.EditJSONSettings.Height,width:WorkflowDesignerConstants.EditJSONSettings.Width,modal:!0,buttons:{},close:function(){var e=ace.edit(r[0].id+"_editor").getValue();r[0].value=o.toCompactJSON(e)}}),n=d.dialog("option","buttons");r[0].readOnly||$.extend(n,{format:{text:WorkflowDesignerConstants.EditJSONLabel.Format,click:function(){var e=ace.edit(r[0].id+"_editor").getValue();a.setValue(o.toPrettyJSON(e)),a.clearSelection()}}}),void 0==e.getemptytype||r[0].readOnly||$.extend(n,{createemptytype:{text:WorkflowDesignerConstants.EditJSONLabel.CreateEmptyType,click:function(){var t=e;void 0!=t.getemptytype&&t.getemptytype(o,r[0],function(e){void 0!=e&&""!=e&&(a.setValue(o.toPrettyJSON(e)),a.clearSelection())})}}}),d.dialog("option","buttons",n);var a=ace.edit(r[0].id+"_editor");r[0].readOnly?a.setOptions({readOnly:!0}):a.setOptions({readOnly:!1}),a.getSession().setMode("ace/mode/json"),a.setValue(o.toPrettyJSON(r[0].value)),a.clearSelection(),i.dialog("open")}),$('
').append($('
').append(s)).append($('
').append(r))}if("code"==e.type){void 0==t&&(t="");var r=$("");r[0].id=this.generateid(e.field,i),r[0].name=o.getElementCode(e),r[0].code={},r[0].code.code=decodeURIComponent(t);var l=n.Usings;l=void 0==l?o.parameters.designer.data.AdditionalParams.Usings.join(";")+";":decodeURIComponent(l),r[0].code.usings=l;var d=$('

'+WorkflowDesignerConstants.EditCodeLabel.Usings+'

'+this.htmlEncode(r[0].code.code)+'
}
');return d[0].id=r[0].id+"_form",o.isReadOnly()&&r.attr("disabled",!0),r.on("click",function(e){var t=d.dialog({autoOpen:!1,height:WorkflowDesignerConstants.EditCodeSettings.Height,width:WorkflowDesignerConstants.EditCodeSettings.Width,modal:!0,buttons:{compile:{text:WorkflowDesignerConstants.EditCodeLabel.Compile, click:function(){for(var e=o.getEditData(o.parameters),t=void 0,i=0;i'+(e.Success?WorkflowDesignerConstants.EditCodeLabel.CompileSucceeded:e.Message)+"").dialog({modal:!0,height:e.Success?WorkflowDesignerConstants.EditCodeSettingsSuccessBoxHeight:WorkflowDesignerConstants.EditCodeSettings.MessageBoxHeight,width:e.Success?WorkflowDesignerConstants.EditCodeSettings.SuccessBoxWidth:WorkflowDesignerConstants.EditCodeSettings.MessageBoxWidth,buttons:{ok:{text:WorkflowDesignerConstants.EditCodeLabel.OK,click:function(){$(this).dialog("close")}}}})};o.parameters.designer.designer.compile(t,n)}}}},close:function(){r[0].code={},r[0].code.code=ace.edit(r[0].id+"_editor").getValue(),r[0].code.usings=$("#"+r[0].id+"_usingsedit")[0].value.replace(/(\r\n|\n|\r)/gm,"")}});$("#"+r[0].id+"_usingsedit")[0].value=o.htmlEncode(o.modifyUsingString(r[0].code.usings)),$("#"+r[0].id+"_usings").accordion({collapsible:!0,active:!1,heightStyle:"content"});var n=$("#"+o.generateid("Type",i))[0].value.toLowerCase(),a=$("#"+o.generateid("Name",i))[0].value;""===a&&(a="???");var s="{";"action"===n&&(s="void "+a+" (ProcessInstance processInstance, WorkflowRuntime runtime, string parameter) {"),"condition"===n&&(s="bool "+a+" (ProcessInstance processInstance, WorkflowRuntime runtime, string parameter) {"),"ruleget"===n&&(s="IEnumerable<string> "+a+" (ProcessInstance processInstance, WorkflowRuntime runtime, string parameter) {"),"rulecheck"===n&&(s="bool "+a+" (ProcessInstance processInstance, WorkflowRuntime runtime, string identityId, string parameter) {"),$("#"+r[0].id+"_function_upper").html(s);var l=ace.edit(r[0].id+"_editor");l.getSession().setMode("ace/mode/csharp"),t.dialog("open")}),r}if("checkbox"==e.type){var r=$('');return r[0].type="checkbox",r[0].id=this.generateid(e.field,i),r[0].checked=t,r[0].name=o.getElementCode(e),o.isReadOnly()&&r.attr("disabled","disabled"),r}if("select"==e.type){var r=$('');return r[0].id=this.generateid(e.field,i),r[0].name=o.getElementCode(e),r.append($("")),void 0!=e.datasource&&e.datasource.forEach(function(i){var n=$("");void 0==e.displayfield?(n[0].value=i,n[0].innerHTML=i):(n[0].value=i[e.displayfield],n[0].innerHTML=i[e.displayfield]),n[0].value==t&&(n[0].selected="selected"),o.isReadOnly()&&r.attr("readonly",!0),r.append(n)}),r}if("textarea"==e.type){var r=$('');return r[0].id=o.generateid(e.field,i),r[0].name=o.getElementCode(e),void 0!=t&&(r[0].value=t),this.isReadOnly()&&r.attr("readonly",!0),r}},this.modifyUsingString=function(e){var t=e.substring(e.length-1);return";"===t&&(e=e.substring(0,e.length-1)),e.split(";").join(";\r\n")+";"},this.getEasyControlValue=function(e){return"input"==e.type?e.control.value:"json"==e.type?e.control.value:"code"==e.type?e.control.code:"checkbox"==e.type?e.control.checked:"select"==e.type?e.control.value:"textarea"==e.type?e.control.value:void 0},this.generateid=function(e,t){return t?e+"_"+t+"_"+this.id:e+"_"+this.id},this.GetValueByPropertyName=function(e,t){if(void 0!=e){if(t.indexOf(".")<0)return e[t];var i=e;return t.split(".").forEach(function(e){void 0!=i&&(i=i[e])}),i}},this.SetValueByPropertyName=function(e,t,i){if(t.indexOf(".")<0)return e[t]=i;for(var n=e,o=t.split("."),r=0;r").text(e).html()},this.htmlDecode=function(e){return $("
").html(e).text()},this.toCompactJSON=function(e){try{return JSON.stringify(JSON.parse(e))}catch(t){try{return JSON5.stringify(JSON5.parse(e))}catch(t){return e}}},this.toPrettyJSON=function(e){try{return JSON.stringify(JSON.parse(e),null," ")}catch(t){try{return JSON5.stringify(JSON5.parse(e),null," ")}catch(t){return e}}}}function WorkflowGraph(e,t,i,n){var o=this;o.container=e,o.designer=t,void 0==i&&(i=new Object),void 0==i.Container&&(i.Container="container"),void 0==i.graphwidth&&(i.graphwidth=1024),void 0==i.graphheight&&(i.graphheight=768),void 0==i.DefaultActivityWidth&&(i.DefaultActivityWidth=150),void 0==i.DefaultActivityHeight&&(i.DefaultActivityHeight=75),void 0==i.DefaultMoveStep&&(i.DefaultMoveStep=10),void 0==i.imagefolder&&(i.imagefolder="/images/"),this.Settings=i,this.Settings.ContainerStage=this.container+"_stage",$("#"+this.container).append("
"),this.Stage=new Kinetic.Stage({container:this.Settings.ContainerStage,width:this.Settings.graphwidth,height:this.Settings.graphheight,stroke:"black"}),this.Components=new Array,this.AddComponent=function(e){var t=new e;return t.init(this),o.Components.push(t),t},this.GetComponentByType=function(e){for(var t=0;t0&&confirm(WorkflowDesignerConstants.DeleteConfirm)&&(e.forEach(function(e){e.Delete()}),this.redrawAll())},this.destroy=function(){this.Stage.destroy()},this.GetCurrentActivity=function(){if(void 0!=o.data&&void 0!=o.data.AdditionalParams&&void 0!=o.data.AdditionalParams.ProcessParameters)for(var e=0;ei;i++)e[i]=t.substr(Math.floor(16*Math.random()),1);e[14]="4",e[19]=t.substr(3&e[19]|8,1),e[8]=e[13]=e[18]=e[23]="-";var n=e.join("");return n},DataCorrection:function(e){void 0==e.AdditionalParams&&(e.AdditionalParams={}),void 0==e.AdditionalParams.Actions&&(e.AdditionalParams.Actions=[]),void 0==e.AdditionalParams.Rules&&(e.AdditionalParams.Rules=[]);var t=function(e,t){if(void 0!=e){var i=$.grep(t,function(t){return t==e});0==i.length&&t.push(e)}},i=function(e,t,i){if(void 0!=e&&void 0!=t){var n=$.grep(t,function(t){return e==t[i]});return n.length>0?n[0]:void 0}};e.Activities.forEach(function(i){void 0!=i.Implementation&&(i.Implementation.forEach(function(i){t(i.Name,e.AdditionalParams.Actions)}),i.PreExecutionImplementation.forEach(function(i){t(i.Name,e.AdditionalParams.Actions)}))}),e.Transitions.forEach(function(n){void 0!=n.From&&(n.From=i(n.From.Name,e.Activities,"Name")),void 0!=n.To&&(n.To=i(n.To.Name,e.Activities,"Name")),void 0!=n.Restrictions&&n.Restrictions.forEach(function(t){t.Actor=i(t.Actor.Name,e.Actors,"Name")}),void 0!=n.Condition&&void 0!=n.Condition.Action&&t(n.Condition.Action.Name,e.AdditionalParams.Actions),void 0!=n.Trigger&&void 0!=n.Trigger.Command&&(n.Trigger.Command=i(n.Trigger.Command.Name,e.Commands,"Name")),void 0!=n.Trigger&&void 0!=n.Trigger.Timer&&(n.Trigger.Timer=i(n.Trigger.Timer.Name,e.Timers,"Name"))}),e.Commands.forEach(function(t){void 0!=t.InputParameters&&t.InputParameters.forEach(function(t){t.Parameter=i(t.Parameter.Name,e.Parameters,"Name")})}),e.Actors.forEach(function(i){void 0!=i.Rule&&t(i.Rule,e.AdditionalParams.Rules)})},download:function(e,t,i){if(e&&t){var n=new Array;t.forEach(function(e){var t=$('');t.attr("name",e.name),t.attr("value",e.value),n.push(t)});var o=$('
');o.append(n),o.appendTo("body").submit().remove()}}};