From e73b00f97657aaba0f337f7a2d166976e755ff52 Mon Sep 17 00:00:00 2001 From: "xuying.xu" Date: Sat, 7 Oct 2023 10:19:38 +0800 Subject: [PATCH] fix: pie click event callback --- .../src/components/pieLabel/pieLabeView.tsx | 18 ++--- .../src/components/pieLabel/withPieLabel.tsx | 3 +- .../components/pieLabel/pieLabel.test.tsx | 72 ++++++++++++++++++- 3 files changed, 80 insertions(+), 13 deletions(-) diff --git a/packages/f2/src/components/pieLabel/pieLabeView.tsx b/packages/f2/src/components/pieLabel/pieLabeView.tsx index 752138da2..8609bc441 100644 --- a/packages/f2/src/components/pieLabel/pieLabeView.tsx +++ b/packages/f2/src/components/pieLabel/pieLabeView.tsx @@ -1,24 +1,20 @@ import { jsx } from '@antv/f-engine'; export default (props) => { - const { - lineStyle, - anchorStyle, - labels, - label1OffsetY, - label2OffsetY, - triggerRef, - onClick, - } = props; + const { lineStyle, anchorStyle, labels, label1OffsetY, label2OffsetY, onClick } = props; return ( - + {labels.map((label) => { const { origin, anchor, side, color, label1, label2, points } = label; const end = points[points.length - 1]; return ( - + { + onClick(e.target?.config?.data); + }} + > {/* 锚点 */} { IProps & ChartChildProps > { labels: []; + triggerRef: Ref; constructor(props) { super(props); } diff --git a/packages/f2/test/components/pieLabel/pieLabel.test.tsx b/packages/f2/test/components/pieLabel/pieLabel.test.tsx index d15c37bc5..a25b66c85 100644 --- a/packages/f2/test/components/pieLabel/pieLabel.test.tsx +++ b/packages/f2/test/components/pieLabel/pieLabel.test.tsx @@ -1,7 +1,7 @@ import { jsx } from '../../../src'; import { Canvas, Chart } from '../../../src'; import { Interval, PieLabel } from '../../../src/components'; -import { createContext, delay } from '../../util'; +import { createContext, delay, gestureSimulator } from '../../util'; describe('PieLabel', () => { it('默认显示', async () => { @@ -64,6 +64,76 @@ describe('PieLabel', () => { expect(context).toMatchImageSnapshot(); }); + it('事件回调', async () => { + const onClickCallback = jest.fn(); + const context = createContext('默认显示', { width: '300px', height: '150px' }); + const data = [ + { + amount: 20, + memo: 'Study', + const: 'const', + }, + { + amount: 10, + memo: 'Eat', + const: 'const', + }, + { + amount: 20, + memo: 'Sports', + const: 'const', + }, + { + amount: 10, + memo: 'Other', + const: 'const', + }, + ]; + const { props } = ( + + + + { + return { + text: data.memo, + }; + }} + label2={(data) => { + return { + fill: '#000000', + text: '$' + data.amount.toFixed(2), + }; + }} + onClick={(data) => { + onClickCallback(data); + }} + /> + + + ); + + const canvas = new Canvas(props); + await canvas.render(); + + await delay(300); + await gestureSimulator(context.canvas, 'click', { x: 266, y: 97 }); + + expect(onClickCallback.mock.calls[0][0]).toStrictEqual({ + amount: 10, + memo: 'Eat', + const: 'const', + }); + }); + it('左边超过最大显示个数,第四象限显示在第一象限', async () => { const context = createContext('左边超过最大显示个数,第四象限显示在第一象限', { width: '300px',