端到端 新拖拽到画布中的元素 增加元素类型属性 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(){
|
public void buildAdjMatrix(){
|
||||||
for (JSONObject node : nodeList) {
|
for (JSONObject node : nodeList) {
|
||||||
String currentNodeId = node.getString("id");
|
String currentNodeId = node.getString("id");
|
||||||
JSONObject extendAttr = node.getJSONObject(SubProcessConst.EXTEND_ATTR);
|
if (node.containsKey(SubProcessConst.EXTEND_ATTR)){ // 新拖拽到画布的节点 如果还未连线或者子流程节点还未指定关联文件信息 就不存在扩展属性 extendAttr
|
||||||
// 当前节点的前置节点
|
JSONObject extendAttr = node.getJSONObject(SubProcessConst.EXTEND_ATTR);
|
||||||
JSONArray leadNodeArr = extendAttr.getJSONArray("leadNodeArr");
|
// 当前节点的前置节点
|
||||||
if (leadNodeArr.size() > 0){
|
JSONArray leadNodeArr = extendAttr.getJSONArray("leadNodeArr");
|
||||||
for (Object o : leadNodeArr) {
|
if (leadNodeArr.size() > 0){
|
||||||
String leadNodeId = (String) o;
|
for (Object o : leadNodeArr) {
|
||||||
addEdge(nodeIds.indexOf(leadNodeId), nodeIds.indexOf(currentNodeId));
|
String leadNodeId = (String) o;
|
||||||
|
addEdge(nodeIds.indexOf(leadNodeId), nodeIds.indexOf(currentNodeId));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
// 当前节点的后置节点
|
||||||
// 当前节点的后置节点
|
JSONArray rearNodeArr = extendAttr.getJSONArray("rearNodeArr");
|
||||||
JSONArray rearNodeArr = extendAttr.getJSONArray("rearNodeArr");
|
if (rearNodeArr.size() > 0){
|
||||||
if (rearNodeArr.size() > 0){
|
for (Object o : rearNodeArr) {
|
||||||
for (Object o : rearNodeArr) {
|
String rearNodeId = (String) o;
|
||||||
String rearNodeId = (String) o;
|
addEdge(nodeIds.indexOf(currentNodeId), nodeIds.indexOf(rearNodeId));
|
||||||
addEdge(nodeIds.indexOf(currentNodeId), nodeIds.indexOf(rearNodeId));
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -388,21 +388,23 @@ class NodeExpandAdjMatrix extends AbstractAdjMatrix {
|
|||||||
public void buildAdjMatrix(){
|
public void buildAdjMatrix(){
|
||||||
for (JSONObject node : nodeList) {
|
for (JSONObject node : nodeList) {
|
||||||
String currentNodeId = node.getString("id");
|
String currentNodeId = node.getString("id");
|
||||||
JSONObject extendAttr = node.getJSONObject(SubProcessConst.EXTEND_ATTR);
|
if (node.containsKey(SubProcessConst.EXTEND_ATTR)){ // 新拖拽到画布的节点 如果还未连线或者子流程节点还未指定关联文件信息 就不存在扩展属性 extendAttr
|
||||||
// 当前节点的前置节点
|
JSONObject extendAttr = node.getJSONObject(SubProcessConst.EXTEND_ATTR);
|
||||||
JSONArray leadNodeArr = extendAttr.getJSONArray("leadNodeArr");
|
// 当前节点的前置节点
|
||||||
if (leadNodeArr.size() > 0){
|
JSONArray leadNodeArr = extendAttr.getJSONArray("leadNodeArr");
|
||||||
for (Object o : leadNodeArr) {
|
if (leadNodeArr.size() > 0){
|
||||||
String leadNodeId = (String) o;
|
for (Object o : leadNodeArr) {
|
||||||
addEdge(nodeIds.indexOf(leadNodeId), nodeIds.indexOf(currentNodeId));
|
String leadNodeId = (String) o;
|
||||||
|
addEdge(nodeIds.indexOf(leadNodeId), nodeIds.indexOf(currentNodeId));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
// 当前节点的后置节点
|
||||||
// 当前节点的后置节点
|
JSONArray rearNodeArr = extendAttr.getJSONArray("rearNodeArr");
|
||||||
JSONArray rearNodeArr = extendAttr.getJSONArray("rearNodeArr");
|
if (rearNodeArr.size() > 0){
|
||||||
if (rearNodeArr.size() > 0){
|
for (Object o : rearNodeArr) {
|
||||||
for (Object o : rearNodeArr) {
|
String rearNodeId = (String) o;
|
||||||
String rearNodeId = (String) o;
|
addEdge(nodeIds.indexOf(currentNodeId), nodeIds.indexOf(rearNodeId));
|
||||||
addEdge(nodeIds.indexOf(currentNodeId), nodeIds.indexOf(rearNodeId));
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -371,6 +371,15 @@ var Designer = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
b.attr("class", "shape_box");
|
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);
|
Designer.events.push("created", g);
|
||||||
Model.add(g);
|
Model.add(g);
|
||||||
var S = Utils.getShapeContext(g.id);
|
var S = Utils.getShapeContext(g.id);
|
||||||
@ -458,10 +467,6 @@ var Designer = {
|
|||||||
Model.update(M)
|
Model.update(M)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// 如果当前拖拽到画布的图形是子流程 则渲染节点展开图标
|
|
||||||
if (g.name == 'subProcess') {
|
|
||||||
window.subProcess.shapeOpenIconRender(g);
|
|
||||||
}
|
|
||||||
Utils.unselect();
|
Utils.unselect();
|
||||||
Utils.selectShape(g.id);
|
Utils.selectShape(g.id);
|
||||||
MessageSource.commit();
|
MessageSource.commit();
|
||||||
|
|||||||
@ -340,5 +340,25 @@ class SubProcess {
|
|||||||
}
|
}
|
||||||
return false
|
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