Files
grafana/public/app/features/dashboard-scene/scene/DashboardAnnotationsDataLayer.ts
Torkel Ödegaard fc0933d5f4 Schema: Clean up dashboard variables schema (#76121)
* Cleanup variable schema model

* minor fix

* remove type ignores that are no longer type errors
2023-10-09 09:10:52 +02:00

53 lines
1.4 KiB
TypeScript

import {
AnnotationEvent,
arrayToDataFrame,
DataTopic,
getDefaultTimeRange,
PanelData,
LoadingState,
} from '@grafana/data';
import { config } from '@grafana/runtime';
import { dataLayers } from '@grafana/scenes';
import { AnnotationQuery } from '@grafana/schema';
import { PublicAnnotationsDataSource } from 'app/features/query/state/DashboardQueryRunner/PublicAnnotationsDataSource';
/**
* This class is an extension to dataLayers.AnnotationsDataLayer to provide support for public dashboards.
*/
export class DashboardAnnotationsDataLayer extends dataLayers.AnnotationsDataLayer {
protected async resolveDataSource(query: AnnotationQuery) {
if (config.publicDashboardAccessToken) {
return new PublicAnnotationsDataSource();
}
return super.resolveDataSource(query);
}
protected processEvents(
query: AnnotationQuery,
events: {
state: LoadingState;
events: AnnotationEvent[];
}
) {
if (config.publicDashboardAccessToken) {
const stateUpdate: PanelData = {
series: [],
timeRange: getDefaultTimeRange(),
state: events.state,
};
const df = arrayToDataFrame(events.events);
df.meta = {
...df.meta,
dataTopic: DataTopic.Annotations,
};
stateUpdate.annotations = [df];
return stateUpdate;
} else {
return super.processEvents(query, events);
}
}
}