From a47235581f32f915e331a63959d1e4f0af07095b Mon Sep 17 00:00:00 2001 From: Karan Hotchandani <33024356+karanh37@users.noreply.github.com> Date: Wed, 30 Oct 2024 20:44:37 +0530 Subject: [PATCH] add debounce on autocomplete in advanced search (#18471) --- .../ui/src/utils/AdvancedSearchClassBase.ts | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/openmetadata-ui/src/main/resources/ui/src/utils/AdvancedSearchClassBase.ts b/openmetadata-ui/src/main/resources/ui/src/utils/AdvancedSearchClassBase.ts index ac91f66f694..57e99cda304 100644 --- a/openmetadata-ui/src/main/resources/ui/src/utils/AdvancedSearchClassBase.ts +++ b/openmetadata-ui/src/main/resources/ui/src/utils/AdvancedSearchClassBase.ts @@ -12,7 +12,7 @@ */ import { t } from 'i18next'; -import { isEmpty, sortBy } from 'lodash'; +import { debounce, isEmpty, sortBy } from 'lodash'; import { AsyncFetchListValues, AsyncFetchListValuesResult, @@ -115,8 +115,9 @@ class AdvancedSearchClassBase { entityField: EntityFields; suggestField?: SuggestionField; }) => SelectFieldSettings['asyncFetch'] = ({ searchIndex, entityField }) => { - return (search) => { - return getAggregateFieldOptions( + // Wrapping the fetch function in a debounce of 300 ms + const debouncedFetch = debounce((search, callback) => { + getAggregateFieldOptions( searchIndex, entityField, search ?? '', @@ -125,13 +126,19 @@ class AdvancedSearchClassBase { const buckets = response.data.aggregations[`sterms#${entityField}`].buckets; - return { + callback({ values: buckets.map((bucket) => ({ value: bucket.key, title: bucket.label ?? bucket.key, })), hasMore: false, - }; + }); + }); + }, 300); + + return (search) => { + return new Promise((resolve) => { + debouncedFetch(search, resolve); }); }; };