chore(ui): add filter classifications option in tags container (#13668)

This commit is contained in:
Sachin Chaurasiya 2023-10-20 20:02:30 +05:30 committed by GitHub
parent 8cf8720a9d
commit 096a08ce57
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 32 additions and 13 deletions

View File

@ -30,6 +30,7 @@ export type TagsContainerV2Props = {
children?: ReactElement;
displayType?: DisplayType;
layoutType?: LayoutType;
filterClassifications?: string[];
onSelectionChange?: (selectedTags: EntityTags[]) => Promise<void>;
onThreadLinkSelect?: (value: string, threadType?: ThreadType) => void;
};

View File

@ -22,7 +22,10 @@ import { ReactComponent as IconComments } from '../../../assets/svg/comment.svg'
import { ReactComponent as EditIcon } from '../../../assets/svg/edit-new.svg';
import { ReactComponent as IconRequest } from '../../../assets/svg/request-icon.svg';
import { TableTagsProps } from '../../../components/TableTags/TableTags.interface';
import { DE_ACTIVE_COLOR } from '../../../constants/constants';
import {
DE_ACTIVE_COLOR,
KNOWLEDGE_CENTER_CLASSIFICATION,
} from '../../../constants/constants';
import { TAG_CONSTANT, TAG_START_WITH } from '../../../constants/Tag.constants';
import { SearchIndex } from '../../../enums/search.enum';
import { GlossaryTerm } from '../../../generated/entity/data/glossaryTerm';
@ -63,6 +66,7 @@ const TagsContainerV2 = ({
onSelectionChange,
onThreadLinkSelect,
children,
filterClassifications = [KNOWLEDGE_CENTER_CLASSIFICATION],
}: TagsContainerV2Props) => {
const history = useHistory();
const [form] = Form.useForm();
@ -131,7 +135,7 @@ const TagsContainerV2 = ({
const fetchAPI = useCallback(
(searchValue: string, page: number) => {
if (tagType === TagSource.Classification) {
return fetchTagsElasticSearch(searchValue, page);
return fetchTagsElasticSearch(searchValue, page, filterClassifications);
} else {
return fetchGlossaryList(searchValue, page);
}

View File

@ -840,3 +840,5 @@ export const ICON_DIMENSION = {
export const COMMON_ICON_STYLES: CSSProperties = {
verticalAlign: 'middle',
};
export const KNOWLEDGE_CENTER_CLASSIFICATION = 'KnowledgeCenter';

View File

@ -295,15 +295,18 @@ export const tagRender = (customTagProps: CustomTagProps) => {
);
};
export const fetchTagsElasticSearch = async (
searchText: string,
page: number
): Promise<{
data: {
type ResultType = {
label: string;
value: string;
data: Tag;
}[];
};
export const fetchTagsElasticSearch = async (
searchText: string,
page: number,
filterClassifications?: string[]
): Promise<{
data: ResultType[];
paging: Paging;
}> => {
const res = await searchQuery({
@ -316,11 +319,20 @@ export const fetchTagsElasticSearch = async (
});
return {
data: res.hits.hits.map(({ _source }) => ({
data: res.hits.hits.reduce((result: ResultType[], { _source }) => {
const classificationName =
_source.classification?.fullyQualifiedName ?? '';
if (!filterClassifications?.includes(classificationName)) {
result.push({
label: _source.fullyQualifiedName ?? '',
value: _source.fullyQualifiedName ?? '',
data: _source,
})),
});
}
return result;
}, []),
paging: {
total: res.hits.total.value,
},