WARNING: THIS SITE IS A MIRROR OF GITHUB.COM / IT CANNOT LOGIN OR REGISTER ACCOUNTS / THE CONTENTS ARE PROVIDED AS-IS / THIS SITE ASSUMES NO RESPONSIBILITY FOR ANY DISPLAYED CONTENT OR LINKS / IF YOU FOUND SOMETHING MAY NOT GOOD FOR EVERYONE, CONTACT ADMIN AT ilovescratch@foxmail.com
Skip to content

Commit ea138e7

Browse files
committed
AG-16099 QA Feedback: Remove 'reset' from AgZoomEventSource
Refactor ZoomChangeRequestEvent to include an `isReset` property (required by the zoomAutoScale module to know whether to clear the `manuallyAdjusted` state).
1 parent f818677 commit ea138e7

File tree

8 files changed

+43
-21
lines changed

8 files changed

+43
-21
lines changed

packages/ag-charts-community/src/chart/interaction/zoomManager.ts

Lines changed: 31 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ export type UpdateZoomSourcing = {
8989
};
9090
export type UpdateZoomChanges = Record<AxisID, ZoomState | undefined>;
9191
export type UpdateZoomParams = UpdateZoomSourcing & {
92+
isReset: boolean;
9293
changes: UpdateZoomChanges;
9394
};
9495

@@ -294,7 +295,12 @@ export class ZoomManager extends BaseManager {
294295

295296
const changes = this.toCoreZoomState(zoom);
296297
this.lastRestoredState = deepFreeze(deepClone(changes));
297-
this.updateChanges({ source: 'user-interaction', sourceDetail: 'internal-restoreMemento', changes });
298+
this.updateChanges({
299+
source: 'user-interaction',
300+
sourceDetail: 'internal-restoreMemento',
301+
changes,
302+
isReset: false,
303+
});
298304
}
299305

300306
private findAxis(axisId: AxisID): CartesianAxisLike | undefined {
@@ -321,7 +327,7 @@ export class ZoomManager extends BaseManager {
321327
this.state = changes;
322328
this.lastRestoredState = refreshCoreState(nextAxes, this.lastRestoredState);
323329

324-
this.updateChanges({ source: 'chart-update', sourceDetail: 'internal-setAxes', changes });
330+
this.updateChanges({ source: 'chart-update', sourceDetail: 'internal-setAxes', changes, isReset: false });
325331
}
326332

327333
public setIndependentAxes(independent = true) {
@@ -346,7 +352,7 @@ export class ZoomManager extends BaseManager {
346352

347353
public updateZoom({ source, sourceDetail }: UpdateZoomSourcing, newZoom?: AxisZoomState): boolean {
348354
const changes = this.toCoreZoomState(newZoom ?? {});
349-
return this.updateChanges({ source, sourceDetail, changes });
355+
return this.updateChanges({ source, sourceDetail, changes, isReset: false });
350356
}
351357

352358
private computeChangedAxesIds(newState: UpdateZoomChanges): readonly AxisID[] {
@@ -367,7 +373,7 @@ export class ZoomManager extends BaseManager {
367373
}
368374

369375
public updateChanges(params: UpdateZoomParams): boolean {
370-
const { source, sourceDetail, changes } = params;
376+
const { source, sourceDetail, isReset, changes } = params;
371377
validateChanges(changes);
372378

373379
const changedAxes = this.computeChangedAxesIds(changes);
@@ -381,15 +387,20 @@ export class ZoomManager extends BaseManager {
381387
}
382388
this.state = newState;
383389

384-
return this.dispatch(source, sourceDetail, changedAxes);
390+
return this.dispatch(source, sourceDetail, changedAxes, isReset);
385391
}
386392

387-
public resetZoom(sourceDetail: ZoomEventSourceDetail) {
388-
this.updateChanges({ source: 'reset', sourceDetail, changes: this.getRestoredZoom() });
393+
public resetZoom({ source, sourceDetail }: UpdateZoomSourcing) {
394+
this.updateChanges({ source, sourceDetail, changes: this.getRestoredZoom(), isReset: true });
389395
}
390396

391-
public resetAxisZoom(sourceDetail: ZoomEventSourceDetail, axisId: AxisID) {
392-
this.updateChanges({ source: 'reset', sourceDetail, changes: { [axisId]: this.getRestoredZoom()[axisId] } });
397+
public resetAxisZoom({ source, sourceDetail }: UpdateZoomSourcing, axisId: AxisID) {
398+
this.updateChanges({
399+
source,
400+
sourceDetail,
401+
changes: { [axisId]: this.getRestoredZoom()[axisId] },
402+
isReset: true,
403+
});
393404
}
394405

395406
public panToBBox(seriesRect: BBox, target: BoxBounds): boolean {
@@ -410,7 +421,12 @@ export class ZoomManager extends BaseManager {
410421

411422
const newZoom: AxisZoomState = calcPanToBBoxRatios(seriesRect, zoom, target);
412423
const changes = this.toCoreZoomState(newZoom);
413-
return this.updateChanges({ source: 'user-interaction', sourceDetail: 'internal-panToBBox', changes });
424+
return this.updateChanges({
425+
source: 'user-interaction',
426+
sourceDetail: 'internal-panToBBox',
427+
changes,
428+
isReset: false,
429+
});
414430
}
415431

416432
// Fire this event to signal to listeners that the view is changing through a zoom and/or pan change.
@@ -439,7 +455,7 @@ export class ZoomManager extends BaseManager {
439455
const ratio = this.rangeToRatioAxis(axis, { start });
440456
if (!ratio) return;
441457

442-
this.updateChanges({ source, sourceDetail, changes: { [direction]: ratio } });
458+
this.updateChanges({ source, sourceDetail, changes: { [direction]: ratio }, isReset: false });
443459
}
444460

445461
public updateWith(
@@ -459,7 +475,7 @@ export class ZoomManager extends BaseManager {
459475
const ratio = this.rangeToRatioAxis(axis, { start, end });
460476
if (!ratio) return;
461477

462-
this.updateChanges({ source, sourceDetail, changes: { [direction]: ratio } });
478+
this.updateChanges({ source, sourceDetail, changes: { [direction]: ratio }, isReset: false });
463479
}
464480

465481
public getZoom(): AxisZoomState | undefined {
@@ -574,7 +590,8 @@ export class ZoomManager extends BaseManager {
574590
private dispatch(
575591
source: AgZoomEventSource,
576592
sourceDetail: ZoomEventSourceDetail,
577-
changedAxes: readonly AxisID[]
593+
changedAxes: readonly AxisID[],
594+
isReset: boolean
578595
): boolean {
579596
const { x, y } = this.getZoom() ?? {};
580597
const state = this.state;
@@ -583,6 +600,7 @@ export class ZoomManager extends BaseManager {
583600
const event = {
584601
source,
585602
sourceDetail,
603+
isReset,
586604
changedAxes,
587605
state,
588606
x,

packages/ag-charts-community/src/core/eventsHub.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,7 @@ export type ZoomEventSourceDetail =
218218
export interface ZoomChangeRequestEvent {
219219
readonly source: AgZoomEventSource;
220220
readonly sourceDetail: ZoomEventSourceDetail;
221+
readonly isReset: boolean;
221222
readonly changedAxes: readonly AxisID[];
222223
readonly state: ZoomChangeState;
223224
readonly x?: Readonly<ZoomState>;

packages/ag-charts-enterprise/src/features/ranges/ranges.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ export class Ranges extends AbstractModuleInstance {
7575

7676
const sourcing = userInteraction(`zoom-range-button-${index}`);
7777
if (value == null) {
78-
zoomManager.resetZoom(sourcing.sourceDetail);
78+
zoomManager.resetZoom(sourcing);
7979
} else if (typeof value === 'number') {
8080
zoomManager.extendToEnd(sourcing, ChartAxisDirection.X, value);
8181
} else if (Array.isArray(value)) {

packages/ag-charts-enterprise/src/features/zoom/zoom.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -514,7 +514,7 @@ export class Zoom extends AbstractModuleInstance {
514514
if (!enabled || !enableDoubleClickToReset || !this.isState(InteractionState.ZoomClickable)) return;
515515

516516
this.previousAxisZoomValid = { [ChartAxisDirection.X]: true, [ChartAxisDirection.Y]: true };
517-
zoomManager.resetAxisZoom('zoom-axis-dblclick', id);
517+
zoomManager.resetAxisZoom({ source: 'user-interaction', sourceDetail: 'zoom-axis-dblclick' }, id);
518518
}
519519

520520
private onAxisDragStart(direction: ChartAxisDirection) {
@@ -930,7 +930,7 @@ export class Zoom extends AbstractModuleInstance {
930930
private resetZoom(sourceDetail: _ModuleSupport.ZoomEventSourceDetail) {
931931
this.previousZoomValid = true;
932932
this.previousAxisZoomValid = { [ChartAxisDirection.X]: true, [ChartAxisDirection.Y]: true };
933-
this.ctx.zoomManager.resetZoom(sourceDetail);
933+
this.ctx.zoomManager.resetZoom({ source: 'user-interaction', sourceDetail });
934934
}
935935

936936
public updateSyncZoom(zoom: DefinedZoomState) {
@@ -1013,7 +1013,7 @@ export class Zoom extends AbstractModuleInstance {
10131013
if (!this.isAxisZoomValid(direction, axisZoom, validOptions)) return false;
10141014

10151015
const { source, sourceDetail } = sourcing;
1016-
zoomManager.updateChanges({ source, sourceDetail, changes: { [axisId]: axisZoom } });
1016+
zoomManager.updateChanges({ source, sourceDetail, changes: { [axisId]: axisZoom }, isReset: false });
10171017
return true;
10181018
}
10191019

packages/ag-charts-enterprise/src/features/zoom/zoomAutoScale.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,12 +81,13 @@ export class ZoomAutoScaler implements ZoomAutoScaleChangeListener {
8181
source: 'chart-update',
8282
sourceDetail: 'internal-autoScaling',
8383
changes: this.autoScaleYZoom() ?? {},
84+
isReset: false,
8485
});
8586
}
8687
}
8788

8889
private onChangeRequest(event: _ModuleSupport.ZoomChangeRequestEvent) {
89-
if (event.source == 'reset') {
90+
if (event.isReset) {
9091
for (const id of event.changedAxes) {
9192
if (event.state[id]?.direction === ChartAxisDirection.Y) {
9293
this.manuallyAdjusted = false;

packages/ag-charts-enterprise/src/features/zoom/zoomContextMenu.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ export class ZoomContextMenu {
115115
}
116116

117117
private onResetZoom(_actionEvent: AgSeriesAreaContextMenuActionEvent) {
118-
this.zoomManager.resetZoom('contextmenu-reset');
118+
this.zoomManager.resetZoom(userInteraction('contextmenu-reset'));
119119
}
120120

121121
private iterateFindNextZoomAtPoint(origin: Point) {

packages/ag-charts-enterprise/src/features/zoom/zoomOnDataChange.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ import type { AgZoomOnDataChange, AgZoomOnDataChangeStrategy } from 'ag-charts-t
55

66
import { definedZoomState } from './zoomUtils';
77

8+
const { userInteraction } = _ModuleSupport;
9+
810
type DefinedZoomState = _ModuleSupport.DefinedZoomState;
911
type ModuleContext = Pick<_ModuleSupport.ModuleContext, 'eventsHub' | 'zoomManager' | 'axisManager'>;
1012
type ZoomChangeState = _ModuleSupport.ZoomChangeState;
@@ -186,7 +188,7 @@ export class ZoomOnDataChange {
186188

187189
switch (this.properties.strategy) {
188190
case 'reset':
189-
return this.ctx.zoomManager.resetZoom('onDataChange-reset');
191+
return this.ctx.zoomManager.resetZoom(userInteraction('onDataChange-reset'));
190192
case 'preserveRatios':
191193
return; // do nothing (keep ZoomManager min/max ratios unchanged).
192194
case 'preserveDomain':

packages/ag-charts-types/src/chart/eventOptions.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ export interface AgAnnotationsEvent<TContext = ContextDefault> {
6464
context?: TContext;
6565
}
6666

67-
export type AgZoomEventSource = 'user-interaction' | 'reset' | 'chart-update' | 'data-update' | 'sync';
67+
export type AgZoomEventSource = 'user-interaction' | 'chart-update' | 'data-update' | 'sync';
6868

6969
export interface AgZoomEvent<TContext = ContextDefault> {
7070
type: 'zoom';

0 commit comments

Comments
 (0)