fix(web): iteration/loop toFront
This commit is contained in:
@@ -61,6 +61,20 @@ const CaseList: FC<CaseListProps> = ({
|
|||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
const form = Form.useFormInstance();
|
const form = Form.useFormInstance();
|
||||||
|
|
||||||
|
const bringLoopChildrenToFront = (cell: any) => {
|
||||||
|
const type = cell?.getData()?.type;
|
||||||
|
if ((type !== 'loop' && type !== 'iteration') || !graphRef?.current) return;
|
||||||
|
const cycleId = cell.getData().id;
|
||||||
|
graphRef.current.getEdges().forEach((edge: any) => {
|
||||||
|
const src = graphRef.current?.getCellById(edge.getSourceCellId());
|
||||||
|
const tgt = graphRef.current?.getCellById(edge.getTargetCellId());
|
||||||
|
if (src?.getData()?.cycle === cycleId || tgt?.getData()?.cycle === cycleId) edge.toFront();
|
||||||
|
});
|
||||||
|
graphRef.current.getNodes().forEach((n: any) => {
|
||||||
|
if (n.getData()?.cycle === cycleId) n.toFront();
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
// Recalculate node height and port Y positions without rebuilding ports
|
// Recalculate node height and port Y positions without rebuilding ports
|
||||||
const updateNodeLayout = (cases: any[]) => {
|
const updateNodeLayout = (cases: any[]) => {
|
||||||
if (!selectedNode || !graphRef?.current) return;
|
if (!selectedNode || !graphRef?.current) return;
|
||||||
@@ -141,6 +155,8 @@ const CaseList: FC<CaseListProps> = ({
|
|||||||
}
|
}
|
||||||
sourceCell.toFront()
|
sourceCell.toFront()
|
||||||
selectedNode.toFront()
|
selectedNode.toFront()
|
||||||
|
bringLoopChildrenToFront(sourceCell)
|
||||||
|
bringLoopChildrenToFront(selectedNode)
|
||||||
graphRef.current?.removeCell(edge);
|
graphRef.current?.removeCell(edge);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -186,7 +202,9 @@ const CaseList: FC<CaseListProps> = ({
|
|||||||
...edgeAttrs
|
...edgeAttrs
|
||||||
});
|
});
|
||||||
selectedNode.toFront()
|
selectedNode.toFront()
|
||||||
|
bringLoopChildrenToFront(selectedNode)
|
||||||
targetCell.toFront()
|
targetCell.toFront()
|
||||||
|
bringLoopChildrenToFront(targetCell)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -25,6 +25,20 @@ const CategoryList: FC<CategoryListProps> = ({ parentName, selectedNode, graphRe
|
|||||||
const form = Form.useFormInstance();
|
const form = Form.useFormInstance();
|
||||||
const formValues = Form.useWatch([parentName], form);
|
const formValues = Form.useWatch([parentName], form);
|
||||||
|
|
||||||
|
const bringLoopChildrenToFront = (cell: any) => {
|
||||||
|
const type = cell?.getData()?.type;
|
||||||
|
if ((type !== 'loop' && type !== 'iteration') || !graphRef?.current) return;
|
||||||
|
const cycleId = cell.getData().id;
|
||||||
|
graphRef.current.getEdges().forEach((edge: any) => {
|
||||||
|
const src = graphRef.current?.getCellById(edge.getSourceCellId());
|
||||||
|
const tgt = graphRef.current?.getCellById(edge.getTargetCellId());
|
||||||
|
if (src?.getData()?.cycle === cycleId || tgt?.getData()?.cycle === cycleId) edge.toFront();
|
||||||
|
});
|
||||||
|
graphRef.current.getNodes().forEach((n: any) => {
|
||||||
|
if (n.getData()?.cycle === cycleId) n.toFront();
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
// Update node ports based on category count changes (add/remove categories)
|
// Update node ports based on category count changes (add/remove categories)
|
||||||
const updateNodePorts = (caseCount: number, removedCaseIndex?: number) => {
|
const updateNodePorts = (caseCount: number, removedCaseIndex?: number) => {
|
||||||
if (!selectedNode || !graphRef?.current) return;
|
if (!selectedNode || !graphRef?.current) return;
|
||||||
@@ -89,7 +103,9 @@ const CategoryList: FC<CategoryListProps> = ({ parentName, selectedNode, graphRe
|
|||||||
...edgeAttrs
|
...edgeAttrs
|
||||||
});
|
});
|
||||||
sourceCell.toFront()
|
sourceCell.toFront()
|
||||||
|
bringLoopChildrenToFront(sourceCell)
|
||||||
selectedNode.toFront()
|
selectedNode.toFront()
|
||||||
|
bringLoopChildrenToFront(selectedNode)
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -122,7 +138,9 @@ const CategoryList: FC<CategoryListProps> = ({ parentName, selectedNode, graphRe
|
|||||||
...edgeAttrs
|
...edgeAttrs
|
||||||
});
|
});
|
||||||
selectedNode.toFront()
|
selectedNode.toFront()
|
||||||
|
bringLoopChildrenToFront(selectedNode)
|
||||||
targetCell.toFront()
|
targetCell.toFront()
|
||||||
|
bringLoopChildrenToFront(targetCell)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user