apps/com.actionsoft.apps.coe.method.process.flowchart/method/process.flowchart/diagram.schema.tpl

857 lines
37 KiB
Smarty
Raw Normal View History

2022-06-28 01:22:45 +08:00
Schema.addCategory({name:"process_flowchart", text:"流程图", dataAttributes:[
{name:"No.", type:"number", value:"", category:"default"},
{name:"Name", type:"string", value:"", category:"default"},
{name:"Owner", type:"string", value:"", category:"default"},
{name:"Link", type:"link", value:"", category:"default"},
{name:"Memo", type:"string", value:"", category:"default"},
{name:"Cost", type:"number", value:"", category:"default"},
{name:"Time", type:"number", value:"", category:"default"},
{name:"Manner", type:"list", value:"", category:"default"},
{name:"Department", type:"string", value:"", category:"default"},
{name:"Input", type:"string", value:"", category:"default"},
{name:"Output", type:"string", value:"", category:"default"},
{name:"Risk", type:"string", value:"", category:"default"},
{name:"Remarks", type:"string", value:"", category:"default"}
]});
/***矩形*/Schema.addShape({name:"process", title:"流程", text:"流程", category:"process_flowchart", props:{w:110, h:50},fillStyle:{type: "gradient",gradientType: "linear",beginColor: "245,250,255",endColor: "232,242,255",angle: Math.PI*0.5}, path:[
{lineStyle:{lineWidth:1,lineColor:"137,188,255"},actions:{ref:"rectangle"}}
]});
/***菱形Decision*/Schema.addShape({name:"decision", title:"判定", text:"判定", category:"process_flowchart", props:{w:90, h:50},fillStyle:{color:"175,210,255"}, path:[
{actions:[
{action:"move", x:"0", y:"h/2"},
{action:"line", x:"w/2", y:"0"},
{action:"line", x:"w", y:"h/2"},
{action:"line", x:"w/2", y:"h"},
{action:"line", x:"0", y:"h/2"},
{action:"close"}
]}
]});
/***胶囊型Terminator*/Schema.addShape({name:"terminator", title:"开始/结束", text:"开始/结束", category:"process_flowchart", props:{w:100, h:50},lineStyle:{lineColor:"137,188,255"}, path:[
{actions:[
{action:"move", x:"Math.min(w,h)/3", y:"0"},
{action:"line", x:"w-Math.min(w,h)/3", y:"0"},
{action:"curve", x1:"w+Math.min(w,h)/3/3", y1:"0", x2:"w+Math.min(w,h)/3/3", y2:"h", x:"w-Math.min(w,h)/3", y:"h"},
{action:"line", x:"Math.min(w,h)/3", y:"h"},
{action:"curve", x1:"-Math.min(w,h)/3/3", y1:"h", x2:"-Math.min(w,h)/3/3", y2:"0", x:"Math.min(w,h)/3", y:"0"},
{action:"close"}
]}
]});
/***下边波浪矩形Document*/Schema.addShape({name:"document", title:"文档", text:"文档", category:"process_flowchart", props:{w:110, h:50}, anchors:[
{x:"w*0.5", y:"0"},
{x:"w", y:"h*0.5"},
{x:"w*0.5", y:"h-Math.min(h/8,w/12)"},
{x:"0", y:"h*0.5"}
],fillStyle:{type: "gradient",gradientType: "linear",beginColor: "255,255,255",endColor: "237,237,237",angle: Math.PI*0.5}, textBlock:{x:"0", y:"0", w:"w", h:"h*0.9"},textBlockFinal:{x:"w/2-60", y:"h", w:"120", h:"30"}, path:[
{lineStyle:{lineWidth:1,lineColor:"197,197,197"},actions:[
{action:"move", x:"0", y:"h-Math.min(h/8,w/12)"},
{action:"line", x:"0", y:"0"},
{action:"line", x:"w", y:"0"},
{action:"line", x:"w", y:"h-Math.min(h/8,w/12)"},
{action:"quadraticCurve", x1:"w*0.75", y1:"h-3*Math.min(h/8,w/12)", x:"w*0.5", y:"h-Math.min(h/8,w/12)"},
{action:"quadraticCurve", x1:"w*0.25", y1:"h+Math.min(h/8,w/12)", x:"0", y:"h-Math.min(h/8,w/12)"},
{action:"close"}
]}
]});
/***平行四边形Data*/Schema.addShape({name:"data", title:"数据", text:"数据", category:"process_flowchart", props:{w:100, h:70}, anchors:[
{x:"w*0.5", y:"0"},
{x:"w-Math.min(h/3,w/3)/2", y:"h*0.5"},
{x:"w*0.5", y:"h"},
{x:"Math.min(h/3,w/3)/2", y:"h*0.5"}
], textBlock:{x:"w*0.15", y:"0", w:"w*0.7", h:"h"},textBlockFinal:{x:"w/2-60", y:"h", w:"120", h:"30"}, path:[
{actions:[
{action:"move", x:"Math.min(h/3,w/3)", y:"0"},
{action:"line", x:"w", y:"0"},
{action:"line", x:"w-Math.min(h/3,w/3)", y:"h"},
{action:"line", x:"0", y:"h"},
{action:"line", x:"Math.min(h/3,w/3)", y:"0"},
{action:"close"}
]}
]});
/***三分矩形Predefinedprocess*/Schema.addShape({name:"predefinedProcess", title:"子流程", text:"子流程", category:"process_flowchart", props:{w:110, h:50},fillStyle:{type: "gradient",gradientType: "linear",beginColor: "245,250,255",endColor: "232,242,255",angle: Math.PI*0.5}, textBlock:{x:"Math.min(w/6,20)", y:"0", w:"w-Math.min(w/6,20)*2", h:"h"},textBlockFinal:{x:"w/2-60", y:"h", w:"120", h:"30"}, path:[
{lineStyle:{lineWidth:1,lineColor:"137,188,255"},actions:[
{action:"move", x:"0", y:"0"},
{action:"line", x:"w", y:"0"},
{action:"line", x:"w", y:"h"},
{action:"line", x:"0", y:"h"},
{action:"line", x:"0", y:"0"},
{action:"close"},
{action:"move", x:"Math.min(w/6,20)", y:"0"},
{action:"line", x:"Math.min(w/6,20)", y:"h"},
{action:"move", x:"w- Math.min(w/6,20)", y:"0"},
{action:"line", x:"w- Math.min(w/6,20)", y:"h"}
]}
]});
/***横圆柱矩形Storeddata*/Schema.addShape({name:"storedData", title:"外部数据", text:"外部数据", category:"process_flowchart", props:{w:100, h:70}, anchors:[
{x:"w*0.5", y:"0"},
{x:"w-Math.min(w/8,h/8)", y:"h*0.5"},
{x:"w*0.5", y:"h"},
{x:"0", y:"h*0.5"}
], textBlock:{x:"w*0.1", y:"0", w:"w*0.75", h:"h"},textBlockFinal:{x:"w/2-60", y:"h", w:"120", h:"30"}, path:[
{actions:[
{action:"move", x:"w/6", y:"0"},
{action:"line", x:"w", y:"0"},
{action:"curve", x1:"w-w/6", y1:"0", x2:"w-w/6", y2:"h", x:"w", y:"h"},
{action:"line", x:"w/6", y:"h"},
{action:"curve", x1:"-w/17", y1:"h", x2:"-w/17", y2:"0", x:"w/7", y:"0"},
{action:"close"}
]}
]});
/***四分矩形Internalstorage*/Schema.addShape({name:"internalStorage", title:"内部存储", text:"内部存储", category:"process_flowchart", props:{w:100, h:70}, textBlock:{x:"Math.min(w/6,20)", y:"Math.min(h/5,20)", w:"w - Math.min(w/6,20)", h:"h- Math.min(h/5,20)"},textBlockFinal:{x:"w/2-60", y:"h", w:"120", h:"30"}, path:[
{actions:[
{action:"move", x:"0", y:"0"},
{action:"line", x:"w", y:"0"},
{action:"line", x:"w", y:"h"},
{action:"line", x:"0", y:"h"},
{action:"line", x:"0", y:"0"},
{action:"close"},
{action:"move", x:"Math.min(w/6,20)", y:"0"},
{action:"line", x:"Math.min(w/6,20)", y:"h"},
{action:"move", x:"0", y:"Math.min(h/5,20)"},
{action:"line", x:"w", y:"Math.min(h/5,20)"}
]}
]});
/***圆QSequentialdata*/Schema.addShape({name:"sequentialData", title:"队列数据", text:"队列数据", category:"process_flowchart", props:{w:70, h:70}, textBlock:{x:"w*0.1", y:"h*0.2", w:"w*0.8", h:"h*0.6"},textBlockFinal:{x:"w/2-60", y:"h", w:"120", h:"30"}, path:[
{actions:[
{action:"move", x:"w/2", y:"h"},
{action:"curve", x1:"w/2-w*2/3", y1:"h", x2:"w/2-w*2/3", y2:"0", x:"w/2", y:"0"},
{action:"curve", x1:"w/2+w*2/3", y1:"0", x2:"w/2+w*2/3", y2:"h", x:"w/2", y:"h"},
{action:"line", x:"w", y:"h"},
{action:"close"}
]}
]});
/***横立体圆柱Directdata*/Schema.addShape({name:"directData", title:"数据库", text:"数据库", category:"process_flowchart", props:{w:100, h:70}, textBlock:{x:"0", y:"0", w:"w*0.8", h:"h"},textBlockFinal:{x:"w/2-60", y:"h", w:"120", h:"30"}, path:[
{actions:[
{action:"move", x:"w*0.15", y:"0"},
{action:"line", x:"w-h/6", y:"0"},
{action:"curve", x1:"w+h/22", y1:"0", x2:"w+h/22", y2:"h", x:"w-h/6", y:"h"},
{action:"line", x:"w*0.15", y:"h"},
{action:"curve", x1:"-w*0.05", y1:"h", x2:"-w*0.05", y2:"0", x:"w*0.15", y:"0"},
{action:"close"},
{action:"move", x:"w-h/6", y:"0"},
{action:"curve", x1:"w-h/8*3", y1:"0", x2:"w-h/8*3", y2:"h", x:"w-h/6", y:"h"},
{action:"curve", x1:"w-h/8*3", y1:"h", x2:"w-h/8*3", y2:"0", x:"w-h/6", y:"0"}
]}
]});
/***横梯形Manualinput*/Schema.addShape({name:"manualInput", title:"人工输入", text:"人工输入", category:"process_flowchart", props:{w:100, h:70}, anchors:[
{x:"0", y:"h*0.5"},
{x:"w*0.5", y:"Math.min(h/2,w/6)/2"},
{x:"w", y:"h*0.5"},
{x:"w*0.5", y:"h"}
], textBlock:{x:"0", y:"h*0.1", w:"w", h:"h*0.9"},textBlockFinal:{x:"w/2-60", y:"h", w:"120", h:"30"}, path:[
{actions:[
{action:"move", x:"0", y:"Math.min(h/2,w/6)"},
{action:"line", x:"w", y:"0"},
{action:"line", x:"w", y:"h"},
{action:"line", x:"0", y:"h"},
{action:"line", x:"0", y:"Math.min(h/2,w/6)"},
{action:"close"}
]}
]});
/***纸牌Card*/Schema.addShape({name:"card", title:"卡片", text:"卡片", category:"process_flowchart", props:{w:100, h:70}, path:[
{actions:[
{action:"move", x:"0", y:"Math.min(h/2,w/4)"},
{action:"line", x:"Math.min(h/2,w/4)", y:"0"},
{action:"line", x:"w", y:"0"},
{action:"line", x:"w", y:"h"},
{action:"line", x:"0", y:"h"},
{action:"line", x:"0", y:"Math.min(h/2,w/4)"},
{action:"close"}
]}
]});
/***旗Papertape*/Schema.addShape({name:"paperTape", title:"条带", text:"条带", category:"process_flowchart", props:{w:100, h:70}, textBlock:{x:"0", y:"h*0.1", w:"w", h:"h*0.8"},textBlockFinal:{x:"w/2-60", y:"h", w:"120", h:"30"}, anchors:[
{x:"w*0.5", y:"Math.min(Math.min(w,h)/8,w/12)"},
{x:"w", y:"h*0.5"},
{x:"w*0.5", y:"h-Math.min(Math.min(w,h)/8,w/12)"},
{x:"0", y:"h*0.5"}
], path:[
{actions:[
{action:"move", x:"0", y:"Math.min(Math.min(w,h)/8,w/12)"},
{action:"quadraticCurve", x1:"w*0.25", y1:"3*Math.min(Math.min(w,h)/8,w/12)", x:"w*0.5", y:"Math.min(Math.min(w,h)/8,w/12)"},
{action:"quadraticCurve", x1:"w*0.75", y1:"-Math.min(Math.min(w,h)/8,w/12)", x:"w", y:"Math.min(Math.min(w,h)/8,w/12)"},
{action:"line", x:"w", y:"h-Math.min(Math.min(w,h)/8,w/12)"},
{action:"quadraticCurve", x1:"w*0.75", y1:"h-3*Math.min(Math.min(w,h)/8,w/12)", x:"w*0.5", y:"h-Math.min(Math.min(w,h)/8,w/12)"},
{action:"quadraticCurve", x1:"w*0.25", y1:"h+Math.min(Math.min(w,h)/8,w/12)", x:"0", y:"h-Math.min(Math.min(w,h)/8,w/12)"},
{action:"line", x:"0", y:"Math.min(Math.min(w,h)/8,w/12)"},
{action:"close"}
]}
]});
/***左角按钮Display*/Schema.addShape({name:"display", title:"展示", text:"展示", category:"process_flowchart", props:{w:100, h:70}, path:[
{actions:[
{action:"move", x:"w-w/6", y:"0"},
{action:"line", x:"w/6", y:"0"},
{action:"line", x:"0", y:"h/2"},
{action:"line", x:"w/6", y:"h"},
{action:"line", x:"w-w/6", y:"h"},
{action:"quadraticCurve", x1:"w", y1:"h", x:"w", y:"h*0.5"},
{action:"quadraticCurve", x1:"w", y1:"0", x:"w-w/6", y:"0"},
{action:"close"}
]}
]});
/***倒梯形Manualoperation*/Schema.addShape({name:"manualOperation", title:"人工操作", text:"人工操作", category:"process_flowchart", props:{w:100, h:70}, textBlock:{x:"w*0.1", y:"0", w:"w*0.8", h:"h"},textBlockFinal:{x:"w/2-60", y:"h", w:"120", h:"30"}, anchors:[
{x:"w*0.5", y:"0"},
{x:"w-Math.min(h/2,w/6)/2", y:"h*0.5"},
{x:"w*0.5", y:"h"},
{x:"Math.min(h/2,w/6)/2", y:"h*0.5"}
], path:[
{actions:[
{action:"move", x:"0", y:"0"},
{action:"line", x:"w", y:"0"},
{action:"line", x:"w-Math.min(h/2,w/6)", y:"h"},
{action:"line", x:"Math.min(h/2,w/6)", y:"h"},
{action:"line", x:"0", y:"0"},
{action:"close"}
]}
]});
/***水晶棱形Preparation*/Schema.addShape({name:"preparation", title:"预备", text:"预备", category:"process_flowchart", props:{w:100, h:70}, path:[
{actions:[
{action:"move", x:"0", y:"h*0.5"},
{action:"line", x:"Math.min(h/2,w/6)", y:"0"},
{action:"line", x:"w-Math.min(h/2,w/6)", y:"0"},
{action:"line", x:"w", y:"h/2"},
{action:"line", x:"w-Math.min(h/2,w/6)", y:"h"},
{action:"line", x:"Math.min(h/2,w/6)", y:"h"},
{action:"line", x:"0", y:"h/2"},
{action:"close"}
]}
]});
/***两条水平线Parallelmode*/Schema.addShape({name:"parallelMode", title:"并行模式", text:"并行模式", category:"process_flowchart", props:{w:100, h:70}, anchors:[
{x:"w*0.5", y:"0"},
{x:"w*0.5", y:"0"},
{x:"w*0.5", y:"h"},
{x:"w*0.5", y:"h"}
], path:[
{actions:[
{action:"move", x:"0", y:"0"},
{action:"line", x:"w", y:"0"},
{action:"line", x:"0", y:"0"},
{action:"move", x:"0", y:"h"},
{action:"line", x:"w", y:"h"},
{action:"line", x:"0", y:"h"},
{action:"close"}
]},
{fillStyle:{type:"none"}, lineStyle:{lineWidth:0}, actions:[
{action:"move", x:"0", y:"0"},
{action:"line", x:"w", y:"0"},
{action:"line", x:"w", y:"h"},
{action:"line", x:"0", y:"h"},
{action:"line", x:"0", y:"0"},
{action:"close"}
]}
]});
/***棺型Looplimit*/Schema.addShape({name:"loopLimit", title:"循环限值", text:"循环限值", category:"process_flowchart", props:{w:100, h:70}, path:[
{actions:[
{action:"move", x:"0", y:"Math.min(h/2,w/6)"},
{action:"line", x:"Math.min(h/2,w/6)", y:"0"},
{action:"line", x:"w-Math.min(h/2,w/6)", y:"0"},
{action:"line", x:"w", y:"Math.min(h/2,w/6)"},
{action:"line", x:"w", y:"h"},
{action:"line", x:"0", y:"h"},
{action:"line", x:"0", y:"Math.min(h/2,w/6)"},
{action:"close"}
]}
]});
/***圆形On-pagereference*/Schema.addShape({name:"onPageReference", title:"页面内引用", text:"页面内引用", category:"process_flowchart", props:{w:70, h:70}, fontStyle:{size:8}, path:[
{actions:{ref:"round"}}
]});
/***下三角锥型Off-pagereference*/Schema.addShape({name:"offPageReference", title:"跨页引用", text:"跨页引用", category:"process_flowchart", props:{w:70, h:60}, textBlock:{x:"0", y:"0", w:"w", h:"h-Math.min(h,w)/3"},textBlockFinal:{x:"w/2-60", y:"h", w:"120", h:"30"}, path:[
{actions:[
{action:"move", x:"0", y:"0"},
{action:"line", x:"w", y:"0"},
{action:"line", x:"w", y:"h-Math.min(h,w)/3"},
{action:"line", x:"w*0.5", y:"h"},
{action:"line", x:"0", y:"h-Math.min(h,w)/3"},
{action:"line", x:"0", y:"0"},
{action:"close"}
]}
]});
/***特殊线矩形Annotation*/Schema.addShape({name:"annotation", title:"注释", text:"注释", category:"process_flowchart", props:{w:100, h:70}, anchors:[
{x:"0", y:"h*0.5"},
{x:"0", y:"h*0.5"},
{x:"0", y:"h*0.5"},
{x:"0", y:"h*0.5"}
], path:[
{fillStyle:{type:"none"}, lineStyle:{lineWidth:0}, actions:[
{action:"move", x:"0", y:"0"},
{action:"line", x:"w", y:"0"},
{action:"line", x:"w", y:"h"},
{action:"line", x:"0", y:"h"},
{action:"line", x:"0", y:"0"},
{action:"close"}
]},
{fillStyle:{type:"none"}, actions:[
{action:"move", x:"w/6", y:"0"},
{action:"line", x:"0", y:"0"},
{action:"line", x:"0", y:"h"},
{action:"line", x:"w/6", y:"h"}
]},
{fillStyle:{type:"none"}, lineStyle:{lineWidth:0}, actions:[
{action:"move", x:"0", y:"0"},
{action:"line", x:"w", y:"0"},
{action:"line", x:"w", y:"h"},
{action:"line", x:"0", y:"h"},
{action:"close"}
]}
]});
/***组Group*/Schema.addShape({name:"group", title:"组", text:"组", category:"process_flowchart", attribute:{container:true,editable:true}, props:{w:200, h:140}, textBlock:{x:"10", y:"0", w:"w-20", h:"h"},textBlockFinal:{x:5, y:0, w:"w-10", h:"h"}, fontStyle:{textAlign:"top", vAlign:"left"}, path:[
{lineStyle:{lineWidth:2, lineStyle:"dashed"}, fillStyle:{type:"none"}, actions:{ref:"roundRectangle"}}
]});
/*泳池/泳道分组*/
Schema.addCategory({name:"lane", text:"泳池/泳道"});
function getPool(a, d) {
for (var b = Model.orderList.length - 1; b >= 0; b--) {
var e = Model.orderList[b].id;
var c = Model.getShapeById(e);
if (c.name == d) {
if (Utils.rectCross(c.props, a.props)) {
return c
}
}
}
return null
}
function getVerticalPoolWidth(c) {
var a = 0;
for (var b = 0; b < c.children.length; b++) {
var d = c.children[b];
var e = Model.getShapeById(d);
if (e.name != "horizontalSeparator") {
a += e.props.w
}
}
return a
}
function getHorizontalPoolHeight(c) {
var a = 0;
for (var b = 0; b < c.children.length; b++) {
var d = c.children[b];
var e = Model.getShapeById(d);
if (e.name != "horizontalSeparator") {
a += e.props.w
}
}
return a
}
function getChild(c, a) {
for (var b = 0; b < c.children.length; b++) {
var d = c.children[b];
var e = Model.getShapeById(d);
if (e.name == a) {
return e
}
}
return null
}
Schema.addShape({name:"verticalPool", title:"泳池(垂直)",text:"泳池(垂直)", category:"lane", attribute:{rotatable:false, linkable:false, container:true}, children:[], props:{w:250, h:540}, fontStyle:{size:16}, textBlock:{x:10, y:0, w:"w-20", h:40},textBlockFinal:{x:"w/2-60", y:"h", w:"120", h:"30"}, anchors:[], resizeDir:["l", "b", "r"],
path:[
{fillStyle:{type:"none"}, lineStyle:{lineStyle:"solid"}, actions:{ref:"rectangle"}},
{fillStyle:{color:"232,242,255"},lineStyle:{lineStyle:"solid"}, actions:[
{action:"move", x:0, y:0},
{action:"line", x:"w", y:0},
{action:"line", x:"w", y:40},
{action:"line", x:0, y:40},
{action:"close"}
]}
], drawIcon:function (b, c) {
b += 8;
var a = -4;
return[
{fillStyle:{type:"none"}, actions:[
{action:"move", x:a, y:0},
{action:"line", x:b, y:0},
{action:"line", x:b, y:c},
{action:"line", x:a, y:c},
{action:"close"}
]},
{actions:[
{action:"move", x:a, y:0},
{action:"line", x:b, y:0},
{action:"line", x:b, y:4},
{action:"line", x:a, y:4},
{action:"close"}
]},
{actions:[
{action:"move", x:(a + b) / 2, y:4},
{action:"line", x:(a + b) / 2, y:c}
]}
]
}});
Schema.addShape({name:"verticalLane", title:"泳道(垂直)", text:"泳道(垂直)", category:"lane", attribute:{container:true, rotatable:false, linkable:false}, props:{w:250, h:500}, textBlock:{x:10, y:0, w:"w-20", h:30},textBlockFinal:{x:"w/2-60", y:"h", w:"120", h:"30"},
anchors:[], resizeDir:["l", "b", "r"], path:[
{fillStyle:{type:"none"}, lineStyle:{lineStyle:"solid"}, actions:{ref:"rectangle"}},
{lineStyle:{lineStyle:"solid"}, actions:[
{action:"move", x:0, y:0},
{action:"line", x:"w", y:0},
{action:"line", x:"w", y:30},
{action:"line", x:0, y:30},
{action:"close"}
]}
], drawIcon:function (a, b) {
return[
{fillStyle:{type:"none"}, lineStyle:{lineStyle:"solid"}, actions:[
{action:"move", x:0, y:0},
{action:"line", x:a, y:0},
{action:"line", x:a, y:b},
{action:"line", x:0, y:b},
{action:"close"}
]},
{lineStyle:{lineStyle:"solid"}, actions:[
{action:"move", x:0, y:0},
{action:"line", x:a, y:0},
{action:"line", x:a, y:4},
{action:"line", x:0, y:4},
{action:"close"}
]}
]
}, onCreated:function () {
Utils.unselect();
var d = getPool(this, "verticalPool");
if (d == null) {
d = Model.create("verticalPool", this.props.x, this.props.y - 40);
d.children = [this.id];
Model.add(d)
} else {
if (!d.children) {
d.children = []
}
var f = [d];
var a = d.props.x;
var tmpW = this.props.w;
var c = 0;
var b = 0;
var tmp = -1;
//根据props.y来排序
function compare(prop) {
return function(a, b) {
var aa = Model.getShapeById(a);
var bb = Model.getShapeById(b);
var value1 = aa.props[prop];
var value2 = bb.props[prop];
return value1 - value2;
}
}
d.children.sort(compare('x'));
for (var c = 0; c < d.children.length; c++) {
var e = d.children[c];
var g = Model.getShapeById(e);
if (g.name == "verticalLane") {
if (Utils.rectCross(g.props, this.props)) {
tmp = c + 1;
break;
}
}
}
for (var m = 0; tmp > 0 && m < tmp; m++) {
var e = d.children[m];
var g = Model.getShapeById(e);
if (g.name == "verticalLane") {
a += g.props.w;
c++
} else {
if (g.name == "verticalSeparatorBar") {
a += g.props.w;
b++
}
}
}
/*for (var d = 0; d < e.children.length; d++) {
var f = e.children[d];
var h = Model.getShapeById(f);
if (h.name == "verticalLane") {
a += h.props.w;
c++
} else {
if (h.name == "verticalSeparatorBar") {
a += h.props.w;
b++
}
}
}*/
this.props.x = a;
this.props.y = d.props.y + 40;
this.props.h = d.props.h - 40;
if (c == 0) {
if (b == 0) {
this.props.w = d.props.w
} else {
this.props.w = d.props.w - 20
}
}
Designer.painter.renderShape(this);
f.push(this);
var rightLanes = [];
for (var c = tmp; tmp > 0 && c < d.children.length; c++) {
var e = d.children[c];
var g = Model.getShapeById(e);
rightLanes.push(g);
}
var containedShapes = Utils.getContainedShapes(rightLanes);
var containedLinkers = Utils.getOutlinkers(containedShapes);
containedShapes = containedShapes.concat(containedLinkers);
for (var i = 0; i < containedShapes.length; i++) {
var shape = Model.getShapeById(containedShapes[i].id);
Designer.painter.renderShape(shape);
f.push(shape);
}
Designer.op.moveShape(containedShapes, {
x : tmpW * Designer.config.scale,
y : 0
});
Designer.op.hideTip();
for (var c = tmp; tmp > 0 && c < d.children.length; c++) {
var e = d.children[c];
var g = Model.getShapeById(e);
g.props.x = g.props.x + tmpW;
Designer.painter.renderShape(g);
f.push(g);
}
if (d.children.length > 0) {
d.props.w = d.props.w + tmpW;
}
//e.props.w = this.props.x + this.props.w - e.props.x;
for (var c = 0; c < d.children.length; c++) {
var e = d.children[c];
var h = Model.getShapeById(e);
if (h.name == "horizontalSeparator") {
h.props.w = d.props.w;
Designer.painter.renderShape(h);
f.push(h)
}
}
d.children.push(this.id);
Model.updateMulti(f);
}
Designer.painter.renderShape(d);
this.parent = d.id
}});
Schema.addShape({name:"horizontalPool", title:"泳池(水平)",text:"泳池(水平)", category:"lane", attribute:{rotatable:false, linkable:false, container:true}, children:[], props:{w:640, h:200}, fontStyle:{size:16, orientation:"horizontal"}, textBlock:{x:0, y:10, w:40, h:"h-20"},textBlockFinal:{x:"w/2-60", y:"h", w:"120", h:"30"},
anchors:[], resizeDir:["t", "r", "b"], path:[
{fillStyle:{type:"none"}, lineStyle:{lineStyle:"solid"}, actions:{ref:"rectangle"}},
{fillStyle:{color:"232,242,255"},lineStyle:{lineStyle:"solid"}, actions:[
{action:"move", x:0, y:0},
{action:"line", x:40, y:0},
{action:"line", x:40, y:"h"},
{action:"line", x:0, y:"h"},
{action:"close"}
]}
], drawIcon:function (a, b) {
b += 8;
var c = -4;
return[
{fillStyle:{type:"none"}, actions:[
{action:"move", x:0, y:c},
{action:"line", x:a, y:c},
{action:"line", x:a, y:b},
{action:"line", x:0, y:b},
{action:"close"}
]},
{actions:[
{action:"move", x:0, y:c},
{action:"line", x:4, y:c},
{action:"line", x:4, y:b},
{action:"line", x:0, y:b},
{action:"close"}
]},
{actions:[
{action:"move", x:4, y:(c + b) / 2},
{action:"line", x:a, y:(c + b) / 2}
]}
]
}});
Schema.addShape({name:"horizontalLane", title:"泳道(水平)",text:"泳道(水平)", category:"lane", attribute:{container:true, rotatable:false, linkable:false}, props:{w:600, h:200}, fontStyle:{orientation:"horizontal"}, textBlock:{x:0, y:10, w:30, h:"h-20"},textBlockFinal:{x:"w/2-60", y:"h", w:"120", h:"30"},
anchors:[], resizeDir:["t", "b", "r"], path:[
{fillStyle:{type:"none"}, lineStyle:{lineStyle:"solid"}, actions:{ref:"rectangle"}},
{lineStyle:{lineStyle:"solid"}, actions:[
{action:"move", x:0, y:0},
{action:"line", x:30, y:0},
{action:"line", x:30, y:"h"},
{action:"line", x:0, y:"h"},
{action:"close"}
]}
], drawIcon:function (a, b) {
b += 3;
return[
{fillStyle:{type:"none"}, lineStyle:{lineStyle:"solid"}, actions:[
{action:"move", x:0, y:-1},
{action:"line", x:a, y:-1},
{action:"line", x:a, y:b},
{action:"line", x:0, y:b},
{action:"close"}
]},
{lineStyle:{lineStyle:"solid"}, actions:[
{action:"move", x:0, y:-1},
{action:"line", x:4, y:-1},
{action:"line", x:4, y:b},
{action:"line", x:0, y:b},
{action:"close"}
]}
]
}, onCreated:function () {
Utils.unselect();
var d = getPool(this, "horizontalPool");
if (d == null) {
d = Model.create("horizontalPool", this.props.x - 40, this.props.y);
d.children = [this.id];
Model.add(d)
} else {
if (!d.children) {
d.children = []
}
var f = [d];
var h = d.props.y;
var tmpH = this.props.h;
var b = 0;
var a = 0;
var tmp = -1;
//根据props.y来排序
function compare(prop) {
return function(a, b) {
var aa = Model.getShapeById(a);
var bb = Model.getShapeById(b);
var value1 = aa.props[prop];
var value2 = bb.props[prop];
return value1 - value2;
}
}
d.children.sort(compare('y'));
for (var c = 0; c < d.children.length; c++) {
var e = d.children[c];
var g = Model.getShapeById(e);
if (g.name == "horizontalLane") {
if (Utils.rectCross(g.props, this.props)) {
tmp = c + 1;
break;
}
}
}
for (var c = 0; tmp > 0 && c < tmp; c++) {
var e = d.children[c];
var g = Model.getShapeById(e);
if (g.name == "horizontalLane") {
h += g.props.h;
b++
} else {
if (g.name == "horizontalSeparatorBar") {
h += g.props.h;
a++
}
}
}
this.props.y = h;
this.props.x = d.props.x + 40;
this.props.w = d.props.w - 40;
if (b == 0) {
if (a == 0) {
this.props.h = d.props.h
} else {
this.props.h = d.props.h - 20
}
}
Designer.painter.renderShape(this);
f.push(this);
var bottomLanes = [];
for (var c = tmp; tmp > 0 && c < d.children.length; c++) {
var e = d.children[c];
var g = Model.getShapeById(e);
bottomLanes.push(g);
}
var containedShapes = Utils.getContainedShapes(bottomLanes);
var containedLinkers = Utils.getOutlinkers(containedShapes);
containedShapes = containedShapes.concat(containedLinkers);
for (var i = 0; i < containedShapes.length; i++) {
var shape = Model.getShapeById(containedShapes[i].id);
Designer.painter.renderShape(shape);
f.push(shape);
}
Designer.op.moveShape(containedShapes, {
x : 0,
y : tmpH * Designer.config.scale
});
Designer.op.hideTip();
for (var c = tmp; tmp > 0 && c < d.children.length; c++) {
var e = d.children[c];
var g = Model.getShapeById(e);
g.props.y = g.props.y + tmpH;
Designer.painter.renderShape(g);
f.push(g);
}
if (d.children.length > 0) {
d.props.h = d.props.h + tmpH;
}
//d.props.h = this.props.y + this.props.h - d.props.y;
for (var c = 0; c < d.children.length; c++) {
var e = d.children[c];
var g = Model.getShapeById(e);
if (g.name == "verticalSeparator") {
g.props.h = d.props.h;
Designer.painter.renderShape(g);
f.push(g)
}
}
d.children.push(this.id);
Model.updateMulti(f);
}
Designer.painter.renderShape(d);
this.parent = d.id
}});
Schema.addShape({name:"verticalSeparatorBar", title:"水平分隔条", category:"lane", attribute:{rotatable:false, linkable:false, visible:false}, props:{w:20, h:500}, anchors:[], resizeDir:[], textBlock:{}, textBlockFinal:{x:"w/2-60", y:"h", w:"120", h:"30"},path:[
{lineStyle:{lineStyle:"solid"}, actions:{ref:"rectangle"}}
]});
Schema.addShape({name:"horizontalSeparator", title:"分隔符(水平)", category:"lane", attribute:{rotatable:false, linkable:false}, props:{w:300, h:0}, fontStyle:{orientation:"horizontal", textAlign:"left"}, textBlock:{x:0, y:5, w:20, h:"h-10"},textBlockFinal:{x:"w/2-60", y:"h", w:"120", h:"30"}, text:"阶段",
anchors:[], resizeDir:["b"], path:[
{fillStyle:{type:"none"}, lineStyle:{lineStyle:"solid"}, actions:[
{action:"move", x:0, y:"h"},
{action:"line", x:"w", y:"h"}
]},
{actions:[
{action:"move", x:0, y:0},
{action:"line", x:20, y:0},
{action:"line", x:20, y:"h"},
{action:"line", x:0, y:"h"},
{action:"close"}
]}
], drawIcon:function (a, b) {
return[
{fillStyle:{type:"none"}, lineStyle:{lineStyle:"solid"}, actions:[
{action:"move", x:0, y:0},
{action:"line", x:a, y:0}
]}
]
}, onCreated:function () {
var g = getPool(this, "verticalPool");
if (g == null) {
return false
}
var j = getChild(g, "verticalSeparatorBar");
if (j == null) {
j = Model.create("verticalSeparatorBar", g.props.x - 20, g.props.y + 40);
j.props.h = g.props.h - 40;
j.parent = g.id;
Model.add(j);
Designer.painter.renderShape(j);
g.props.x -= j.props.w;
g.props.w += j.props.w;
g.children.push(j.id);
Designer.painter.renderShape(g)
}
var a = this.props.y + this.props.h;
var h = g.props.y + 40;
var f = null;
for (var e = 0; e < g.children.length; e++) {
var d = g.children[e];
var b = Model.getShapeById(d);
if (b.name != "horizontalSeparator") {
continue
}
var c = b.props.y + b.props.h;
if (c <= a) {
h += b.props.h
} else {
if (f == null || b.props.y < f.props.y) {
f = b
}
}
}
this.props.x = g.props.x;
this.props.w = g.props.w;
this.props.h = a - h;
this.props.y = h;
g.children.push(this.id);
this.parent = g.id;
if (a > g.props.y + g.props.h) {
this.props.h = g.props.y + g.props.h - h
}
Designer.painter.renderShape(this);
if (f != null) {
f.props.y += this.props.h;
f.props.h -= this.props.h;
Designer.painter.renderShape(f);
Model.updateMulti([g, f])
} else {
Model.update(g)
}
this.props.zindex = Model.maxZIndex + 1
}});
Schema.addShape({name:"horizontalSeparatorBar", title:"垂直分隔条", category:"lane", attribute:{rotatable:false, linkable:false, visible:false}, props:{w:600, h:20}, anchors:[], resizeDir:[], textBlock:{},textBlockFinal:{x:"w/2-60", y:"h", w:"120", h:"30"}, path:[
{lineStyle:{lineStyle:"solid"}, actions:{ref:"rectangle"}}
]});
Schema.addShape({name:"verticalSeparator", title:"分隔符(垂直)", category:"lane", attribute:{rotatable:false, linkable:false}, props:{w:0, h:300}, fontStyle:{textAlign:"right"}, textBlock:{x:5, y:0, w:"w-10", h:20},textBlockFinal:{x:"w/2-60", y:"h", w:"120", h:"30"}, text:"阶段", anchors:[], resizeDir:["r"], path:[
{fillStyle:{type:"none"}, lineStyle:{lineStyle:"solid"}, actions:[
{action:"move", x:"w", y:0},
{action:"line", x:"w", y:"h"}
]},
{actions:[
{action:"move", x:0, y:0},
{action:"line", x:"w", y:0},
{action:"line", x:"w", y:20},
{action:"line", x:0, y:20},
{action:"close"}
]}
], drawIcon:function (a, b) {
return[
{fillStyle:{type:"none"}, lineStyle:{lineStyle:"solid"}, actions:[
{action:"move", x:0, y:0},
{action:"line", x:0, y:b}
]}
]
}, onCreated:function () {
var e = getPool(this, "horizontalPool");
if (e == null) {
return false
}
var g = getChild(e, "horizontalSeparatorBar");
if (g == null) {
g = Model.create("horizontalSeparatorBar", e.props.x + 40, e.props.y - 20);
e.props.y -= g.props.h;
e.props.h += g.props.h;
e.children.push(g.id);
Designer.painter.renderShape(e);
g.props.w = e.props.w - 40;
g.parent = e.id;
Model.add(g);
Designer.painter.renderShape(g)
}
var j = this.props.x + this.props.w;
var h = e.props.x + 40;
var d = null;
for (var c = 0; c < e.children.length; c++) {
var b = e.children[c];
var a = Model.getShapeById(b);
if (a.name != "verticalSeparator") {
continue
}
var f = a.props.x + a.props.w;
if (f <= j) {
h += a.props.w
} else {
if (d == null || a.props.x < d.props.x) {
d = a
}
}
}
this.props.x = h;
this.props.w = j - h;
this.props.y = e.props.y;
this.props.h = e.props.h;
if (j > e.props.x + e.props.w) {
this.props.w = e.props.x + e.props.w - h
}
Designer.painter.renderShape(this);
e.children.push(this.id);
this.parent = e.id;
if (d != null) {
d.props.x += this.props.w;
d.props.w -= this.props.w;
Designer.painter.renderShape(d);
Model.updateMulti([e, d])
} else {
Model.update(e)
}
this.props.zindex = Model.maxZIndex + 1
}});