From 5d903b548717c470bac7a9c86f16623d847cbd9c Mon Sep 17 00:00:00 2001 From: Shaheer Kochai Date: Fri, 16 Aug 2024 14:12:22 +0430 Subject: [PATCH] NOOP to Count in alert creation from logs (#5464) * fix: change NOOP to count on creating alert from Logs and traces * fix: change 'count' back to 'noop' in Traces page, in case there is a single query * fix: handle the query modification in useGetCompositeQueryParam instead of Filter * chore: use values StringOperators enum instead of hard coded strings * Revert "fix: handle the query modification in useGetCompositeQueryParam instead of Filter" This reverts commit 5bb837ec2756a8bae11a208dc31ebc504157a57b. * Revert "fix: change 'count' back to 'noop' in Traces page, in case there is a single query" This reverts commit 5e506dbd35e72827eee177472dada2c004496432. --- .../ExplorerOptions/ExplorerOptions.tsx | 25 ++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/frontend/src/container/ExplorerOptions/ExplorerOptions.tsx b/frontend/src/container/ExplorerOptions/ExplorerOptions.tsx index 138694058e..f34a4470a9 100644 --- a/frontend/src/container/ExplorerOptions/ExplorerOptions.tsx +++ b/frontend/src/container/ExplorerOptions/ExplorerOptions.tsx @@ -33,6 +33,7 @@ import useErrorNotification from 'hooks/useErrorNotification'; import { useHandleExplorerTabChange } from 'hooks/useHandleExplorerTabChange'; import { useNotifications } from 'hooks/useNotifications'; import { mapCompositeQueryFromQuery } from 'lib/newQueryBuilder/queryBuilderMappers/mapCompositeQueryFromQuery'; +import { cloneDeep } from 'lodash-es'; import { Check, ConciergeBell, @@ -56,7 +57,7 @@ import { useHistory } from 'react-router-dom'; import { AppState } from 'store/reducers'; import { Dashboard } from 'types/api/dashboard/getAll'; import { Query } from 'types/api/queryBuilder/queryBuilderData'; -import { DataSource } from 'types/common/queryBuilder'; +import { DataSource, StringOperators } from 'types/common/queryBuilder'; import AppReducer from 'types/reducer/app'; import { USER_ROLES } from 'types/roles'; @@ -120,6 +121,21 @@ function ExplorerOptions({ const { role } = useSelector((state) => state.app); + const handleConditionalQueryModification = useCallback((): string => { + if ( + query?.builder?.queryData?.[0]?.aggregateOperator !== StringOperators.NOOP + ) { + return JSON.stringify(query); + } + + // Modify aggregateOperator to count, as noop is not supported in alerts + const modifiedQuery = cloneDeep(query); + + modifiedQuery.builder.queryData[0].aggregateOperator = StringOperators.COUNT; + + return JSON.stringify(modifiedQuery); + }, [query]); + const onCreateAlertsHandler = useCallback(() => { if (sourcepage === DataSource.TRACES) { logEvent('Traces Explorer: Create alert', { @@ -130,13 +146,16 @@ function ExplorerOptions({ panelType, }); } + + const stringifiedQuery = handleConditionalQueryModification(); + history.push( `${ROUTES.ALERTS_NEW}?${QueryParams.compositeQuery}=${encodeURIComponent( - JSON.stringify(query), + stringifiedQuery, )}`, ); // eslint-disable-next-line react-hooks/exhaustive-deps - }, [history, query]); + }, [handleConditionalQueryModification, history]); const onCancel = (value: boolean) => (): void => { onModalToggle(value);