123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- import { config } from 'app/core/config';
- import { PanelModel } from 'app/features/dashboard/state';
- export const hiddenReducerTypes = ['percent_diff', 'percent_diff_abs'];
- export class ThresholdMapper {
- static alertToGraphThresholds(panel: PanelModel) {
- if (!panel.alert || config.unifiedAlertingEnabled) {
- return false; // no update when no alerts
- }
- for (let i = 0; i < panel.alert.conditions.length; i++) {
- const condition = panel.alert.conditions[i];
- if (condition.type !== 'query') {
- continue;
- }
- const evaluator = condition.evaluator;
- const thresholds: any[] = (panel.thresholds = []);
- const visible = hiddenReducerTypes.indexOf(condition.reducer?.type) === -1;
- switch (evaluator.type) {
- case 'gt': {
- const value = evaluator.params[0];
- thresholds.push({ value: value, op: 'gt', visible });
- break;
- }
- case 'lt': {
- const value = evaluator.params[0];
- thresholds.push({ value: value, op: 'lt', visible });
- break;
- }
- case 'outside_range': {
- const value1 = evaluator.params[0];
- const value2 = evaluator.params[1];
- if (value1 > value2) {
- thresholds.push({ value: value1, op: 'gt', visible });
- thresholds.push({ value: value2, op: 'lt', visible });
- } else {
- thresholds.push({ value: value1, op: 'lt', visible });
- thresholds.push({ value: value2, op: 'gt', visible });
- }
- break;
- }
- case 'within_range': {
- const value1 = evaluator.params[0];
- const value2 = evaluator.params[1];
- if (value1 > value2) {
- thresholds.push({ value: value1, op: 'lt', visible });
- thresholds.push({ value: value2, op: 'gt', visible });
- } else {
- thresholds.push({ value: value1, op: 'gt', visible });
- thresholds.push({ value: value2, op: 'lt', visible });
- }
- break;
- }
- }
- break;
- }
- for (const t of panel.thresholds) {
- t.fill = panel.options.alertThreshold;
- t.line = panel.options.alertThreshold;
- t.colorMode = 'critical';
- }
- const updated = true;
- return updated;
- }
- }
|