Hide some fields in the details tab (view page) when it's a grafana recording rule

This commit is contained in:
Sonia Aguilar 2024-08-29 09:01:25 +02:00
parent 4f024d94d8
commit 5439d99d07
2 changed files with 8 additions and 9 deletions

View File

@ -7,7 +7,7 @@ import { ClipboardButton, Stack, Text, TextLink, useStyles2 } from '@grafana/ui'
import { CombinedRule } from 'app/types/unified-alerting';
import { Annotations } from 'app/types/unified-alerting-dto';
import { isGrafanaRulerRule, isRecordingRulerRule } from '../../../utils/rules';
import { isGrafanaRecordingRule, isGrafanaRulerRule, isRecordingRulerRule } from '../../../utils/rules';
import { MetaText } from '../../MetaText';
import { Tokenize } from '../../Tokenize';
@ -17,6 +17,7 @@ interface DetailsProps {
enum RuleType {
GrafanaManagedAlertRule = 'Grafana-managed alert rule',
GrafanaManagedRecordingRule = 'Grafana-managed recording rule',
CloudAlertRule = 'Cloud alert rule',
CloudRecordingRule = 'Cloud recording rule',
}
@ -27,7 +28,9 @@ const Details = ({ rule }: DetailsProps) => {
let ruleType: RuleType;
if (isGrafanaRulerRule(rule.rulerRule)) {
ruleType = RuleType.GrafanaManagedAlertRule;
ruleType = isGrafanaRecordingRule(rule.rulerRule)
? RuleType.GrafanaManagedRecordingRule
: RuleType.GrafanaManagedAlertRule;
} else if (isRecordingRulerRule(rule.rulerRule)) {
ruleType = RuleType.CloudRecordingRule;
} else {
@ -89,7 +92,7 @@ const Details = ({ rule }: DetailsProps) => {
)}
</MetaText>
<MetaText direction="column">
{!isRecordingRulerRule(rule.rulerRule) && (
{!isRecordingRulerRule(rule.rulerRule) && !isGrafanaRecordingRule(rule.rulerRule) && (
<>
Pending period
<Text color="primary">{rule.rulerRule?.for ?? '0s'}</Text>
@ -116,7 +119,7 @@ const Details = ({ rule }: DetailsProps) => {
</div>
{/* annotations go here */}
{annotations && (
{annotations && !isRecordingRulerRule(rule.rulerRule) && !isGrafanaRecordingRule(rule.rulerRule) && (
<>
<Text variant="h4">Annotations</Text>
{Object.keys(annotations).length === 0 ? (

View File

@ -9,6 +9,7 @@ import {
CombinedRule,
CombinedRuleGroup,
CombinedRuleWithLocation,
EditableRuleIdentifier,
GrafanaRuleIdentifier,
PromRuleWithLocation,
PrometheusRuleIdentifier,
@ -19,7 +20,6 @@ import {
RuleNamespace,
RuleWithLocation,
RulesSource,
EditableRuleIdentifier,
} from 'app/types/unified-alerting';
import {
GrafanaAlertState,
@ -81,10 +81,6 @@ export function isGrafanaRulerRule(rule?: RulerRuleDTO | PostableRuleDTO): rule
return typeof rule === 'object' && 'grafana_alert' in rule;
}
export function isGrafanaRecordingRulerRule(rule?: RulerRuleDTO) {
return typeof rule === 'object' && 'grafana_alert' in rule && 'record' in rule.grafana_alert;
}
export function isCloudRulerRule(rule?: RulerRuleDTO | PostableRuleDTO): rule is RulerCloudRuleDTO {
return typeof rule === 'object' && !isGrafanaRulerRule(rule);
}