From fc0473efa01d039c2a5d636f87596ed0c51203b4 Mon Sep 17 00:00:00 2001 From: xile611 Date: Fri, 27 Jun 2025 14:05:32 +0800 Subject: [PATCH 1/2] fix: tickData of axis should update when `sampling` is changed, fix #4059 --- .../src/component/axis/cartesian/band-axis.ts | 21 +++++++++++++++- .../component/axis/mixin/band-axis-mixin.ts | 25 +++++++++++++++++++ 2 files changed, 45 insertions(+), 1 deletion(-) diff --git a/packages/vchart/src/component/axis/cartesian/band-axis.ts b/packages/vchart/src/component/axis/cartesian/band-axis.ts index df4cdafc15..ff98866be8 100644 --- a/packages/vchart/src/component/axis/cartesian/band-axis.ts +++ b/packages/vchart/src/component/axis/cartesian/band-axis.ts @@ -2,7 +2,7 @@ import { BandScale, scaleWholeRangeSize } from '@visactor/vscale'; import { CartesianAxis } from './axis'; import type { ICartesianBandAxisSpec } from './interface'; import { ComponentTypeEnum } from '../../interface'; -import { isNil, isString, isValid, mixin } from '@visactor/vutils'; +import { isEqual, isNil, isString, isValid, mixin } from '@visactor/vutils'; import { BandAxisMixin } from '../mixin/band-axis-mixin'; import type { StringOrNumber } from '../../../typings'; import { Factory } from '../../../core/factory'; @@ -155,6 +155,25 @@ export class CartesianBandAxis void; _getNormalizedValue: (values: any[], length: number) => number; _onTickDataChange: (compilableData: CompilableData) => void; + registerTicksTransform: () => string; } export class BandAxisMixin { @@ -73,6 +74,30 @@ export class BandAxisMixin { }; } } + + protected _updateData() { + const tickTransformType = this.registerTicksTransform(); + + if (this._spec.showAllGroupLayers && this._scales.length > 1) { + const layers = this._spec.layers ?? []; + Object.keys(this._tickDataMap).forEach(layer => { + const layerConfig = layers[this._scales.length - 1 - +layer] || {}; + const tickData = this._tickDataMap[layer]; + const tickTransform = tickData?.getDataView().transformsArr.find((t: any) => t.type === tickTransformType); + + tickTransform && + (tickTransform.options = { + ...this._tickTransformOption(), + ...layerConfig + }); + }); + } else { + const tickTransform = this._tickData?.[0]?.getDataView().transformsArr.find(t => t.type === tickTransformType); + + tickTransform && (tickTransform.options = this._tickTransformOption()); + } + } + protected _rawDomainIndex: { [key: string | number | symbol]: number }[] = []; dataToPosition(values: any[], cfg: IAxisLocationCfg = {}): number { From 90c62210eb7e2011aaaf55425eb8e6ad242f7df7 Mon Sep 17 00:00:00 2001 From: xile611 Date: Fri, 27 Jun 2025 14:07:07 +0800 Subject: [PATCH 2/2] docs: update changlog of rush --- ...x-axis-update-about-sampling_2025-06-27-06-07.json | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 common/changes/@visactor/vchart/fix-axis-update-about-sampling_2025-06-27-06-07.json diff --git a/common/changes/@visactor/vchart/fix-axis-update-about-sampling_2025-06-27-06-07.json b/common/changes/@visactor/vchart/fix-axis-update-about-sampling_2025-06-27-06-07.json new file mode 100644 index 0000000000..727c01eb77 --- /dev/null +++ b/common/changes/@visactor/vchart/fix-axis-update-about-sampling_2025-06-27-06-07.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "fix: tickData of axis should update when `sampling` is changed, fix #4059\n\n", + "type": "none", + "packageName": "@visactor/vchart" + } + ], + "packageName": "@visactor/vchart", + "email": "dingling112@gmail.com" +} \ No newline at end of file