From 77f8ca451b0155f9a6562ca3a6815ffead56a65f Mon Sep 17 00:00:00 2001 From: kkxxkk2019 Date: Thu, 21 May 2026 17:56:00 +0800 Subject: [PATCH 1/2] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=20roseSeries=20?= =?UTF-8?q?=E5=9C=A8=E9=9D=9E=E5=A0=86=E5=8F=A0=E5=9C=BA=E6=99=AF=E9=87=8C?= =?UTF-8?q?=20innerRadius=20=E4=B8=8D=E7=94=9F=E6=95=88=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../vchart/__tests__/unit/series/rose.test.ts | 55 +++++++++++++++++++ packages/vchart/src/series/rose/rose.ts | 8 +-- 2 files changed, 58 insertions(+), 5 deletions(-) create mode 100644 packages/vchart/__tests__/unit/series/rose.test.ts diff --git a/packages/vchart/__tests__/unit/series/rose.test.ts b/packages/vchart/__tests__/unit/series/rose.test.ts new file mode 100644 index 0000000000..bf83a9dc23 --- /dev/null +++ b/packages/vchart/__tests__/unit/series/rose.test.ts @@ -0,0 +1,55 @@ +import { DataSet, DataView } from '@visactor/vdataset'; +import { get } from '@visactor/vutils'; +import type { ISeriesOption } from '../../../src/series/interface'; +import { initChartDataSet, seriesOption } from '../../util/context'; +import { RoseSeries, type IRoseSeriesSpec } from '../../../src'; + +const dataSet = new DataSet(); +initChartDataSet(dataSet); + +let ctx: ISeriesOption; + +class TestRoseSeries extends RoseSeries { + protected _computeLayoutRadius() { + return 100; + } +} + +describe('[Domain-Series-Rose] Rose Series', () => { + beforeEach(() => { + ctx = seriesOption({ dataSet }); + }); + + test('non-stacked rose respects innerRadius', () => { + const dataView = new DataView(dataSet); + dataView.parse( + [ + { type: 'A', group: 'g1', value: 10 }, + { type: 'B', group: 'g2', value: 20 } + ], + { + type: 'array' + } + ); + + const rose = new TestRoseSeries( + { + type: 'rose', + data: dataView, + categoryField: ['type', 'group'], + valueField: 'value', + seriesField: 'group', + stack: false, + innerRadius: 0.6 + }, + ctx + ); + rose.created(); + rose.init({}); + + const roseMark = rose.getMarks().find(mark => mark.name === 'rose'); + const innerRadiusStyle = get(roseMark?.stateStyle.normal, 'innerRadius.style'); + + expect(innerRadiusStyle({ value: 10 })).toBe(60); + }); +}); diff --git a/packages/vchart/src/series/rose/rose.ts b/packages/vchart/src/series/rose/rose.ts index 985db90721..5424c6713b 100644 --- a/packages/vchart/src/series/rose/rose.ts +++ b/packages/vchart/src/series/rose/rose.ts @@ -103,15 +103,13 @@ export class RoseSeries extends Ros ), innerRadius: (datum: Datum) => { if (!this.getStack()) { - return 0; + return this._computeLayoutRadius() * this._innerRadius; } const stackStart = valueInScaleRange( this.radiusAxisHelper.dataToPosition([datum[this._innerRadiusField[0]]]), this.radiusAxisHelper.getScale(0) ); - return stackStart <= Number.MIN_VALUE - ? this._computeLayoutRadius() * (this._spec.innerRadius ?? 0) - : stackStart; + return stackStart <= Number.MIN_VALUE ? this._computeLayoutRadius() * this._innerRadius : stackStart; } }); } @@ -141,7 +139,7 @@ export class RoseSeries extends Ros if (this._roseMark) { const animationParams: IRoseAnimationParams = { - innerRadius: () => this._computeLayoutRadius() * (this._spec.innerRadius ?? 0) + innerRadius: () => this._computeLayoutRadius() * this._innerRadius }; this._roseMark.setAnimationConfig( animationConfig( From 311b4b0face6fbd86b3dad66696a290815df4384 Mon Sep 17 00:00:00 2001 From: kkxxkk2019 Date: Thu, 21 May 2026 17:56:27 +0800 Subject: [PATCH 2/2] docs: update changlog of rush --- .../codex-rose-inner-radius_2026-05-21-09-56.json | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 common/changes/@visactor/vchart/codex-rose-inner-radius_2026-05-21-09-56.json diff --git a/common/changes/@visactor/vchart/codex-rose-inner-radius_2026-05-21-09-56.json b/common/changes/@visactor/vchart/codex-rose-inner-radius_2026-05-21-09-56.json new file mode 100644 index 0000000000..5f3f52d08a --- /dev/null +++ b/common/changes/@visactor/vchart/codex-rose-inner-radius_2026-05-21-09-56.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "fix: 修复 roseSeries 在非堆叠场景里 innerRadius 不生效的问题\n\n", + "type": "none", + "packageName": "@visactor/vchart" + } + ], + "packageName": "@visactor/vchart", + "email": "just_star@qq.com" +} \ No newline at end of file