端到端 新拖拽到画布中的元素 增加元素类型属性 elementType
This commit is contained in:
parent
28ffdedb99
commit
391ec0256d
Binary file not shown.
@ -262,21 +262,23 @@ class NodeCloseAdjMatrix extends AbstractAdjMatrix {
|
||||
public void buildAdjMatrix(){
|
||||
for (JSONObject node : nodeList) {
|
||||
String currentNodeId = node.getString("id");
|
||||
JSONObject extendAttr = node.getJSONObject(SubProcessConst.EXTEND_ATTR);
|
||||
// 当前节点的前置节点
|
||||
JSONArray leadNodeArr = extendAttr.getJSONArray("leadNodeArr");
|
||||
if (leadNodeArr.size() > 0){
|
||||
for (Object o : leadNodeArr) {
|
||||
String leadNodeId = (String) o;
|
||||
addEdge(nodeIds.indexOf(leadNodeId), nodeIds.indexOf(currentNodeId));
|
||||
if (node.containsKey(SubProcessConst.EXTEND_ATTR)){ // 新拖拽到画布的节点 如果还未连线或者子流程节点还未指定关联文件信息 就不存在扩展属性 extendAttr
|
||||
JSONObject extendAttr = node.getJSONObject(SubProcessConst.EXTEND_ATTR);
|
||||
// 当前节点的前置节点
|
||||
JSONArray leadNodeArr = extendAttr.getJSONArray("leadNodeArr");
|
||||
if (leadNodeArr.size() > 0){
|
||||
for (Object o : leadNodeArr) {
|
||||
String leadNodeId = (String) o;
|
||||
addEdge(nodeIds.indexOf(leadNodeId), nodeIds.indexOf(currentNodeId));
|
||||
}
|
||||
}
|
||||
}
|
||||
// 当前节点的后置节点
|
||||
JSONArray rearNodeArr = extendAttr.getJSONArray("rearNodeArr");
|
||||
if (rearNodeArr.size() > 0){
|
||||
for (Object o : rearNodeArr) {
|
||||
String rearNodeId = (String) o;
|
||||
addEdge(nodeIds.indexOf(currentNodeId), nodeIds.indexOf(rearNodeId));
|
||||
// 当前节点的后置节点
|
||||
JSONArray rearNodeArr = extendAttr.getJSONArray("rearNodeArr");
|
||||
if (rearNodeArr.size() > 0){
|
||||
for (Object o : rearNodeArr) {
|
||||
String rearNodeId = (String) o;
|
||||
addEdge(nodeIds.indexOf(currentNodeId), nodeIds.indexOf(rearNodeId));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -388,21 +388,23 @@ class NodeExpandAdjMatrix extends AbstractAdjMatrix {
|
||||
public void buildAdjMatrix(){
|
||||
for (JSONObject node : nodeList) {
|
||||
String currentNodeId = node.getString("id");
|
||||
JSONObject extendAttr = node.getJSONObject(SubProcessConst.EXTEND_ATTR);
|
||||
// 当前节点的前置节点
|
||||
JSONArray leadNodeArr = extendAttr.getJSONArray("leadNodeArr");
|
||||
if (leadNodeArr.size() > 0){
|
||||
for (Object o : leadNodeArr) {
|
||||
String leadNodeId = (String) o;
|
||||
addEdge(nodeIds.indexOf(leadNodeId), nodeIds.indexOf(currentNodeId));
|
||||
if (node.containsKey(SubProcessConst.EXTEND_ATTR)){ // 新拖拽到画布的节点 如果还未连线或者子流程节点还未指定关联文件信息 就不存在扩展属性 extendAttr
|
||||
JSONObject extendAttr = node.getJSONObject(SubProcessConst.EXTEND_ATTR);
|
||||
// 当前节点的前置节点
|
||||
JSONArray leadNodeArr = extendAttr.getJSONArray("leadNodeArr");
|
||||
if (leadNodeArr.size() > 0){
|
||||
for (Object o : leadNodeArr) {
|
||||
String leadNodeId = (String) o;
|
||||
addEdge(nodeIds.indexOf(leadNodeId), nodeIds.indexOf(currentNodeId));
|
||||
}
|
||||
}
|
||||
}
|
||||
// 当前节点的后置节点
|
||||
JSONArray rearNodeArr = extendAttr.getJSONArray("rearNodeArr");
|
||||
if (rearNodeArr.size() > 0){
|
||||
for (Object o : rearNodeArr) {
|
||||
String rearNodeId = (String) o;
|
||||
addEdge(nodeIds.indexOf(currentNodeId), nodeIds.indexOf(rearNodeId));
|
||||
// 当前节点的后置节点
|
||||
JSONArray rearNodeArr = extendAttr.getJSONArray("rearNodeArr");
|
||||
if (rearNodeArr.size() > 0){
|
||||
for (Object o : rearNodeArr) {
|
||||
String rearNodeId = (String) o;
|
||||
addEdge(nodeIds.indexOf(currentNodeId), nodeIds.indexOf(rearNodeId));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -371,6 +371,15 @@ var Designer = {
|
||||
}
|
||||
}
|
||||
b.attr("class", "shape_box");
|
||||
if (methodId == "process.subprocess") {
|
||||
// 如果当前拖拽到画布的图形是子流程 则渲染节点展开图标
|
||||
if (g.name == 'subProcess'){
|
||||
window.subProcess.shapeOpenIconRender(g);
|
||||
}
|
||||
// 判断当前图形的元素类型 ElementType.INNER_NODE ElementType.OUTER_NODE
|
||||
let elementType = window.subProcess.calculateShapeElementType(g);
|
||||
g.elementType = elementType;
|
||||
}
|
||||
Designer.events.push("created", g);
|
||||
Model.add(g);
|
||||
var S = Utils.getShapeContext(g.id);
|
||||
@ -458,10 +467,6 @@ var Designer = {
|
||||
Model.update(M)
|
||||
}
|
||||
}
|
||||
// 如果当前拖拽到画布的图形是子流程 则渲染节点展开图标
|
||||
if (g.name == 'subProcess') {
|
||||
window.subProcess.shapeOpenIconRender(g);
|
||||
}
|
||||
Utils.unselect();
|
||||
Utils.selectShape(g.id);
|
||||
MessageSource.commit();
|
||||
|
||||
@ -340,5 +340,25 @@ class SubProcess {
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
// 根据当前元素的坐标设置元素类型
|
||||
calculateShapeElementType(shape){
|
||||
let elementType = "OUTER_NODE"; // 默认指定外部节点
|
||||
let props = shape.props;
|
||||
let elements = Model.define.elements;
|
||||
for (let key in elements) {
|
||||
let ele = elements[key];
|
||||
if (ele.elementType == "SCOPE_NODE"){ // 查找范围框元素
|
||||
let scopeX = ele.props.x;
|
||||
let scopeY = ele.props.y;
|
||||
let scopeW = ele.props.w;
|
||||
let scopeH = ele.props.h;
|
||||
if (scopeX < props.x && props.x < scopeX + scopeW && scopeY < props.y && props.y < scopeY + scopeH){
|
||||
elementType = "INNER_NODE";
|
||||
}
|
||||
}
|
||||
}
|
||||
return elementType;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user