From d32c02ae144b75023ebeea323ebe2d87d177842f Mon Sep 17 00:00:00 2001 From: kay delaney <45561153+kaydelaney@users.noreply.github.com> Date: Thu, 14 Nov 2024 14:45:17 +0000 Subject: [PATCH] [v11.3.x] Dashboard datasource: Return annotations as series when query topic is "annotations" (#95971) Dashboard datasource: Return annotations as series when query topic is "annotations" (#95965) (cherry picked from commit 26b0e8f105c7ebe1e7f982c83af1f7d26370150c) --- .../datasource/dashboard/datasource.ts | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/public/app/plugins/datasource/dashboard/datasource.ts b/public/app/plugins/datasource/dashboard/datasource.ts index d7fa857e98a..9d85f92dfc8 100644 --- a/public/app/plugins/datasource/dashboard/datasource.ts +++ b/public/app/plugins/datasource/dashboard/datasource.ts @@ -7,6 +7,9 @@ import { DataSourceInstanceSettings, TestDataSourceResponse, ScopedVar, + DataTopic, + PanelData, + DataFrame, } from '@grafana/data'; import { SceneDataProvider, SceneDataTransformer, SceneObject } from '@grafana/scenes'; import { findVizPanelByKey, getVizPanelKeyForPanelId } from 'app/features/dashboard-scene/utils/utils'; @@ -74,7 +77,7 @@ export class DashboardDatasource extends DataSourceApi { return sourceDataProvider!.getResultsStream!().pipe( map((result) => { return { - data: result.data.series, + data: this.getDataFramesForQueryTopic(result.data, query), state: result.data.state, errors: result.data.errors, error: result.data.error, @@ -86,6 +89,21 @@ export class DashboardDatasource extends DataSourceApi { }); } + private getDataFramesForQueryTopic(data: PanelData, query: DashboardQuery): DataFrame[] { + const annotations = data.annotations ?? []; + if (query.topic === DataTopic.Annotations) { + return annotations.map((frame) => ({ + ...frame, + meta: { + ...frame.meta, + dataTopic: DataTopic.Series, + }, + })); + } else { + return [...data.series, ...annotations]; + } + } + private findSourcePanel(scene: SceneObject, panelId: number) { return findVizPanelByKey(scene, getVizPanelKeyForPanelId(panelId)); }