Skip to content

[Bug Report]: getAreaElement函数方法,判断区域内是否有节点时,偶尔出现会出现计算错误 #2275

@HLzhongxiao

Description

@HLzhongxiao

发生了什么?

getAreaElement函数方法,判断区域内是否有节点时,偶尔出现会出现计算错误:
const NEXT_X_DISTANCE = 200;
const NEXT_Y_DISTANCE = 100;
addNode(node: any, y?: number | undefined) {
const isDeep = y !== undefined;
if (y === undefined) {
y = node.y;
}
const nodeModel = this.lf.getNodeModelById(node.sourceId);
const leftTopX = node.x + NEXT_X_DISTANCE;
const leftTopY = y - 100 - 20;
const rightBottomX = node.x + 200 + NEXT_X_DISTANCE;
const rightBottomY = y + 100 + 20;
const existElements = this.lf.getAreaElement(
[leftTopX, leftTopY],
[rightBottomX, rightBottomY],
false,
false,
false
);
if (existElements.length) {
y = y + NEXT_Y_DISTANCE;
this.addNode(node, y);
return;
}
let newNodeX = node.x + 200;
if (
(nodeModel.type === BpmnNodeType.UserTask ||
nodeModel.type === BpmnNodeType.IntermediateCatchEvent) &&
(node.type === BpmnNodeType.UserTask ||
node.type === BpmnNodeType.IntermediateCatchEvent)
) {
newNodeX = node.x + 250;
}
const newNode = this.lf.addNode({
type: node.type,
x: newNodeX,
y,
properties: wfConfig.getNodeProperties(node.type),
text: node.label,
});
let startPoint;
let endPoint;
if (isDeep) {
let startX = node.x;
let startY = node.y + nodeModel.height / 2;
let endX = newNode.x - newNode.width / 2;
let endY = newNode.y;

  startPoint = {
    x: startX,
    y: startY,
  };
  endPoint = {
    x: endX,
    y: endY,
  };
}
this.lf.addEdge({
  sourceNodeId: node.sourceId,
  targetNodeId: newNode.id,
  startPoint,
  endPoint,
});

}

logicflow/core版本

1.2.27

logicflow/extension版本

1.2.27

logicflow/engine版本

No response

浏览器&环境

Chrome

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions