From fc037e1798ac049c8a971a1b43b50830cc4e74e5 Mon Sep 17 00:00:00 2001 From: Peter Holmberg Date: Tue, 11 Jan 2022 09:46:21 +0100 Subject: [PATCH] Alerting: Add delete to rule edit (#43673) --- .../components/rule-editor/AlertRuleForm.tsx | 37 +++++++++++++++++-- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/public/app/features/alerting/unified/components/rule-editor/AlertRuleForm.tsx b/public/app/features/alerting/unified/components/rule-editor/AlertRuleForm.tsx index dfb7cfebebe..a4741fa17dc 100644 --- a/public/app/features/alerting/unified/components/rule-editor/AlertRuleForm.tsx +++ b/public/app/features/alerting/unified/components/rule-editor/AlertRuleForm.tsx @@ -1,6 +1,6 @@ -import React, { FC, useMemo } from 'react'; +import React, { FC, useMemo, useState } from 'react'; import { GrafanaTheme2, AppEvents } from '@grafana/data'; -import { PageToolbar, Button, useStyles2, CustomScrollbar, Spinner } from '@grafana/ui'; +import { PageToolbar, Button, useStyles2, CustomScrollbar, Spinner, ConfirmModal } from '@grafana/ui'; import { css } from '@emotion/css'; import { AlertTypeStep } from './AlertTypeStep'; @@ -11,7 +11,7 @@ import { useForm, FormProvider } from 'react-hook-form'; import { RuleFormType, RuleFormValues } from '../../types/rule-form'; import { useUnifiedAlertingSelector } from '../../hooks/useUnifiedAlertingSelector'; import { initialAsyncRequestState } from '../../utils/redux'; -import { saveRuleFormAction } from '../../state/actions'; +import { deleteRuleAction, saveRuleFormAction } from '../../state/actions'; import { RuleWithLocation } from 'app/types/unified-alerting'; import { useDispatch } from 'react-redux'; import { useCleanup } from 'app/core/hooks/useCleanup'; @@ -22,6 +22,7 @@ import { useQueryParams } from 'app/core/hooks/useQueryParams'; import { appEvents } from 'app/core/core'; import { CloudConditionsStep } from './CloudConditionsStep'; import { GrafanaConditionsStep } from './GrafanaConditionsStep'; +import * as ruleId from '../../utils/rule-id'; type Props = { existing?: RuleWithLocation; @@ -33,6 +34,7 @@ export const AlertRuleForm: FC = ({ existing }) => { const [queryParams] = useQueryParams(); const returnTo: string = (queryParams['returnTo'] as string | undefined) ?? '/alerting/list'; + const [showDeleteModal, setShowDeleteModal] = useState(false); const defaultValues: RuleFormValues = useMemo(() => { if (existing) { @@ -82,6 +84,19 @@ export const AlertRuleForm: FC = ({ existing }) => { ); }; + const deleteRule = () => { + if (existing) { + const identifier = ruleId.fromRulerRule( + existing.ruleSourceName, + existing.namespace, + existing.group.name, + existing.rule + ); + + dispatch(deleteRuleAction(identifier, { navigateTo: '/alerting/list' })); + } + }; + const onInvalid = () => { appEvents.emit(AppEvents.alertError, ['There are errors in the form. Please correct them and try again!']); }; @@ -95,6 +110,11 @@ export const AlertRuleForm: FC = ({ existing }) => { Cancel + {existing ? ( + + ) : null}