From e7fb595bb57e9706904a3e120117e3f189e105bc Mon Sep 17 00:00:00 2001 From: Aaron Date: Thu, 30 May 2024 18:56:39 +0800 Subject: [PATCH] fix: fix issue that arrow cannot update (#5790) --- .../bugs/element-edge-update-arrow.spec.ts | 38 +++++++++++++++++++ .../element-edge-update-arrow/default.svg | 37 ++++++++++++++++++ .../update-arrow.svg | 37 ++++++++++++++++++ packages/g6/src/elements/edges/base-edge.ts | 2 +- 4 files changed, 113 insertions(+), 1 deletion(-) create mode 100644 packages/g6/__tests__/bugs/element-edge-update-arrow.spec.ts create mode 100644 packages/g6/__tests__/snapshots/__tests__/bugs/element-edge-update-arrow/default.svg create mode 100644 packages/g6/__tests__/snapshots/__tests__/bugs/element-edge-update-arrow/update-arrow.svg diff --git a/packages/g6/__tests__/bugs/element-edge-update-arrow.spec.ts b/packages/g6/__tests__/bugs/element-edge-update-arrow.spec.ts new file mode 100644 index 00000000000..bc3389ffa06 --- /dev/null +++ b/packages/g6/__tests__/bugs/element-edge-update-arrow.spec.ts @@ -0,0 +1,38 @@ +import { createGraph } from '../utils'; + +describe('bug: element-edge-update-arrow', () => { + it('should update edge arrow', async () => { + const graph = createGraph({ + animation: false, + data: { + nodes: [ + { id: 'node-0', style: { x: 100, y: 100 } }, + { id: 'node-1', style: { x: 200, y: 100 } }, + ], + edges: [ + { + source: 'node-0', + target: 'node-1', + style: { startArrow: true, startArrowFill: 'red', endArrow: true, endArrowFill: 'green' }, + }, + ], + }, + }); + + await graph.render(); + + await expect(graph).toMatchSnapshot(__filename); + + graph.updateEdgeData([ + { + source: 'node-0', + target: 'node-1', + style: { startArrowFill: 'purple', startArrowStroke: 'blue', endArrowFill: 'pink', endArrowStroke: 'yellow' }, + }, + ]); + + await graph.render(); + + await expect(graph).toMatchSnapshot(__filename, 'update-arrow'); + }); +}); diff --git a/packages/g6/__tests__/snapshots/__tests__/bugs/element-edge-update-arrow/default.svg b/packages/g6/__tests__/snapshots/__tests__/bugs/element-edge-update-arrow/default.svg new file mode 100644 index 00000000000..b02855b16bb --- /dev/null +++ b/packages/g6/__tests__/snapshots/__tests__/bugs/element-edge-update-arrow/default.svg @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/g6/__tests__/snapshots/__tests__/bugs/element-edge-update-arrow/update-arrow.svg b/packages/g6/__tests__/snapshots/__tests__/bugs/element-edge-update-arrow/update-arrow.svg new file mode 100644 index 00000000000..ada7824d1e0 --- /dev/null +++ b/packages/g6/__tests__/snapshots/__tests__/bugs/element-edge-update-arrow/update-arrow.svg @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/g6/src/elements/edges/base-edge.ts b/packages/g6/src/elements/edges/base-edge.ts index e16db954817..3a5469bf3c7 100644 --- a/packages/g6/src/elements/edges/base-edge.ts +++ b/packages/g6/src/elements/edges/base-edge.ts @@ -303,7 +303,7 @@ export abstract class BaseEdge extends BaseElement { ? (['markerStart', 'markerStartOffset', 'startArrowOffset'] as const) : (['markerEnd', 'markerEndOffset', 'endArrowOffset'] as const); - const arrow = keyShape.style[marker]; + const arrow = keyShape.parsedStyle[marker]; // update if (arrow) arrow.attr(arrowStyle); // create