diff --git a/public/app/plugins/datasource/dashboard/datasource.ts b/public/app/plugins/datasource/dashboard/datasource.ts index 1716fd59dd7..8cf02cefbfc 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 { @@ -78,7 +81,7 @@ export class DashboardDatasource extends DataSourceApi { return sourceDataProvider!.getResultsStream!().pipe( map((result) => { return { - data: [...result.data.series, ...(result.data.annotations ?? [])], + data: this.getDataFramesForQueryTopic(result.data, query), state: result.data.state, errors: result.data.errors, error: result.data.error, @@ -90,6 +93,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)); }