From 13eabfe2db40c583591b056bec94dad9780c9054 Mon Sep 17 00:00:00 2001 From: Aniket Katkar <51777795+aniketkatkar97@users.noreply.github.com> Date: Tue, 2 Aug 2022 21:47:13 +0530 Subject: [PATCH] Fix(Ui): Fixed the teams search irrelevant suggestions issue (#6516) * Fixed the issue where teams suggestions when searched were not showing relevant results * Fixed isJoinable param issue --- .../resources/ui/src/axiosAPIs/miscAPI.ts | 10 ++++- .../TeamsSelectable/TeamsSelectable.tsx | 42 +++++++------------ 2 files changed, 23 insertions(+), 29 deletions(-) diff --git a/openmetadata-ui/src/main/resources/ui/src/axiosAPIs/miscAPI.ts b/openmetadata-ui/src/main/resources/ui/src/axiosAPIs/miscAPI.ts index 1eab36cc869..680d9fe4455 100644 --- a/openmetadata-ui/src/main/resources/ui/src/axiosAPIs/miscAPI.ts +++ b/openmetadata-ui/src/main/resources/ui/src/axiosAPIs/miscAPI.ts @@ -148,10 +148,16 @@ export const getTeamsByQuery = async (params: { q: string; from?: number; size?: number; - isJoinable?: boolean; }) => { const response = await APIClient.get(`/search/query`, { - params: { index: SearchIndex.TEAM, ...params }, + params: { + index: SearchIndex.TEAM, + ...params, + // eslint-disable-next-line @typescript-eslint/camelcase + sort_field: 'name.keyword', + // eslint-disable-next-line @typescript-eslint/camelcase + sort_order: 'asc', + }, }); return response.data; diff --git a/openmetadata-ui/src/main/resources/ui/src/components/TeamsSelectable/TeamsSelectable.tsx b/openmetadata-ui/src/main/resources/ui/src/components/TeamsSelectable/TeamsSelectable.tsx index 960b3d0290f..210225a6a48 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/TeamsSelectable/TeamsSelectable.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/TeamsSelectable/TeamsSelectable.tsx @@ -14,10 +14,9 @@ import { SelectableOption } from 'Models'; import React, { useState } from 'react'; import AsyncSelect from 'react-select/async'; -import { getSuggestedTeams, getTeamsByQuery } from '../../axiosAPIs/miscAPI'; +import { getTeamsByQuery } from '../../axiosAPIs/miscAPI'; import { Team } from '../../generated/entity/teams/team'; import { EntityReference } from '../../generated/type/entityReference'; -import { formatTeamsResponse } from '../../utils/APIUtils'; import { getEntityName } from '../../utils/CommonUtils'; import SVGIcons from '../../utils/SvgUtils'; import { reactSingleSelectCustomStyle } from '../common/react-select-component/reactSelectCustomStyle'; @@ -49,11 +48,7 @@ const TeamsSelectable = ({ }; const getOptions = (teams: Team[]) => { - const filteredTeams = filterJoinable - ? teams.filter((team) => team.isJoinable) - : teams; - - return filteredTeams.map((team) => ({ + return teams.map((team) => ({ label: getEntityName(team as EntityReference), value: team.id, })); @@ -61,26 +56,19 @@ const TeamsSelectable = ({ const loadOptions = (text: string) => { return new Promise((resolve) => { - if (text) { - getSuggestedTeams(text).then((res) => { - const teams: Team[] = formatTeamsResponse( - res.data.suggest['metadata-suggest'][0].options - ); - resolve(getOptions(teams)); - }); - } else { - getTeamsByQuery({ - q: '*', - from: 0, - size: TEAM_OPTION_PAGE_LIMIT, - isJoinable: filterJoinable, - }).then((res) => { - const teams: Team[] = - res.hits.hits.map((t: { _source: Team }) => t._source) || []; - showTeamsAlert && setNoTeam(teams.length === 0); - resolve(getOptions(teams)); - }); - } + const trimmedText = text.trim(); + getTeamsByQuery({ + q: + (trimmedText ? `*${trimmedText}*` : '*') + + (filterJoinable ? ` AND isJoinable:true` : ''), + from: 0, + size: TEAM_OPTION_PAGE_LIMIT, + }).then((res) => { + const teams: Team[] = + res.hits.hits.map((t: { _source: Team }) => t._source) || []; + showTeamsAlert && setNoTeam(teams.length === 0); + resolve(getOptions(teams)); + }); }); };