diff --git a/packages/g6/__tests__/bugs/element-orth-router.spec.ts b/packages/g6/__tests__/bugs/element-orth-router.spec.ts new file mode 100644 index 00000000000..1fa941891ea --- /dev/null +++ b/packages/g6/__tests__/bugs/element-orth-router.spec.ts @@ -0,0 +1,32 @@ +import { createGraph } from '@@/utils'; + +describe('element orth router', () => { + it('test polyline orth', async () => { + const graph = createGraph({ + animation: true, + data: { + nodes: [ + { + id: 'node-1', + style: { x: 310, y: 280, size: 80 }, + }, + { + id: 'node-2', + style: { x: 300, y: 175 }, + }, + ], + edges: [{ id: 'edge-1', source: 'node-1', target: 'node-2' }], + }, + edge: { + type: 'polyline', + style: { + router: true, + }, + }, + }); + + await graph.draw(); + + await expect(graph).toMatchSnapshot(__filename); + }); +}); diff --git a/packages/g6/__tests__/snapshots/__tests__/bugs/element-orth-router/default.svg b/packages/g6/__tests__/snapshots/__tests__/bugs/element-orth-router/default.svg new file mode 100644 index 00000000000..476a4bbbf4b --- /dev/null +++ b/packages/g6/__tests__/snapshots/__tests__/bugs/element-orth-router/default.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/g6/src/utils/router/orth.ts b/packages/g6/src/utils/router/orth.ts index 1e9f6a6ba50..a1848d6a300 100644 --- a/packages/g6/src/utils/router/orth.ts +++ b/packages/g6/src/utils/router/orth.ts @@ -243,8 +243,8 @@ export function nodeToNode(from: Point, to: Point, fromBBox: AABB, toBBox: AABB) const p2 = toVector3(route.points[0]); if (isPointInBBox(p2, fromBBox)) { - const fromBorder = moveTo(from, p2, getBBoxSize(fromBBox, getDirection(from, p2)) / 2); - const toBorder = moveTo(to, p1, getBBoxSize(toBBox, getDirection(to, p1)) / 2); + const fromBorder = moveTo(from, p1, getBBoxSize(fromBBox, getDirection(from, p1)) / 2); + const toBorder = moveTo(to, p2, getBBoxSize(toBBox, getDirection(to, p2)) / 2); const midPoint: Point = [(fromBorder[0] + toBorder[0]) / 2, (fromBorder[1] + toBorder[1]) / 2]; const startRoute = nodeToPoint(from, midPoint, fromBBox);