-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Description
发生了什么?
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