Skip to content

Commit 8fd1a86

Browse files
committed
fix: fix rescale issue of linear-scale
1 parent 366e2fe commit 8fd1a86

File tree

2 files changed

+31
-12
lines changed

2 files changed

+31
-12
lines changed

packages/vchart/src/component/axis/base-axis.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -363,7 +363,7 @@ export abstract class AxisComponent<T extends ICommonAxisSpec & Record<string, a
363363
}
364364

365365
onLayoutEnd(ctx: any): void {
366-
this.updateScaleRange();
366+
const changed = this.updateScaleRange();
367367

368368
this.event.emit(ChartEvent.scaleUpdate, { model: this, value: 'range' });
369369

packages/vchart/src/component/axis/mixin/linear-axis-mixin.ts

Lines changed: 30 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,9 @@ export class LinearAxisMixin {
5757
}
5858

5959
setLinearScaleNice() {
60+
if (!this._nice) {
61+
return false;
62+
}
6063
let tickCount: number = DEFAULT_TICK_COUNT;
6164
const tick = this._spec.tick || {};
6265

@@ -89,31 +92,38 @@ export class LinearAxisMixin {
8992
}
9093
const { min, max } = this._domain ?? {};
9194
if (isNil(min) && isNil(max)) {
92-
this._nice && this._scale.nice(tickCount);
95+
return this._scale.nice(tickCount);
9396
} else if (isValid(min) && isNil(max)) {
94-
this._nice && this._scale.niceMax(tickCount);
97+
return this._scale.niceMax(tickCount);
9598
} else if (isNil(min) && isValid(max)) {
96-
this._nice && this._scale.niceMin(tickCount);
99+
return this._scale.niceMin(tickCount);
97100
}
101+
102+
return false;
98103
}
99104

100105
setLogScaleNice() {
106+
if (!this._nice) {
107+
return false;
108+
}
109+
101110
const { min, max } = this._domain ?? {};
102111
if (isNil(min) && isNil(max)) {
103-
this._nice && this._scale.nice();
112+
return this._scale.nice();
104113
} else if (isValid(min) && isNil(max)) {
105-
this._nice && this._scale.niceMax();
114+
return this._scale.niceMax();
106115
} else if (isNil(min) && isValid(max)) {
107-
this._nice && this._scale.niceMin();
116+
return this._scale.niceMin();
108117
}
118+
119+
return false;
109120
}
110121

111122
setScaleNice() {
112123
if (this._spec.type === 'log') {
113-
this.setLogScaleNice();
114-
} else {
115-
this.setLinearScaleNice();
124+
return this.setLogScaleNice();
116125
}
126+
return this.setLinearScaleNice();
117127
}
118128

119129
dataToPosition(values: any[], cfg?: IAxisLocationCfg): number {
@@ -222,7 +232,12 @@ export class LinearAxisMixin {
222232
this.setDomainMinMax(domain);
223233
this.niceDomain(domain);
224234
this._scale.domain(domain, this._nice);
225-
this.setScaleNice();
235+
236+
if (this._nice) {
237+
const niced = this.setScaleNice();
238+
239+
!niced && this._scale.rescale();
240+
}
226241

227242
this.event.emit(ChartEvent.scaleUpdate, { model: this as any, value: 'domain' });
228243
}
@@ -287,7 +302,11 @@ export class LinearAxisMixin {
287302
this.niceDomain(domain);
288303
this._scale.domain(domain, this._nice);
289304
// 设置scale的nice-min-max
290-
this.setScaleNice();
305+
if (this._nice) {
306+
const niced = this.setScaleNice();
307+
308+
!niced && this._scale.rescale();
309+
}
291310
this._updateNiceLabelFormatter(domain);
292311

293312
this._domainAfterSpec = this._scale.domain();

0 commit comments

Comments
 (0)