From 08722952ccee5b69ca2ee82dc8d56f75d9b7440f Mon Sep 17 00:00:00 2001 From: "lixuefei.1313" Date: Tue, 11 Feb 2025 16:06:54 +0800 Subject: [PATCH 1/3] feat: support stackInverse for waterfall chart --- packages/vchart/__tests__/runtime/browser/index.page.ts | 2 +- packages/vchart/src/data/transforms/waterfall.ts | 3 ++- .../src/plugin/components/axis-sync/tick-align-transform.ts | 2 +- packages/vchart/src/series/waterfall/waterfall.ts | 6 ++++-- 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/packages/vchart/__tests__/runtime/browser/index.page.ts b/packages/vchart/__tests__/runtime/browser/index.page.ts index 80d2b97e47..fa711464f1 100644 --- a/packages/vchart/__tests__/runtime/browser/index.page.ts +++ b/packages/vchart/__tests__/runtime/browser/index.page.ts @@ -3,5 +3,5 @@ */ // import VChart from '../../../src'; -import './index.page.local'; +import './index.page.local.ts'; // window['VChart'] = VChart; diff --git a/packages/vchart/src/data/transforms/waterfall.ts b/packages/vchart/src/data/transforms/waterfall.ts index 735bda2346..29c0586b29 100644 --- a/packages/vchart/src/data/transforms/waterfall.ts +++ b/packages/vchart/src/data/transforms/waterfall.ts @@ -34,6 +34,7 @@ export interface IWaterfallOpt { increase: string; decrease: string; }; + stackInverse: boolean; groupData: () => DataView; } @@ -77,7 +78,7 @@ export const waterfall = (lastData: Array, op: IWaterfallOpt) => { negative: temp.end }; - const indexData = dimensionData[key]; + const indexData = op.stackInverse === true ? dimensionData[key].reverse() : dimensionData[key]; indexData?.forEach((d, i) => { if (i === indexData.length - 1) { d[STACK_FIELD_TOTAL_TOP] = true; diff --git a/packages/vchart/src/plugin/components/axis-sync/tick-align-transform.ts b/packages/vchart/src/plugin/components/axis-sync/tick-align-transform.ts index c5ae5847da..ec94a757f6 100644 --- a/packages/vchart/src/plugin/components/axis-sync/tick-align-transform.ts +++ b/packages/vchart/src/plugin/components/axis-sync/tick-align-transform.ts @@ -55,7 +55,7 @@ export const tickAlign = (data: Array, op: ITickAlignOpt) => { // make the tickData of the current axis consistent with the tickData of the target axis const newTicks: number[] = targetData.map((d: { value: number }) => { const percent = (d.value - targetDomain[0]) / targetRange; - return currentRange * percent + currentDomain[0]; + return Math.round(currentRange * percent + currentDomain[0]); }); return convertDomainToTickData(newTicks); }; diff --git a/packages/vchart/src/series/waterfall/waterfall.ts b/packages/vchart/src/series/waterfall/waterfall.ts index 40518e77a7..862b8c8898 100644 --- a/packages/vchart/src/series/waterfall/waterfall.ts +++ b/packages/vchart/src/series/waterfall/waterfall.ts @@ -100,7 +100,8 @@ export class WaterfallSeries this.getGroups().groupData + groupData: () => this.getGroups().groupData, + stackInverse: this.getRegion().getStackInverse() } }, false From a369845f8f77f4678627cc8076220f21e290d0de Mon Sep 17 00:00:00 2001 From: "lixuefei.1313" Date: Tue, 11 Feb 2025 16:07:15 +0800 Subject: [PATCH 2/3] docs: update changlog of rush --- ...t-stack-inverse-in-waterfall_2025-02-11-08-07.json | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 common/changes/@visactor/vchart/feat-support-stack-inverse-in-waterfall_2025-02-11-08-07.json diff --git a/common/changes/@visactor/vchart/feat-support-stack-inverse-in-waterfall_2025-02-11-08-07.json b/common/changes/@visactor/vchart/feat-support-stack-inverse-in-waterfall_2025-02-11-08-07.json new file mode 100644 index 0000000000..e8b8498160 --- /dev/null +++ b/common/changes/@visactor/vchart/feat-support-stack-inverse-in-waterfall_2025-02-11-08-07.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "feat: support stackInverse for waterfall chart\n\n", + "type": "none", + "packageName": "@visactor/vchart" + } + ], + "packageName": "@visactor/vchart", + "email": "lixuef1313@163.com" +} \ No newline at end of file From d66ca30a99be7638715b22f398c68700b86a8cb2 Mon Sep 17 00:00:00 2001 From: "lixuefei.1313" Date: Tue, 11 Feb 2025 17:14:45 +0800 Subject: [PATCH 3/3] feat: reverse change of tick align --- .../src/plugin/components/axis-sync/tick-align-transform.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/vchart/src/plugin/components/axis-sync/tick-align-transform.ts b/packages/vchart/src/plugin/components/axis-sync/tick-align-transform.ts index ec94a757f6..c5ae5847da 100644 --- a/packages/vchart/src/plugin/components/axis-sync/tick-align-transform.ts +++ b/packages/vchart/src/plugin/components/axis-sync/tick-align-transform.ts @@ -55,7 +55,7 @@ export const tickAlign = (data: Array, op: ITickAlignOpt) => { // make the tickData of the current axis consistent with the tickData of the target axis const newTicks: number[] = targetData.map((d: { value: number }) => { const percent = (d.value - targetDomain[0]) / targetRange; - return Math.round(currentRange * percent + currentDomain[0]); + return currentRange * percent + currentDomain[0]; }); return convertDomainToTickData(newTicks); };