From 1e1403fad1986e776603a1b636d53c6c2e2c5c7d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torkel=20=C3=96degaard?= Date: Fri, 26 Nov 2021 10:06:41 +0100 Subject: [PATCH] DashboardExport: Correctly templetatize datasource prop now that is's a ref obj (#42305) --- .../DashExportModal/DashboardExporter.test.ts | 13 ++++++++----- .../components/DashExportModal/DashboardExporter.ts | 6 +++++- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/public/app/features/dashboard/components/DashExportModal/DashboardExporter.test.ts b/public/app/features/dashboard/components/DashExportModal/DashboardExporter.test.ts index 6602ebb6cbd..7a9f8d2fc4d 100644 --- a/public/app/features/dashboard/components/DashExportModal/DashboardExporter.test.ts +++ b/public/app/features/dashboard/components/DashExportModal/DashboardExporter.test.ts @@ -75,7 +75,7 @@ describe('given dashboard with repeated panels', () => { list: [ { name: 'logs', - datasource: { uid: 'gfdb', type: 'testdb' }, + datasource: 'gfdb', }, ], }, @@ -167,16 +167,16 @@ describe('given dashboard with repeated panels', () => { it('should replace datasource refs', () => { const panel = exported.panels[0]; - expect(panel.datasource).toBe('${DS_GFDB}'); + expect(panel.datasource.uid).toBe('${DS_GFDB}'); }); it('should replace datasource refs in collapsed row', () => { const panel = exported.panels[6].panels[0]; - expect(panel.datasource).toBe('${DS_GFDB}'); + expect(panel.datasource.uid).toBe('${DS_GFDB}'); }); it('should replace datasource in variable query', () => { - expect(exported.templating.list[0].datasource).toBe('${DS_GFDB}'); + expect(exported.templating.list[0].datasource.uid).toBe('${DS_GFDB}'); expect(exported.templating.list[0].options.length).toBe(0); expect(exported.templating.list[0].current.value).toBe(undefined); expect(exported.templating.list[0].current.text).toBe(undefined); @@ -280,8 +280,11 @@ describe('given dashboard with repeated panels', () => { expect(element.kind).toBe(LibraryElementKind.Panel); expect(element.model).toEqual({ id: 16, - datasource: '${DS_GFDB}', type: 'graph', + datasource: { + type: 'testdb', + uid: '${DS_GFDB}', + }, }); }); }); diff --git a/public/app/features/dashboard/components/DashExportModal/DashboardExporter.ts b/public/app/features/dashboard/components/DashExportModal/DashboardExporter.ts index 9cae57c6d32..ff29ddb6e58 100644 --- a/public/app/features/dashboard/components/DashExportModal/DashboardExporter.ts +++ b/public/app/features/dashboard/components/DashExportModal/DashboardExporter.ts @@ -116,7 +116,11 @@ export class DashboardExporter { pluginName: ds.meta?.name, }; - obj.datasource = '${' + refName + '}'; + if (obj.datasource === null || typeof obj.datasource === 'string') { + obj.datasource = '${' + refName + '}'; + } else { + obj.datasource.uid = '${' + refName + '}'; + } }) ); };