From 868ed6d3444def069b53d0ab6dbdc6d661e79abb Mon Sep 17 00:00:00 2001 From: zengyue Date: Tue, 7 May 2024 16:43:19 +0800 Subject: [PATCH] =?UTF-8?q?feat(guide):=20=E5=A2=9E=E5=8A=A0=20PolylineGui?= =?UTF-8?q?de?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/f2/src/components/guide/index.tsx | 3 + .../src/components/guide/views/Polyline.tsx | 36 +++++++++++ packages/f2/src/components/index.ts | 1 + packages/f2/src/theme.ts | 9 +++ ...test-tsx-polyline-guide-default-1-snap.png | Bin 0 -> 9856 bytes ...-test-tsx-polyline-guide-offset-1-snap.png | Bin 0 -> 10119 bytes .../test/components/guide/polyline.test.tsx | 61 ++++++++++++++++++ 7 files changed, 110 insertions(+) create mode 100644 packages/f2/src/components/guide/views/Polyline.tsx create mode 100644 packages/f2/test/components/guide/__image_snapshots__/polyline-test-tsx-polyline-guide-default-1-snap.png create mode 100644 packages/f2/test/components/guide/__image_snapshots__/polyline-test-tsx-polyline-guide-offset-1-snap.png create mode 100644 packages/f2/test/components/guide/polyline.test.tsx diff --git a/packages/f2/src/components/guide/index.tsx b/packages/f2/src/components/guide/index.tsx index e1ef50cf4..ea02f3a73 100644 --- a/packages/f2/src/components/guide/index.tsx +++ b/packages/f2/src/components/guide/index.tsx @@ -7,6 +7,7 @@ import RectGuideView from './views/Rect'; import ImageGuideView from './views/Image'; import TagGuideView from './views/Tag'; import LottieGuideView from './views/Lottie'; +import PolylineGuideView from './views/Polyline'; const DefaultGuideView = () => null; const TextGuide = withGuide(TextGuideView); @@ -17,6 +18,7 @@ const RectGuide = withGuide(RectGuideView); const ImageGuide = withGuide(ImageGuideView); const TagGuide = withGuide(TagGuideView); const LottieGuide = withGuide(LottieGuideView); +const PolylineGuide = withGuide(PolylineGuideView); export { GuideProps }; @@ -32,4 +34,5 @@ export { ImageGuide, TagGuide, LottieGuide, + PolylineGuide, }; diff --git a/packages/f2/src/components/guide/views/Polyline.tsx b/packages/f2/src/components/guide/views/Polyline.tsx new file mode 100644 index 000000000..d89145b81 --- /dev/null +++ b/packages/f2/src/components/guide/views/Polyline.tsx @@ -0,0 +1,36 @@ +import { jsx, PolygonStyleProps } from '@antv/f-engine'; +import { GuideProps } from '../withGuide'; +import { deepMix } from '@antv/util'; + +export interface LineGuideProps extends GuideProps { + points?: { x: number; y: number }[] | null; + style?: Partial | ((record?) => Partial); + offsetX?: number | string | (number | string)[]; + offsetY?: number | string | (number | string)[]; + theme?: any; +} + +export default (props: LineGuideProps, context) => { + const { theme = {} } = props; + const { points, style, offsetX, offsetY, animation } = deepMix({ ...theme.polyline }, props); + + const checkNaN = points.some((d) => isNaN(d.x) || isNaN(d.y)); + if (checkNaN) return; + + const offsetXNum = context.px2hd(offsetX); + const offsetYNum = context.px2hd(offsetY); + + return ( + + { + return [point.x + offsetXNum, point.y + offsetYNum]; + }), + ...style, + }} + animation={animation} + /> + + ); +}; diff --git a/packages/f2/src/components/index.ts b/packages/f2/src/components/index.ts index 176705b17..0743c02bb 100644 --- a/packages/f2/src/components/index.ts +++ b/packages/f2/src/components/index.ts @@ -17,6 +17,7 @@ export { ImageGuide, TagGuide, LottieGuide, + PolylineGuide, } from './guide'; export { default as Tooltip, TooltipProps, withTooltip, TooltipView } from './tooltip'; export { default as Treemap, TreemapProps, withTreemap, TreemapView } from './treemap'; diff --git a/packages/f2/src/theme.ts b/packages/f2/src/theme.ts index 8ca1e0bae..f4a70e844 100644 --- a/packages/f2/src/theme.ts +++ b/packages/f2/src/theme.ts @@ -82,6 +82,15 @@ const guide = { stroke: '#1890ff', }, }, + polyline: { + style: { + lineWidth: '4px', + lineJoin: 'round', + lineCap: 'round', + }, + offsetX: 0, + offsetY: 0, + }, }; const chart = { diff --git a/packages/f2/test/components/guide/__image_snapshots__/polyline-test-tsx-polyline-guide-default-1-snap.png b/packages/f2/test/components/guide/__image_snapshots__/polyline-test-tsx-polyline-guide-default-1-snap.png new file mode 100644 index 0000000000000000000000000000000000000000..9db91685ca1996cc77d183c2ff6f5615fa97b2e7 GIT binary patch literal 9856 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 literal 0 HcmV?d00001 diff --git a/packages/f2/test/components/guide/polyline.test.tsx b/packages/f2/test/components/guide/polyline.test.tsx new file mode 100644 index 000000000..14f59b2a6 --- /dev/null +++ b/packages/f2/test/components/guide/polyline.test.tsx @@ -0,0 +1,61 @@ +import { jsx, Canvas, Chart } from '../../../src'; +import { Line, PolylineGuide } from '../../../src/components'; +import { createContext, delay } from '../../util'; + +const data = [ + { genre: 'Sports', sold: 275, type: 'a' }, + { genre: 'Strategy', sold: 115, type: 'a' }, + { genre: 'Action', sold: 120, type: 'a' }, + { genre: 'Shooter', sold: 350, type: 'a' }, + { genre: 'Other', sold: 150, type: 'a' }, +]; + +describe('PolylineGuide ', () => { + it('default', async () => { + const context = createContext(); + const { props } = ( + + + + + + + ); + + const chart = new Canvas(props); + await chart.render(); + + await delay(300); + expect(context).toMatchImageSnapshot(); + }); + + it('offset', async () => { + const context = createContext(); + const { props } = ( + + + + + + + ); + + const chart = new Canvas(props); + await chart.render(); + + await delay(300); + expect(context).toMatchImageSnapshot(); + }); +});