diff --git a/ui/src/pages/Alerts/RuleEditor/TriggerStep.tsx b/ui/src/pages/Alerts/RuleEditor/TriggerStep.tsx index 7ab844be..77da5c56 100644 --- a/ui/src/pages/Alerts/RuleEditor/TriggerStep.tsx +++ b/ui/src/pages/Alerts/RuleEditor/TriggerStep.tsx @@ -1,13 +1,85 @@ +import { useState } from 'react'; +import { Button, FormField, Input, useToast } from '@cameleer/design-system'; +import { useTestEvaluate } from '../../../api/queries/alertRules'; import type { FormState } from './form-state'; export function TriggerStep({ - form: _form, - setForm: _setForm, - ruleId: _ruleId, + form, + setForm, + ruleId, }: { form: FormState; setForm: (f: FormState) => void; ruleId?: string; }) { - return
Trigger step — TODO Task 22
; + const testEvaluate = useTestEvaluate(); + const { toast } = useToast(); + const [lastResult, setLastResult] = useState(null); + + const onTest = async () => { + if (!ruleId) { + toast({ title: 'Save rule first to run test evaluate', variant: 'error' }); + return; + } + try { + const result = await testEvaluate.mutateAsync({ id: ruleId, req: {} }); + setLastResult(JSON.stringify(result, null, 2)); + } catch (e) { + toast({ title: 'Test-evaluate failed', description: String(e), variant: 'error' }); + } + }; + + return ( +
+ + setForm({ ...form, evaluationIntervalSeconds: Number(e.target.value) })} + /> + + + setForm({ ...form, forDurationSeconds: Number(e.target.value) })} + /> + + + setForm({ ...form, reNotifyMinutes: Number(e.target.value) })} + /> + +
+ + {!ruleId && ( +

+ Save the rule first to enable test-evaluate. +

+ )} + {lastResult && ( +
+            {lastResult}
+          
+ )} +
+
+ ); }