diff --git a/public/app/features/dashboard/state/DashboardModel.ts b/public/app/features/dashboard/state/DashboardModel.ts index e406dae5206..9179f772ee0 100644 --- a/public/app/features/dashboard/state/DashboardModel.ts +++ b/public/app/features/dashboard/state/DashboardModel.ts @@ -90,7 +90,7 @@ export class DashboardModel implements TimeModel { private panelsAffectedByVariableChange: number[] | null; private appEventsSubscription: Subscription; private lastRefresh: number; - private timeRangeUpdatedDuringEdit = false; + private timeRangeUpdatedDuringEditOrView = false; private originalDashboard: Dashboard | null = null; // ------------------ @@ -426,8 +426,8 @@ export class DashboardModel implements TimeModel { this.events.publish(new TimeRangeUpdatedEvent(timeRange)); dispatch(onTimeRangeUpdated(this.uid, timeRange)); - if (this.panelInEdit) { - this.timeRangeUpdatedDuringEdit = true; + if (this.panelInEdit || this.panelInView) { + this.timeRangeUpdatedDuringEditOrView = true; } } @@ -469,7 +469,7 @@ export class DashboardModel implements TimeModel { initEditPanel(sourcePanel: PanelModel): PanelModel { getTimeSrv().stopAutoRefresh(); this.panelInEdit = sourcePanel.getEditClone(); - this.timeRangeUpdatedDuringEdit = false; + this.timeRangeUpdatedDuringEditOrView = false; return this.panelInEdit; } @@ -479,34 +479,30 @@ export class DashboardModel implements TimeModel { getTimeSrv().resumeAutoRefresh(); - if (this.panelsAffectedByVariableChange || this.timeRangeUpdatedDuringEdit) { - this.startRefresh({ - panelIds: this.panelsAffectedByVariableChange ?? [], - refreshAll: this.timeRangeUpdatedDuringEdit, - }); - this.panelsAffectedByVariableChange = null; - this.timeRangeUpdatedDuringEdit = false; - } + this.refreshIfPanelsAffectedByVariableChangeOrTimeRangeChanged(); } initViewPanel(panel: PanelModel) { this.panelInView = panel; + this.timeRangeUpdatedDuringEditOrView = false; panel.setIsViewing(true); } exitViewPanel(panel: PanelModel) { this.panelInView = undefined; panel.setIsViewing(false); - this.refreshIfPanelsAffectedByVariableChange(); + this.refreshIfPanelsAffectedByVariableChangeOrTimeRangeChanged(); } - private refreshIfPanelsAffectedByVariableChange() { - if (!this.panelsAffectedByVariableChange) { - return; + private refreshIfPanelsAffectedByVariableChangeOrTimeRangeChanged() { + if (this.panelsAffectedByVariableChange || this.timeRangeUpdatedDuringEditOrView) { + this.startRefresh({ + panelIds: this.panelsAffectedByVariableChange ?? [], + refreshAll: this.timeRangeUpdatedDuringEditOrView, + }); + this.panelsAffectedByVariableChange = null; + this.timeRangeUpdatedDuringEditOrView = false; } - - this.startRefresh({ panelIds: this.panelsAffectedByVariableChange, refreshAll: false }); - this.panelsAffectedByVariableChange = null; } private ensurePanelsHaveUniqueIds() {