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}
+
+ )}
+
+
+ );
}