From a98a39c418de86385c2f15157481c1692b103f72 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torkel=20=C3=96degaard?= Date: Thu, 23 Nov 2023 15:15:36 +0100 Subject: [PATCH] DashboardScene: Fixes angular panels inside collapsed rows (#78532) * DashboardScene: Fixes angular panels inside collapsed rows * Update --- .../transformSceneToSaveModel.test.ts.snap | 11 +---------- .../testfiles/repeating_rows_and_panels.json | 1 + .../serialization/transformSaveModelToScene.ts | 8 +++++++- .../serialization/transformSceneToSaveModel.test.ts | 5 ++++- 4 files changed, 13 insertions(+), 12 deletions(-) diff --git a/public/app/features/dashboard-scene/serialization/__snapshots__/transformSceneToSaveModel.test.ts.snap b/public/app/features/dashboard-scene/serialization/__snapshots__/transformSceneToSaveModel.test.ts.snap index 022e3016f89..5889d35d73f 100644 --- a/public/app/features/dashboard-scene/serialization/__snapshots__/transformSceneToSaveModel.test.ts.snap +++ b/public/app/features/dashboard-scene/serialization/__snapshots__/transformSceneToSaveModel.test.ts.snap @@ -123,11 +123,6 @@ exports[`transformSceneToSaveModel Given a scene with rows Should transform back ", "mode": "markdown", }, - "targets": [ - { - "refId": "A", - }, - ], "title": "", "transformations": [], "transparent": false, @@ -180,6 +175,7 @@ exports[`transformSceneToSaveModel Given a scene with rows Should transform back ", "mode": "markdown", }, + "title": "Text panel in collapsed row", "transformations": [], "transparent": false, "type": "text", @@ -433,11 +429,6 @@ exports[`transformSceneToSaveModel Given a simple scene with variables Should tr "content": "content", "mode": "markdown", }, - "targets": [ - { - "refId": "A", - }, - ], "title": "Transparent text panel", "transformations": [], "transparent": true, diff --git a/public/app/features/dashboard-scene/serialization/testfiles/repeating_rows_and_panels.json b/public/app/features/dashboard-scene/serialization/testfiles/repeating_rows_and_panels.json index 9edb41cfcc4..5c1f178bd40 100644 --- a/public/app/features/dashboard-scene/serialization/testfiles/repeating_rows_and_panels.json +++ b/public/app/features/dashboard-scene/serialization/testfiles/repeating_rows_and_panels.json @@ -182,6 +182,7 @@ "y": 26 }, "id": 30, + "title": "Text panel in collapsed row", "options": { "code": { "language": "plaintext", diff --git a/public/app/features/dashboard-scene/serialization/transformSaveModelToScene.ts b/public/app/features/dashboard-scene/serialization/transformSaveModelToScene.ts index 66f03640af5..debf9f4d680 100644 --- a/public/app/features/dashboard-scene/serialization/transformSaveModelToScene.ts +++ b/public/app/features/dashboard-scene/serialization/transformSaveModelToScene.ts @@ -124,7 +124,13 @@ export function createSceneObjectsForPanels(oldPanels: PanelModel[]): SceneGridI function createRowFromPanelModel(row: PanelModel, content: SceneGridItemLike[]): SceneGridItemLike { if (Boolean(row.collapsed)) { if (row.panels) { - content = row.panels.map(buildGridItemForPanel); + content = row.panels.map((saveModel) => { + // Collapsed panels are not actually PanelModel instances + if (!(saveModel instanceof PanelModel)) { + saveModel = new PanelModel(saveModel); + } + return buildGridItemForPanel(saveModel); + }); } } diff --git a/public/app/features/dashboard-scene/serialization/transformSceneToSaveModel.test.ts b/public/app/features/dashboard-scene/serialization/transformSceneToSaveModel.test.ts index 73ba8b7252e..e3e148d2f03 100644 --- a/public/app/features/dashboard-scene/serialization/transformSceneToSaveModel.test.ts +++ b/public/app/features/dashboard-scene/serialization/transformSceneToSaveModel.test.ts @@ -120,6 +120,7 @@ const runRequestMock = jest.fn().mockImplementation((ds: DataSourceApi, request: }) ); }); + jest.mock('@grafana/runtime', () => ({ ...jest.requireActual('@grafana/runtime'), getDataSourceSrv: () => ({ @@ -135,7 +136,9 @@ jest.mock('@grafana/runtime', () => ({ return runRequestMock(ds, request); }, config: { - panels: [], + panels: { + text: { skipDataQuery: true }, + }, featureToggles: { dataTrails: false, },