From 4a5f27114233df02aaff750289734d493cf601c2 Mon Sep 17 00:00:00 2001 From: kay delaney <45561153+kaydelaney@users.noreply.github.com> Date: Fri, 12 Jan 2024 13:22:53 +0000 Subject: [PATCH] Scenes/PanelEdit: Replace panel when commiting editor changes (#80282) * Scenes/PanelEdit: Replace panel when commiting editor changes * Clone panel rather than setting it as body directly --- .../dashboard-scene/panel-edit/PanelEditor.tsx | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/public/app/features/dashboard-scene/panel-edit/PanelEditor.tsx b/public/app/features/dashboard-scene/panel-edit/PanelEditor.tsx index f915a914302..0c5c4e49bc9 100644 --- a/public/app/features/dashboard-scene/panel-edit/PanelEditor.tsx +++ b/public/app/features/dashboard-scene/panel-edit/PanelEditor.tsx @@ -6,6 +6,7 @@ import { getUrlSyncManager, SceneFlexItem, SceneFlexLayout, + SceneGridItem, SceneObject, SceneObjectBase, SceneObjectRef, @@ -99,22 +100,22 @@ export class PanelEditor extends SceneObjectBase { const dashboard = this.state.dashboardRef.resolve(); const sourcePanel = this.state.sourcePanelRef.resolve(); - const panelMngr = this.state.panelRef.resolve(); - if (!dashboard.state.isEditing) { dashboard.onEnterEditMode(); } - const newState = sceneUtils.cloneSceneObjectState(panelMngr.state.panel.state); + const panelMngr = this.state.panelRef.resolve(); // Remove data provider if it's a share query. For editing purposes the data provider is cloned and attached to the // ShareQueryDataProvider when panel is in edit mode. // TODO: Handle transformations when we get on transformations edit. - if (newState.$data instanceof ShareQueryDataProvider) { - newState.$data.setState({ $data: undefined }); + if (panelMngr.state.panel.state.$data instanceof ShareQueryDataProvider) { + panelMngr.state.panel.state.$data.setState({ $data: undefined }); } - sourcePanel.setState(newState); + if (sourcePanel.parent instanceof SceneGridItem) { + sourcePanel.parent.setState({ body: panelMngr.state.panel.clone() }); + } // preserve time range and variables state dashboard.setState({