From dd1375751114ccb3d25ccaf37cd6060ce07d791a Mon Sep 17 00:00:00 2001 From: SuZhou-Joe Date: Wed, 8 Jan 2025 16:12:06 +0800 Subject: [PATCH 1/5] feat: disable query assistant when dataset type is not supported Signed-off-by: SuZhou-Joe --- .../utils/create_extension.test.tsx | 18 ++++++++++++++++++ .../query_assist/utils/create_extension.tsx | 11 +++++++++-- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/src/plugins/query_enhancements/public/query_assist/utils/create_extension.test.tsx b/src/plugins/query_enhancements/public/query_assist/utils/create_extension.test.tsx index b9f190fccda3..f7b3dcde6c79 100644 --- a/src/plugins/query_enhancements/public/query_assist/utils/create_extension.test.tsx +++ b/src/plugins/query_enhancements/public/query_assist/utils/create_extension.test.tsx @@ -230,4 +230,22 @@ describe('CreateExtension', () => { expect(screen.getByText('QueryAssistSummary')).toBeInTheDocument(); }); + + it('should return disabled when dataset is not supported', async () => { + httpMock.get.mockResolvedValueOnce({ configuredLanguages: ['PPL'] }); + const extension = createQueryAssistExtension(coreSetupMock, dataMock, config); + const isEnabled = await firstValueFrom( + extension.isEnabled$({ + ...dependencies, + query: { + ...mockQueryWithIndexPattern, + dataset: { + ...mockQueryWithIndexPattern.dataset, + type: 'S3', + }, + }, + }) + ); + expect(isEnabled).toBeFalsy(); + }); }); diff --git a/src/plugins/query_enhancements/public/query_assist/utils/create_extension.tsx b/src/plugins/query_enhancements/public/query_assist/utils/create_extension.tsx index 04ec1941dc80..9bf06eb77c56 100644 --- a/src/plugins/query_enhancements/public/query_assist/utils/create_extension.tsx +++ b/src/plugins/query_enhancements/public/query_assist/utils/create_extension.tsx @@ -88,6 +88,8 @@ const getAvailableLanguages$ = (http: HttpSetup, data: DataPublicPluginSetup) => }) ); +const queryAssistantSupportedDatasetTypes = ['INDEXES', 'INDEX_PATTERN']; + export const createQueryAssistExtension = ( core: CoreSetup, data: DataPublicPluginSetup, @@ -115,8 +117,13 @@ export const createQueryAssistExtension = ( }; } }, - isEnabled$: () => - getAvailableLanguages$(http, data).pipe(map((languages) => languages.length > 0)), + isEnabled$: (dependencies) => { + const query = dependencies.query; + if (!queryAssistantSupportedDatasetTypes.includes(query.dataset?.type || '')) { + return new BehaviorSubject(false); + } + return getAvailableLanguages$(http, data).pipe(map((languages) => languages.length > 0)); + }, getComponent: (dependencies) => { // only show the component if user is on a supported language. return ( From 1b4d21ca22a8fb45a9f220b2e50f83aca1419a9c Mon Sep 17 00:00:00 2001 From: "opensearch-changeset-bot[bot]" <154024398+opensearch-changeset-bot[bot]@users.noreply.github.com> Date: Wed, 8 Jan 2025 08:28:52 +0000 Subject: [PATCH 2/5] Changeset file for PR #9157 created/updated --- changelogs/fragments/9157.yml | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 changelogs/fragments/9157.yml diff --git a/changelogs/fragments/9157.yml b/changelogs/fragments/9157.yml new file mode 100644 index 000000000000..652721e89e72 --- /dev/null +++ b/changelogs/fragments/9157.yml @@ -0,0 +1,2 @@ +fix: +- Disable query assistant when dataset type is not supported ([#9157](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/9157)) \ No newline at end of file From 3762ccc8f4e66dff0752f4ce8f94487287585f55 Mon Sep 17 00:00:00 2001 From: SuZhou-Joe Date: Wed, 8 Jan 2025 18:09:47 +0800 Subject: [PATCH 3/5] feat: use constant Signed-off-by: SuZhou-Joe --- .../public/query_assist/utils/create_extension.tsx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/plugins/query_enhancements/public/query_assist/utils/create_extension.tsx b/src/plugins/query_enhancements/public/query_assist/utils/create_extension.tsx index 9bf06eb77c56..d6283f332d44 100644 --- a/src/plugins/query_enhancements/public/query_assist/utils/create_extension.tsx +++ b/src/plugins/query_enhancements/public/query_assist/utils/create_extension.tsx @@ -88,7 +88,10 @@ const getAvailableLanguages$ = (http: HttpSetup, data: DataPublicPluginSetup) => }) ); -const queryAssistantSupportedDatasetTypes = ['INDEXES', 'INDEX_PATTERN']; +const queryAssistantSupportedDatasetTypes = [ + DEFAULT_DATA.SET_TYPES.INDEX, + DEFAULT_DATA.SET_TYPES.INDEX_PATTERN, +]; export const createQueryAssistExtension = ( core: CoreSetup, From 1fdc932c9270b7caeb9edf7a73759f0787299d3c Mon Sep 17 00:00:00 2001 From: SuZhou-Joe Date: Wed, 8 Jan 2025 18:11:39 +0800 Subject: [PATCH 4/5] feat: optimize code Signed-off-by: SuZhou-Joe --- .../public/query_assist/utils/create_extension.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/plugins/query_enhancements/public/query_assist/utils/create_extension.tsx b/src/plugins/query_enhancements/public/query_assist/utils/create_extension.tsx index d6283f332d44..13f8c097f44b 100644 --- a/src/plugins/query_enhancements/public/query_assist/utils/create_extension.tsx +++ b/src/plugins/query_enhancements/public/query_assist/utils/create_extension.tsx @@ -6,7 +6,7 @@ import { i18n } from '@osd/i18n'; import { HttpSetup } from 'opensearch-dashboards/public'; import React, { useEffect, useState } from 'react'; -import { BehaviorSubject } from 'rxjs'; +import { BehaviorSubject, of } from 'rxjs'; import { distinctUntilChanged, map, startWith, switchMap } from 'rxjs/operators'; import { DATA_STRUCTURE_META_TYPES, DEFAULT_DATA } from '../../../../data/common'; import { @@ -123,7 +123,7 @@ export const createQueryAssistExtension = ( isEnabled$: (dependencies) => { const query = dependencies.query; if (!queryAssistantSupportedDatasetTypes.includes(query.dataset?.type || '')) { - return new BehaviorSubject(false); + return of(false); } return getAvailableLanguages$(http, data).pipe(map((languages) => languages.length > 0)); }, From 6acb09d652192d250e1ac0f0ae0bb8a0b01ae3e2 Mon Sep 17 00:00:00 2001 From: SuZhou-Joe Date: Thu, 23 Jan 2025 15:40:23 +0800 Subject: [PATCH 5/5] feat: optimize code Signed-off-by: SuZhou-Joe --- .../public/query_assist/utils/constant.ts | 7 +++++++ .../public/query_assist/utils/create_extension.tsx | 10 +++------- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/plugins/query_enhancements/public/query_assist/utils/constant.ts b/src/plugins/query_enhancements/public/query_assist/utils/constant.ts index 4a3f26f1a439..14410594d44a 100644 --- a/src/plugins/query_enhancements/public/query_assist/utils/constant.ts +++ b/src/plugins/query_enhancements/public/query_assist/utils/constant.ts @@ -3,4 +3,11 @@ * SPDX-License-Identifier: Apache-2.0 */ +import { DEFAULT_DATA } from '../../../../data/common'; + export const DATA2SUMMARY_AGENT_CONFIG_ID = 'os_data2summary'; + +export const QUERY_ASSISTANT_SUPPORT_DATASET_TYPES = [ + DEFAULT_DATA.SET_TYPES.INDEX, + DEFAULT_DATA.SET_TYPES.INDEX_PATTERN, +]; diff --git a/src/plugins/query_enhancements/public/query_assist/utils/create_extension.tsx b/src/plugins/query_enhancements/public/query_assist/utils/create_extension.tsx index 13f8c097f44b..a9a4f1dfd673 100644 --- a/src/plugins/query_enhancements/public/query_assist/utils/create_extension.tsx +++ b/src/plugins/query_enhancements/public/query_assist/utils/create_extension.tsx @@ -21,6 +21,7 @@ import { QueryAssistBanner, QueryAssistBar, QueryAssistSummary } from '../compon import { UsageCollectionSetup } from '../../../../usage_collection/public'; import { QueryAssistContext } from '../hooks/use_query_assist'; import { CoreSetup } from '../../../../../core/public'; +import { QUERY_ASSISTANT_SUPPORT_DATASET_TYPES } from './constant'; const [getAvailableLanguagesForDataSource, clearCache] = (() => { const availableLanguagesByDataSource: Map = new Map(); @@ -79,7 +80,7 @@ const getAvailableLanguages$ = (http: HttpSetup, data: DataPublicPluginSetup) => if ( query.dataset?.dataSource?.type !== DEFAULT_DATA.SOURCE_TYPES.OPENSEARCH && // datasource is MDS OpenSearch query.dataset?.dataSource?.type !== 'DATA_SOURCE' && // datasource is MDS OpenSearch when using indexes - query.dataset?.type !== DEFAULT_DATA.SET_TYPES.INDEX_PATTERN // dataset is index pattern + !QUERY_ASSISTANT_SUPPORT_DATASET_TYPES.includes(query.dataset?.type || '') ) return []; @@ -88,11 +89,6 @@ const getAvailableLanguages$ = (http: HttpSetup, data: DataPublicPluginSetup) => }) ); -const queryAssistantSupportedDatasetTypes = [ - DEFAULT_DATA.SET_TYPES.INDEX, - DEFAULT_DATA.SET_TYPES.INDEX_PATTERN, -]; - export const createQueryAssistExtension = ( core: CoreSetup, data: DataPublicPluginSetup, @@ -122,7 +118,7 @@ export const createQueryAssistExtension = ( }, isEnabled$: (dependencies) => { const query = dependencies.query; - if (!queryAssistantSupportedDatasetTypes.includes(query.dataset?.type || '')) { + if (!QUERY_ASSISTANT_SUPPORT_DATASET_TYPES.includes(query.dataset?.type || '')) { return of(false); } return getAvailableLanguages$(http, data).pipe(map((languages) => languages.length > 0));