[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:
co-authored by
kay delaney
parent
4bb2348d68
commit
4ca2f8bebe
@@ -90,7 +90,7 @@ export class DashboardModel implements TimeModel {
|
|||||||
private panelsAffectedByVariableChange: number[] | null;
|
private panelsAffectedByVariableChange: number[] | null;
|
||||||
private appEventsSubscription: Subscription;
|
private appEventsSubscription: Subscription;
|
||||||
private lastRefresh: number;
|
private lastRefresh: number;
|
||||||
private timeRangeUpdatedDuringEdit = false;
|
private timeRangeUpdatedDuringEditOrView = false;
|
||||||
private originalDashboard: Dashboard | null = null;
|
private originalDashboard: Dashboard | null = null;
|
||||||
|
|
||||||
// ------------------
|
// ------------------
|
||||||
@@ -388,8 +388,8 @@ export class DashboardModel implements TimeModel {
|
|||||||
this.events.publish(new TimeRangeUpdatedEvent(timeRange));
|
this.events.publish(new TimeRangeUpdatedEvent(timeRange));
|
||||||
dispatch(onTimeRangeUpdated(this.uid, timeRange));
|
dispatch(onTimeRangeUpdated(this.uid, timeRange));
|
||||||
|
|
||||||
if (this.panelInEdit) {
|
if (this.panelInEdit || this.panelInView) {
|
||||||
this.timeRangeUpdatedDuringEdit = true;
|
this.timeRangeUpdatedDuringEditOrView = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -431,7 +431,7 @@ export class DashboardModel implements TimeModel {
|
|||||||
initEditPanel(sourcePanel: PanelModel): PanelModel {
|
initEditPanel(sourcePanel: PanelModel): PanelModel {
|
||||||
getTimeSrv().stopAutoRefresh();
|
getTimeSrv().stopAutoRefresh();
|
||||||
this.panelInEdit = sourcePanel.getEditClone();
|
this.panelInEdit = sourcePanel.getEditClone();
|
||||||
this.timeRangeUpdatedDuringEdit = false;
|
this.timeRangeUpdatedDuringEditOrView = false;
|
||||||
return this.panelInEdit;
|
return this.panelInEdit;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -441,34 +441,30 @@ export class DashboardModel implements TimeModel {
|
|||||||
|
|
||||||
getTimeSrv().resumeAutoRefresh();
|
getTimeSrv().resumeAutoRefresh();
|
||||||
|
|
||||||
if (this.panelsAffectedByVariableChange || this.timeRangeUpdatedDuringEdit) {
|
this.refreshIfPanelsAffectedByVariableChangeOrTimeRangeChanged();
|
||||||
this.startRefresh({
|
|
||||||
panelIds: this.panelsAffectedByVariableChange ?? [],
|
|
||||||
refreshAll: this.timeRangeUpdatedDuringEdit,
|
|
||||||
});
|
|
||||||
this.panelsAffectedByVariableChange = null;
|
|
||||||
this.timeRangeUpdatedDuringEdit = false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
initViewPanel(panel: PanelModel) {
|
initViewPanel(panel: PanelModel) {
|
||||||
this.panelInView = panel;
|
this.panelInView = panel;
|
||||||
|
this.timeRangeUpdatedDuringEditOrView = false;
|
||||||
panel.setIsViewing(true);
|
panel.setIsViewing(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
exitViewPanel(panel: PanelModel) {
|
exitViewPanel(panel: PanelModel) {
|
||||||
this.panelInView = undefined;
|
this.panelInView = undefined;
|
||||||
panel.setIsViewing(false);
|
panel.setIsViewing(false);
|
||||||
this.refreshIfPanelsAffectedByVariableChange();
|
this.refreshIfPanelsAffectedByVariableChangeOrTimeRangeChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
private refreshIfPanelsAffectedByVariableChange() {
|
private refreshIfPanelsAffectedByVariableChangeOrTimeRangeChanged() {
|
||||||
if (!this.panelsAffectedByVariableChange) {
|
if (this.panelsAffectedByVariableChange || this.timeRangeUpdatedDuringEditOrView) {
|
||||||
return;
|
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() {
|
private ensurePanelsHaveUniqueIds() {
|
||||||
|
|||||||
Reference in New Issue
Block a user