grafana/public/app/features/alerting/getAlertingValidationMessage.ts
Torkel Ödegaard 8f78b0e7bc
Chore: Fix all Typescript strict null errors (#26204)
* Chore: Fix typescript strict null errors

* Added new limit

* Fixed ts issue

* fixed tests

* trying to fix type inference

* Fixing more ts errors

* Revert tsconfig option

* Fix

* Fixed code

* More fixes

* fix tests

* Updated snapshot

* Chore: More ts strict null fixes

* More fixes in some really messed up azure config components

* More fixes, current count: 441

* 419

* More fixes

* Fixed invalid initial state in explore

* Fixing tests

* Fixed tests

* Explore fix

* More fixes

* Progress

* Sub 300

* Now at 218

* Progress

* Update

* Progress

* Updated tests

* at 159

* fixed tests

* Progress

* YAy blow 100! at 94

* 10,9,8,7,6,5,4,3,2,1... lift off

* Fixed tests

* Fixed more type errors

Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
2020-07-10 12:46:59 +02:00

50 lines
1.4 KiB
TypeScript

import { DataQuery } from '@grafana/data';
import { DataSourceSrv } from '@grafana/runtime';
import { DataTransformerConfig } from '@grafana/data';
export const getDefaultCondition = () => ({
type: 'query',
query: { params: ['A', '5m', 'now'] },
reducer: { type: 'avg', params: [] as any[] },
evaluator: { type: 'gt', params: [null] as any[] },
operator: { type: 'and' },
});
export const getAlertingValidationMessage = async (
transformations: DataTransformerConfig[] | undefined,
targets: DataQuery[],
datasourceSrv: DataSourceSrv,
datasourceName: string | null
): Promise<string> => {
if (targets.length === 0) {
return 'Could not find any metric queries';
}
if (transformations && transformations.length) {
return 'Transformations are not supported in alert queries';
}
let alertingNotSupported = 0;
let templateVariablesNotSupported = 0;
for (const target of targets) {
const dsName = target.datasource || datasourceName;
const ds = await datasourceSrv.get(dsName);
if (!ds.meta.alerting) {
alertingNotSupported++;
} else if (ds.targetContainsTemplate && ds.targetContainsTemplate(target)) {
templateVariablesNotSupported++;
}
}
if (alertingNotSupported === targets.length) {
return 'The datasource does not support alerting queries';
}
if (templateVariablesNotSupported === targets.length) {
return 'Template variables are not supported in alert queries';
}
return '';
};