diff --git a/packages/mermaid-layout-elk/src/render.ts b/packages/mermaid-layout-elk/src/render.ts index 9e7fc3941..61221298c 100644 --- a/packages/mermaid-layout-elk/src/render.ts +++ b/packages/mermaid-layout-elk/src/render.ts @@ -468,8 +468,8 @@ export const render = async (data4Layout, svg, element, algorithm) => { 'elk.layered.mergeEdges': data4Layout.config.mergeEdges, 'elk.direction': 'DOWN', 'spacing.baseValue': 30, - 'spacing.nodeNode': 40, - 'spacing.nodeNodeBetweenLayers': 45, + // 'spacing.nodeNode': 40, + // 'spacing.nodeNodeBetweenLayers': 45, // 'spacing.edgeNode': 40, // 'spacing.edgeNodeBetweenLayers': 30, // 'spacing.edgeEdge': 30, diff --git a/packages/mermaid/src/rendering-util/rendering-elements/edges.js b/packages/mermaid/src/rendering-util/rendering-elements/edges.js index 90ba9ff71..1406c2370 100644 --- a/packages/mermaid/src/rendering-util/rendering-elements/edges.js +++ b/packages/mermaid/src/rendering-util/rendering-elements/edges.js @@ -436,34 +436,38 @@ const fixCorners = function (lineData) { // Find a new point on the line point 5 points back and push it to the new array const newPrevPoint = findAdjacentPoint(prevPoint, cornerPoint, 5); const newNextPoint = findAdjacentPoint(nextPoint, cornerPoint, 5); - newLineData.push(newPrevPoint); const xDiff = newNextPoint.x - newPrevPoint.x; const yDiff = newNextPoint.y - newPrevPoint.y; + newLineData.push(newPrevPoint); const a = Math.sqrt(2) * 2; let newCornerPoint = { x: cornerPoint.x, y: cornerPoint.y }; - if (cornerPoint.x === newPrevPoint.x) { - // if (yDiff > 0) { - newCornerPoint = { - x: xDiff < 0 ? newPrevPoint.x - 5 + a : newPrevPoint.x + 5 - a, - y: yDiff < 0 ? newPrevPoint.y - a : newPrevPoint.y + a, - }; - // } else { - // newCornerPoint = { x: newPrevPoint.x - a, y: newPrevPoint.y + a }; - // } + if (Math.abs(nextPoint.x - prevPoint.x) > 10 && Math.abs(nextPoint.y - prevPoint.y) >= 10) { + console.log( + 'Corner point fixing', + Math.abs(nextPoint.x - prevPoint.x), + Math.abs(nextPoint.y - prevPoint.y) + ); + const r = 3; + if (cornerPoint.x === newPrevPoint.x) { + newCornerPoint = { + x: xDiff < 0 ? newPrevPoint.x - r + a : newPrevPoint.x + r - a, + y: yDiff < 0 ? newPrevPoint.y - a : newPrevPoint.y + a, + }; + } else { + newCornerPoint = { + x: xDiff < 0 ? newPrevPoint.x - a : newPrevPoint.x + a, + y: yDiff < 0 ? newPrevPoint.y - r + a : newPrevPoint.y + r - a, + }; + } } else { - // if (yDiff > 0) { - // newCornerPoint = { x: newPrevPoint.x - 5 + a, y: newPrevPoint.y + a }; - // } else { - newCornerPoint = { - x: xDiff < 0 ? newPrevPoint.x - a : newPrevPoint.x + a, - y: yDiff < 0 ? newPrevPoint.y - 5 + a : newPrevPoint.y + 5 - a, - }; - // } + console.log( + 'Corner point skipping fixing', + Math.abs(nextPoint.x - prevPoint.x), + Math.abs(nextPoint.y - prevPoint.y) + ); } - - // newLineData.push(cornerPoint); newLineData.push(newCornerPoint, newNextPoint); } else { newLineData.push(lineData[i]);