From 2d6ab03e4f15ba05e3699a72b304de2c4ee1051a Mon Sep 17 00:00:00 2001 From: Gilles De Mey Date: Fri, 6 May 2022 15:39:24 +0200 Subject: [PATCH] Alerting: automatically select last expression (#48787) --- .../components/rule-editor/ConditionField.tsx | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/public/app/features/alerting/unified/components/rule-editor/ConditionField.tsx b/public/app/features/alerting/unified/components/rule-editor/ConditionField.tsx index 6df7254f6ca..fdf03057116 100644 --- a/public/app/features/alerting/unified/components/rule-editor/ConditionField.tsx +++ b/public/app/features/alerting/unified/components/rule-editor/ConditionField.tsx @@ -29,9 +29,20 @@ export const ConditionField: FC = () => { [queries] ); + const expressions = useMemo(() => { + return queries.filter((query) => query.datasourceUid === ExpressionDatasourceUID); + }, [queries]); + + // automatically use the last expression when new expressions have been added + useEffect(() => { + const lastExpression = last(expressions); + if (lastExpression) { + setValue('condition', lastExpression.refId, { shouldValidate: true }); + } + }, [expressions, setValue]); + // reset condition if option no longer exists or if it is unset, but there are options available useEffect(() => { - const expressions = queries.filter((query) => query.datasourceUid === ExpressionDatasourceUID); const lastExpression = last(expressions); const conditionExists = options.find(({ value }) => value === condition); @@ -40,7 +51,7 @@ export const ConditionField: FC = () => { } else if (!condition && lastExpression) { setValue('condition', lastExpression.refId, { shouldValidate: true }); } - }, [condition, options, queries, setValue]); + }, [condition, expressions, options, setValue]); return (