From 99e5e1c8bd6d66f60fa72c6ac84d5aa73c577201 Mon Sep 17 00:00:00 2001 From: Oscar Kilhed Date: Thu, 13 Jun 2024 11:24:29 +0200 Subject: [PATCH] Dashboard scenes: Duplicated panels should maintain size of source panel (#89152) Maintain size of duplicated panel --- .../dashboard-scene/scene/DashboardScene.test.tsx | 14 ++++++++++++++ .../dashboard-scene/scene/DashboardScene.tsx | 4 ++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/public/app/features/dashboard-scene/scene/DashboardScene.test.tsx b/public/app/features/dashboard-scene/scene/DashboardScene.test.tsx index d2138cc8b57..bb4488f705f 100644 --- a/public/app/features/dashboard-scene/scene/DashboardScene.test.tsx +++ b/public/app/features/dashboard-scene/scene/DashboardScene.test.tsx @@ -753,6 +753,20 @@ describe('DashboardScene', () => { expect(gridItem.state.body!.state.key).toBe('panel-7'); }); + it('Should maintain size of duplicated panel', () => { + const gItem = (scene.state.body as SceneGridLayout).state.children[0] as DashboardGridItem; + gItem.setState({ height: 1 }); + const vizPanel = gItem.state.body; + scene.duplicatePanel(vizPanel as VizPanel); + + const body = scene.state.body as SceneGridLayout; + const newGridItem = body.state.children[5] as DashboardGridItem; + + expect(body.state.children.length).toBe(6); + expect(newGridItem.state.body!.state.key).toBe('panel-7'); + expect(newGridItem.state.height).toBe(1); + }); + it('Should duplicate a library panel', () => { const libraryPanel = ((scene.state.body as SceneGridLayout).state.children[4] as DashboardGridItem).state.body; const vizPanel = (libraryPanel as LibraryVizPanel).state.panel; diff --git a/public/app/features/dashboard-scene/scene/DashboardScene.tsx b/public/app/features/dashboard-scene/scene/DashboardScene.tsx index bf14cc0c422..c050e66ec37 100644 --- a/public/app/features/dashboard-scene/scene/DashboardScene.tsx +++ b/public/app/features/dashboard-scene/scene/DashboardScene.tsx @@ -594,8 +594,8 @@ export class DashboardScene extends SceneObjectBase { newGridItem = new DashboardGridItem({ x: gridItem.state.x, y: gridItem.state.y, - height: NEW_PANEL_HEIGHT, - width: NEW_PANEL_WIDTH, + height: gridItem.state.height, + width: gridItem.state.width, body: new VizPanel({ ...panelState, $data: panelData, key: getVizPanelKeyForPanelId(newPanelId) }), }); }