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)); }