From cfd25ed33ecb07e3fd5f05f4db1903e6d5846151 Mon Sep 17 00:00:00 2001 From: shubham-mermaid Date: Tue, 10 Jun 2025 10:07:36 +0530 Subject: [PATCH] Updated calculateIterations for ipsepcola layout --- .../layout-algorithms/ipsecCola/index.ts | 32 +++++++++++-------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/packages/mermaid/src/rendering-util/layout-algorithms/ipsecCola/index.ts b/packages/mermaid/src/rendering-util/layout-algorithms/ipsecCola/index.ts index 5d8e3a3d1..81649cddb 100644 --- a/packages/mermaid/src/rendering-util/layout-algorithms/ipsecCola/index.ts +++ b/packages/mermaid/src/rendering-util/layout-algorithms/ipsecCola/index.ts @@ -33,19 +33,7 @@ export async function render(data4Layout: LayoutData, svg: SVG): Promise { // assign initial coordinates assignInitialPositions(100, 130, data4Layout); - const nodesCount = data4Layout.nodes.length; - const edgesCount = data4Layout.edges.length; - - const groupNodes = data4Layout.nodes.filter((node) => { - if (node.isGroup) { - return node; - } - }); - - let iteration = nodesCount + edgesCount; - if (groupNodes.length > 0) { - iteration = iteration * 5; - } + const iteration = calculateIterations(data4Layout); applyCola( { @@ -81,3 +69,21 @@ function sortGroupNodesToEnd(nodes: Node[]): Node[] { return [...nonGroupNodes, ...groupNodes]; } + +function calculateIterations(data4Layout: LayoutData) { + const nodesCount = data4Layout.nodes.length; + const edgesCount = data4Layout.edges.length; + + const groupNodes = data4Layout.nodes.filter((node) => { + if (node.isGroup) { + return node; + } + }); + + let iteration = nodesCount + edgesCount; + if (groupNodes.length > 0) { + iteration = iteration * 5; + } + + return iteration; +}