123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- import { AnnotationQuery } from '@grafana/data';
- import { AnnotationQueryEditor } from './components/AnnotationQueryEditor';
- import { isCloudWatchAnnotation } from './guards';
- import { CloudWatchAnnotationQuery, CloudWatchQuery, LegacyAnnotationQuery } from './types';
- export const CloudWatchAnnotationSupport = {
- // converts legacy angular style queries to new format. Also sets the same default values as in the deprecated angular directive
- prepareAnnotation: (
- query: LegacyAnnotationQuery | AnnotationQuery<CloudWatchAnnotationQuery>
- ): AnnotationQuery<CloudWatchAnnotationQuery> => {
- if (isCloudWatchAnnotation(query)) {
- return query;
- }
- return {
- // setting AnnotationQuery props explicitly since spreading would incorrectly use props that should be on the target only
- datasource: query.datasource,
- enable: query.enable,
- iconColor: query.iconColor,
- name: query.name,
- builtIn: query.builtIn,
- hide: query.hide,
- target: {
- ...query.target,
- ...query,
- statistic: query.statistic || 'Average',
- region: query.region || 'default',
- queryMode: 'Annotations',
- refId: query.refId || 'annotationQuery',
- },
- };
- },
- // return undefined if query is not complete so that annotation query execution is quietly skipped
- prepareQuery: (anno: AnnotationQuery<CloudWatchAnnotationQuery>): CloudWatchQuery | undefined => {
- if (!anno.target) {
- return undefined;
- }
- const {
- prefixMatching,
- actionPrefix,
- alarmNamePrefix,
- statistic,
- namespace,
- metricName,
- dimensions = {},
- } = anno.target;
- const validPrefixMatchingQuery = !!prefixMatching && !!actionPrefix && !!alarmNamePrefix;
- const validMetricStatQuery =
- !prefixMatching && !!namespace && !!metricName && !!statistic && !!Object.values(dimensions).length;
- if (validPrefixMatchingQuery || validMetricStatQuery) {
- return anno.target;
- }
- return undefined;
- },
- QueryEditor: AnnotationQueryEditor,
- };
|