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

This commit is contained in:
kay delaney 2024-02-27 14:14:01 +00:00 committed by GitHub
parent d6eefc7303
commit a8574226bb
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

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;
// ------------------
@ -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() {