From 97027834a1f6fa0d8c882f4a27f133aa53d9cdb2 Mon Sep 17 00:00:00 2001 From: Oscar Kilhed Date: Tue, 29 Oct 2024 09:55:13 +0100 Subject: [PATCH] Dashboard datasource: Activate parents of query runner when using dashboard ds (#95507) * Activate parents of query runner when using dashboard ds * Set plugin loading util to fix test because activating the ancestors of the query runner needs to be able to load the plugin for the panel --- .../plugins/datasource/dashboard/datasource.test.ts | 6 ++++++ public/app/plugins/datasource/dashboard/datasource.ts | 10 +++++++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/public/app/plugins/datasource/dashboard/datasource.test.ts b/public/app/plugins/datasource/dashboard/datasource.test.ts index e394ba0e3e2..88edd27749d 100644 --- a/public/app/plugins/datasource/dashboard/datasource.test.ts +++ b/public/app/plugins/datasource/dashboard/datasource.test.ts @@ -6,6 +6,8 @@ import { LoadingState, standardTransformersRegistry, } from '@grafana/data'; +import { getPanelPlugin } from '@grafana/data/test/__mocks__/pluginMocks'; +import { setPluginImportUtils } from '@grafana/runtime'; import { SafeSerializableSceneObject, SceneDataNode, @@ -21,6 +23,10 @@ import { DashboardDatasource } from './datasource'; import { DashboardQuery } from './types'; standardTransformersRegistry.setInit(getStandardTransformers); +setPluginImportUtils({ + importPanelPlugin: (id: string) => Promise.resolve(getPanelPlugin({})), + getPanelPluginFromCache: (id: string) => undefined, +}); describe('DashboardDatasource', () => { it("should look up the other panel and subscribe to it's data", async () => { diff --git a/public/app/plugins/datasource/dashboard/datasource.ts b/public/app/plugins/datasource/dashboard/datasource.ts index d7fa857e98a..07e1f84f902 100644 --- a/public/app/plugins/datasource/dashboard/datasource.ts +++ b/public/app/plugins/datasource/dashboard/datasource.ts @@ -9,7 +9,11 @@ import { ScopedVar, } from '@grafana/data'; import { SceneDataProvider, SceneDataTransformer, SceneObject } from '@grafana/scenes'; -import { findVizPanelByKey, getVizPanelKeyForPanelId } from 'app/features/dashboard-scene/utils/utils'; +import { + activateInActiveParents, + findVizPanelByKey, + getVizPanelKeyForPanelId, +} from 'app/features/dashboard-scene/utils/utils'; import { DashboardQuery } from './types'; @@ -69,7 +73,7 @@ export class DashboardDatasource extends DataSourceApi { sourceDataProvider?.setContainerWidth(500); } - const cleanUp = sourceDataProvider!.activate(); + const cleanUp = activateInActiveParents(sourceDataProvider!); return sourceDataProvider!.getResultsStream!().pipe( map((result) => { @@ -81,7 +85,7 @@ export class DashboardDatasource extends DataSourceApi { key: 'source-ds-provider', }; }), - finalize(cleanUp) + finalize(() => cleanUp?.()) ); }); }