From b0bcba4245b6ee0fe5a478a9e6b42e283b21919d Mon Sep 17 00:00:00 2001 From: "lixuefei.1313" Date: Mon, 16 Jun 2025 11:41:03 +0800 Subject: [PATCH 1/2] fix: fix bug of crosshair default select --- packages/vchart/src/chart/base/base-chart.ts | 5 +++++ packages/vchart/src/chart/interface/chart.ts | 2 ++ packages/vchart/src/compile/compiler.ts | 5 ++++- packages/vchart/src/component/axis/base-axis.ts | 4 ++++ packages/vchart/src/component/axis/interface/common.ts | 2 ++ packages/vchart/src/component/crosshair/base.ts | 2 +- packages/vchart/src/component/crosshair/utils/cartesian.ts | 5 +++-- packages/vchart/src/model/base-model.ts | 4 ++++ packages/vchart/src/model/interface.ts | 1 + 9 files changed, 26 insertions(+), 4 deletions(-) diff --git a/packages/vchart/src/chart/base/base-chart.ts b/packages/vchart/src/chart/base/base-chart.ts index a1faa24670..64f9672f7d 100644 --- a/packages/vchart/src/chart/base/base-chart.ts +++ b/packages/vchart/src/chart/base/base-chart.ts @@ -539,6 +539,11 @@ export class BaseChart extends CompilableBase implements I elements.forEach(element => element.onEvaluateEnd(option)); } + onBeforeRender() { + const elements = [...this._components, ...this._regions, ...this._series]; + elements.forEach(element => element.onBeforeRender()); + } + getLayoutElements(): ILayoutItem[] { return this.getAllModels() .map(i => i.layout) diff --git a/packages/vchart/src/chart/interface/chart.ts b/packages/vchart/src/chart/interface/chart.ts index fe8fd06c29..01d96d08a1 100644 --- a/packages/vchart/src/chart/interface/chart.ts +++ b/packages/vchart/src/chart/interface/chart.ts @@ -100,6 +100,8 @@ export interface IChart extends ICompilable { onEvaluateEnd: (ctx: IChartEvaluateOption) => void; onResize: (width: number, height: number, reRender: boolean) => void; onLayout: () => void; + onBeforeRender: () => void; + /** * 图表更新的时候按需调用 * @since 1.11.0 diff --git a/packages/vchart/src/compile/compiler.ts b/packages/vchart/src/compile/compiler.ts index 85ab9dd2c1..dbc054dccf 100644 --- a/packages/vchart/src/compile/compiler.ts +++ b/packages/vchart/src/compile/compiler.ts @@ -130,7 +130,10 @@ export class Compiler implements ICompiler { dpr, viewBox: this._option.viewBox, canvasControled: this._option.canvasControled, - beforeRender: this._option.beforeRender, + beforeRender: (stage: IStage) => { + this._compileChart?.onBeforeRender(); + this._option.beforeRender?.(stage); + }, afterRender: this._option.afterRender, disableDirtyBounds: true, autoRender: true, diff --git a/packages/vchart/src/component/axis/base-axis.ts b/packages/vchart/src/component/axis/base-axis.ts index b4c9d1c886..a9e7426f2d 100644 --- a/packages/vchart/src/component/axis/base-axis.ts +++ b/packages/vchart/src/component/axis/base-axis.ts @@ -120,6 +120,10 @@ export abstract class AxisComponent ICartesianAxisSpec['orient'] | IPolarOrientType; getInverse: () => boolean; getCoordinateType: () => CoordinateType; + getAxisMark: () => IComponentMark; visible: boolean; // 标记轴的方向,左到右,右到左,上到下,下到上 directionStr?: 'l2r' | 'r2l' | 't2b' | 'b2t'; diff --git a/packages/vchart/src/component/crosshair/base.ts b/packages/vchart/src/component/crosshair/base.ts index d1399f8c2d..d44ee6d06c 100644 --- a/packages/vchart/src/component/crosshair/base.ts +++ b/packages/vchart/src/component/crosshair/base.ts @@ -266,7 +266,7 @@ export abstract class BaseCrossHair extends CompilableBase imp // do nothing } + onBeforeRender() { + // do nothing + } + onDataUpdate() { // do nothing } diff --git a/packages/vchart/src/model/interface.ts b/packages/vchart/src/model/interface.ts index c32dab5333..c779a6d11d 100644 --- a/packages/vchart/src/model/interface.ts +++ b/packages/vchart/src/model/interface.ts @@ -116,6 +116,7 @@ export interface IModel extends ICompilable { onEvaluateEnd: (ctx: IModelEvaluateOption) => void; onDataUpdate: () => void; + onBeforeRender: () => void; updateSpec: (spec: any, totalSpec?: any) => IUpdateSpecResult; getSpec?: () => any; From 06c31dc41893d2b8ba33559d89e1bb392537fe0d Mon Sep 17 00:00:00 2001 From: "lixuefei.1313" Date: Wed, 18 Jun 2025 10:10:51 +0800 Subject: [PATCH 2/2] chore: chang get label api to getVRenderComponents --- packages/vchart/src/component/axis/base-axis.ts | 3 --- packages/vchart/src/component/axis/interface/common.ts | 1 - packages/vchart/src/component/crosshair/utils/cartesian.ts | 3 +-- 3 files changed, 1 insertion(+), 6 deletions(-) diff --git a/packages/vchart/src/component/axis/base-axis.ts b/packages/vchart/src/component/axis/base-axis.ts index a9e7426f2d..2a73f8ee02 100644 --- a/packages/vchart/src/component/axis/base-axis.ts +++ b/packages/vchart/src/component/axis/base-axis.ts @@ -120,9 +120,6 @@ export abstract class AxisComponent ICartesianAxisSpec['orient'] | IPolarOrientType; getInverse: () => boolean; getCoordinateType: () => CoordinateType; - getAxisMark: () => IComponentMark; visible: boolean; // 标记轴的方向,左到右,右到左,上到下,下到上 directionStr?: 'l2r' | 'r2l' | 't2b' | 'b2t'; diff --git a/packages/vchart/src/component/crosshair/utils/cartesian.ts b/packages/vchart/src/component/crosshair/utils/cartesian.ts index 9d35794279..49ff3dfa10 100644 --- a/packages/vchart/src/component/crosshair/utils/cartesian.ts +++ b/packages/vchart/src/component/crosshair/utils/cartesian.ts @@ -43,8 +43,7 @@ export const layoutByValue = ( layoutStartPoint[coordKey as 'x' | 'y']; axis = item.axis; axisLabel = axis - .getAxisMark() - ?.getProduct() + .getVRenderComponents()[0] ?.children[0]?.children[0]?.children[0]?.getChildByName('axis-label-container') ?.getChildByName('axis-label-container-layer-0')?.children[0]; }