12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- import type {Trigger} from 'sentry/views/alerts/rules/metric/types';
- import {
- AlertRuleThresholdType,
- AlertRuleTriggerType,
- } from 'sentry/views/alerts/rules/metric/types';
- export const getChangeStatus = (
- value: number,
- thresholdType: AlertRuleThresholdType,
- triggers: Trigger[]
- ): string => {
- const criticalTrigger = triggers?.find(
- trig => trig.label === AlertRuleTriggerType.CRITICAL
- );
- const warningTrigger = triggers?.find(
- trig => trig.label === AlertRuleTriggerType.WARNING
- );
- const criticalTriggerAlertThreshold =
- typeof criticalTrigger?.alertThreshold === 'number'
- ? criticalTrigger.alertThreshold
- : undefined;
- const warningTriggerAlertThreshold =
- typeof warningTrigger?.alertThreshold === 'number'
- ? warningTrigger.alertThreshold
- : undefined;
- // Need to catch the critical threshold cases before warning threshold cases
- if (
- thresholdType === AlertRuleThresholdType.ABOVE &&
- criticalTriggerAlertThreshold &&
- value >= criticalTriggerAlertThreshold
- ) {
- return AlertRuleTriggerType.CRITICAL;
- }
- if (
- thresholdType === AlertRuleThresholdType.ABOVE &&
- warningTriggerAlertThreshold &&
- value >= warningTriggerAlertThreshold
- ) {
- return AlertRuleTriggerType.WARNING;
- }
- // When threshold is below(lower than in comparison alerts) the % diff value is negative
- // It crosses the threshold if its abs value is greater than threshold
- // -80% change crosses below 60% threshold -1 * (-80) > 60
- if (
- thresholdType === AlertRuleThresholdType.BELOW &&
- criticalTriggerAlertThreshold &&
- -1 * value >= criticalTriggerAlertThreshold
- ) {
- return AlertRuleTriggerType.CRITICAL;
- }
- if (
- thresholdType === AlertRuleThresholdType.BELOW &&
- warningTriggerAlertThreshold &&
- -1 * value >= warningTriggerAlertThreshold
- ) {
- return AlertRuleTriggerType.WARNING;
- }
- return '';
- };
|