mirror of
https://github.com/grafana/grafana.git
synced 2025-02-12 08:35:43 -06:00
73 lines
1.8 KiB
TypeScript
73 lines
1.8 KiB
TypeScript
|
|
export class ThresholdMapper {
|
|
|
|
static alertToGraphThresholds(panel) {
|
|
var alert = panel.alert;
|
|
|
|
if (panel.type !== 'graph') {
|
|
return false;
|
|
}
|
|
|
|
for (var i = 0; i < panel.alert.conditions.length; i++) {
|
|
let condition = panel.alert.conditions[i];
|
|
if (condition.type !== 'query') {
|
|
continue;
|
|
}
|
|
|
|
var evaluator = condition.evaluator;
|
|
var thresholds = panel.thresholds = [];
|
|
|
|
switch (evaluator.type) {
|
|
case "gt": {
|
|
let value = evaluator.params[0];
|
|
thresholds.push({value: value, op: 'gt'});
|
|
break;
|
|
}
|
|
case "lt": {
|
|
let value = evaluator.params[0];
|
|
thresholds.push({value: value, op: 'lt'});
|
|
break;
|
|
}
|
|
case "outside_range": {
|
|
let value1 = evaluator.params[0];
|
|
let value2 = evaluator.params[1];
|
|
|
|
if (value1 > value2) {
|
|
thresholds.push({value: value1, op: 'gt'});
|
|
thresholds.push({value: value2, op: 'lt'});
|
|
} else {
|
|
thresholds.push({value: value1, op: 'lt'});
|
|
thresholds.push({value: value2, op: 'gt'});
|
|
}
|
|
|
|
break;
|
|
}
|
|
case "within_range": {
|
|
let value1 = evaluator.params[0];
|
|
let value2 = evaluator.params[1];
|
|
|
|
if (value1 > value2) {
|
|
thresholds.push({value: value1, op: 'lt'});
|
|
thresholds.push({value: value2, op: 'gt'});
|
|
} else {
|
|
thresholds.push({value: value1, op: 'gt'});
|
|
thresholds.push({value: value2, op: 'lt'});
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
|
|
for (var t of panel.thresholds) {
|
|
t.fill = true;
|
|
t.line = true;
|
|
t.colorMode = 'critical';
|
|
}
|
|
|
|
var updated = true;
|
|
return updated;
|
|
}
|
|
|
|
}
|