From d7a6607a25f6c6c5e08576f72f27deeabaf38d97 Mon Sep 17 00:00:00 2001 From: Shaheer Kochai Date: Wed, 26 Mar 2025 22:30:54 +0430 Subject: [PATCH] fix: use search v2 component for traces data source & minor improvements to search v2 component (#7404) --- .../QueryBuilder/components/Query/Query.tsx | 2 +- .../QueryBuilderSearchDropdown.tsx | 7 ++++- .../QueryBuilderSearchV2.styles.scss | 5 ++++ .../QueryBuilderSearchV2.tsx | 26 ++++++++++++++++--- frontend/src/hooks/queryBuilder/useOptions.ts | 6 +---- 5 files changed, 35 insertions(+), 11 deletions(-) diff --git a/frontend/src/container/QueryBuilder/components/Query/Query.tsx b/frontend/src/container/QueryBuilder/components/Query/Query.tsx index 23c5f09528..f1ce6aeaa8 100644 --- a/frontend/src/container/QueryBuilder/components/Query/Query.tsx +++ b/frontend/src/container/QueryBuilder/components/Query/Query.tsx @@ -453,7 +453,7 @@ export const Query = memo(function Query({ )} - {query.dataSource === DataSource.LOGS ? ( + {[DataSource.LOGS, DataSource.TRACES].includes(query.dataSource) ? ( void; currentFilterItem?: ITag; + isLogsDataSource: boolean; } export default function QueryBuilderSearchDropdown( @@ -38,11 +40,14 @@ export default function QueryBuilderSearchDropdown( exampleQueries, options, onChange, + isLogsDataSource, } = props; const userOs = getUserOperatingSystem(); return ( <> -
+
{!currentFilterItem?.key ? (
Suggested Filters
) : !currentFilterItem?.op ? ( diff --git a/frontend/src/container/QueryBuilder/filters/QueryBuilderSearchV2/QueryBuilderSearchV2.styles.scss b/frontend/src/container/QueryBuilder/filters/QueryBuilderSearchV2/QueryBuilderSearchV2.styles.scss index c7a96456e9..49f04baf0e 100644 --- a/frontend/src/container/QueryBuilder/filters/QueryBuilderSearchV2/QueryBuilderSearchV2.styles.scss +++ b/frontend/src/container/QueryBuilder/filters/QueryBuilderSearchV2/QueryBuilderSearchV2.styles.scss @@ -11,6 +11,11 @@ .rc-virtual-list-holder { height: 115px; } + &.non-logs-data-source { + .rc-virtual-list-holder { + height: 256px; + } + } } } diff --git a/frontend/src/container/QueryBuilder/filters/QueryBuilderSearchV2/QueryBuilderSearchV2.tsx b/frontend/src/container/QueryBuilder/filters/QueryBuilderSearchV2/QueryBuilderSearchV2.tsx index f85b41b209..322432e6e8 100644 --- a/frontend/src/container/QueryBuilder/filters/QueryBuilderSearchV2/QueryBuilderSearchV2.tsx +++ b/frontend/src/container/QueryBuilder/filters/QueryBuilderSearchV2/QueryBuilderSearchV2.tsx @@ -689,12 +689,29 @@ function QueryBuilderSearchV2( })), ); } else { - setDropdownOptions( - data?.payload?.attributeKeys?.map((key) => ({ + setDropdownOptions([ + // Add user typed option if it doesn't exist in the payload + ...(!isEmpty(tagKey) && + !data?.payload?.attributeKeys?.some((val) => isEqual(val.key, tagKey)) + ? [ + { + label: tagKey, + value: { + key: tagKey, + dataType: DataTypes.EMPTY, + type: '', + isColumn: false, + isJSON: false, + }, + }, + ] + : []), + // Map existing attribute keys from payload + ...(data?.payload?.attributeKeys?.map((key) => ({ label: key.key, value: key, - })) || [], - ); + })) || []), + ]); } } if (currentState === DropdownState.OPERATOR) { @@ -964,6 +981,7 @@ function QueryBuilderSearchV2( exampleQueries={suggestionsData?.payload?.example_queries || []} tags={tags} currentFilterItem={currentFilterItem} + isLogsDataSource={isLogsDataSource} /> )} > diff --git a/frontend/src/hooks/queryBuilder/useOptions.ts b/frontend/src/hooks/queryBuilder/useOptions.ts index 7f50f1881b..e990f789de 100644 --- a/frontend/src/hooks/queryBuilder/useOptions.ts +++ b/frontend/src/hooks/queryBuilder/useOptions.ts @@ -170,11 +170,7 @@ export const useOptions = ( (option, index, self) => index === self.findIndex( - (o) => - // to remove duplicate & empty options from list - o.label === option.label && - o.value === option.value && - o.dataType?.toLowerCase() === option.dataType?.toLowerCase(), // handle case sensitivity + (o) => o.label === option.label && o.value === option.value, // to remove duplicate & empty options from list ) && option.value !== '', ) || [] ).map((option) => {