[v10.3.x] Dashboards: Fixes issue where panels would not refresh if time range updated while in panel view mode (#83525)

Dashboards: Fixes issue where panels would not refresh if time range updated while in panel view mode (#83418)

(cherry picked from commit a8574226bb)

Co-authored-by: kay delaney <45561153+kaydelaney@users.noreply.github.com>
This commit is contained in:
grafana-delivery-bot[bot]
2024-03-01 10:57:57 +00:00
committed by GitHub
parent 4bb2348d68
commit 4ca2f8bebe

View File

@@ -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;
// ------------------
@@ -388,8 +388,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;
}
}
@@ -431,7 +431,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;
}
@@ -441,34 +441,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() {