From 1493cbbb7b65a7f743d19440e70e2049ab6bd721 Mon Sep 17 00:00:00 2001 From: Shailesh Parmar Date: Wed, 1 Dec 2021 16:05:10 +0530 Subject: [PATCH] Feat: Show description on hover of tags (#1418) * Feat: Added description popover on hover of tags * fixed failing test * add popover changes for DBTmodale pages * addressing comments * miner fix for ui * addressing comments --- .../DBTModelDetails.component.tsx | 4 +- .../DBTModelDetails.interface.ts | 3 +- .../DashboardDetails.component.tsx | 10 ++- .../DashboardDetails.interface.ts | 3 +- .../DashboardDetails.test.tsx | 3 +- .../DatasetDetails.component.tsx | 6 +- .../DatasetDetails.interface.ts | 3 +- .../DatasetDetails/DatasetDetails.test.tsx | 3 +- .../DatasetVersion.component.tsx | 6 +- .../DatasetVersion.interface.ts | 3 +- .../EntityInfoDrawer.component.tsx | 2 +- .../EntityTable/EntityTable.component.tsx | 9 +- .../PipelineDetails.component.tsx | 6 +- .../PipelineDetails.interface.ts | 3 +- .../TopicDetails/TopicDetails.component.tsx | 4 +- .../TopicDetails/TopicDetails.interface.ts | 3 +- .../common/description/Description.tsx | 5 +- .../common/entityPageInfo/EntityPageInfo.tsx | 24 ++++-- .../RichTextEditorPreviewer.tsx | 11 ++- .../common/table-data-card/TableDataCard.tsx | 25 ++++-- .../table-data-card/TableDataCardBody.tsx | 21 ++++- .../my-data-details/SchemaTable.tsx | 3 +- .../recently-viewed/RecentlyViewed.tsx | 28 +++---- .../tags-container/tags-container.tsx | 30 ++----- .../ui/src/components/tags/tags.interface.ts | 5 +- .../ui/src/components/tags/tags.test.tsx | 4 +- .../resources/ui/src/components/tags/tags.tsx | 79 ++++++++++++++---- .../resources/ui/src/interface/types.d.ts | 4 +- .../DBTModelDetailsPage.component.tsx | 11 +-- .../DashboardDetailsPage.component.tsx | 13 +-- .../DatasetDetailsPage.component.tsx | 11 +-- .../EntityVersionPage.component.tsx | 11 +-- .../PipelineDetailsPage.component.tsx | 13 +-- .../TopicDetailsPage.component.tsx | 13 +-- .../ui/src/pages/database-details/index.tsx | 83 ++++++++----------- .../resources/ui/src/pages/service/index.tsx | 60 ++++++-------- .../resources/ui/src/pages/tags/index.tsx | 3 +- .../resources/ui/src/utils/TableUtils.tsx | 11 +++ 38 files changed, 316 insertions(+), 223 deletions(-) diff --git a/openmetadata-ui/src/main/resources/ui/src/components/DBTModelDetails/DBTModelDetails.component.tsx b/openmetadata-ui/src/main/resources/ui/src/components/DBTModelDetails/DBTModelDetails.component.tsx index 1c68fde20ca..1108b1b907d 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/DBTModelDetails/DBTModelDetails.component.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/DBTModelDetails/DBTModelDetails.component.tsx @@ -126,7 +126,7 @@ const DBTModelDetails: React.FC = ({ isLink: owner?.type === 'team', openInNewTab: false, }, - { key: 'Tier', value: tier ? tier.split('.')[1] : '' }, + { key: 'Tier', value: tier?.tagFQN ? tier.tagFQN.split('.')[1] : '' }, ]; const onDescriptionEdit = (): void => { @@ -280,7 +280,7 @@ const DBTModelDetails: React.FC = ({ {activeTab === 3 && (
; dbtModelTags: Array; diff --git a/openmetadata-ui/src/main/resources/ui/src/components/DashboardDetails/DashboardDetails.component.tsx b/openmetadata-ui/src/main/resources/ui/src/components/DashboardDetails/DashboardDetails.component.tsx index 540dbc2ef9e..963f8f647e7 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/DashboardDetails/DashboardDetails.component.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/DashboardDetails/DashboardDetails.component.tsx @@ -125,7 +125,7 @@ const DashboardDetails = ({ isLink: owner?.type === 'team', openInNewTab: false, }, - { key: 'Tier', value: tier ? tier.split('.')[1] : '' }, + { key: 'Tier', value: tier?.tagFQN ? tier.tagFQN.split('.')[1] : '' }, { key: `${serviceType} Url`, value: dashboardUrl, @@ -441,7 +441,11 @@ const DashboardDetails = ({ ) : ( - + )} @@ -457,7 +461,7 @@ const DashboardDetails = ({ {activeTab === 2 && (
; dashboardTags: Array; slashedDashboardName: TitleBreadcrumbProps['titleLinks']; diff --git a/openmetadata-ui/src/main/resources/ui/src/components/DashboardDetails/DashboardDetails.test.tsx b/openmetadata-ui/src/main/resources/ui/src/components/DashboardDetails/DashboardDetails.test.tsx index fc1b21cb5f4..ab6a1079783 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/DashboardDetails/DashboardDetails.test.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/DashboardDetails/DashboardDetails.test.tsx @@ -16,6 +16,7 @@ import { TableDetail } from 'Models'; import React from 'react'; import { MemoryRouter } from 'react-router-dom'; import { Dashboard } from '../../generated/entity/data/dashboard'; +import { TagLabel } from '../../generated/type/tagLabel'; import DashboardDetails from './DashboardDetails.component'; const mockUserTeam = [ @@ -48,7 +49,7 @@ const DashboardDetailsProps = { activeTab: 1, owner: {} as TableDetail['owner'], description: '', - tier: '', + tier: {} as TagLabel, followers: [], dashboardTags: [], slashedDashboardName: [], diff --git a/openmetadata-ui/src/main/resources/ui/src/components/DatasetDetails/DatasetDetails.component.tsx b/openmetadata-ui/src/main/resources/ui/src/components/DatasetDetails/DatasetDetails.component.tsx index 76873269972..69795d92168 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/DatasetDetails/DatasetDetails.component.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/DatasetDetails/DatasetDetails.component.tsx @@ -204,7 +204,7 @@ const DatasetDetails: React.FC = ({ isLink: owner?.type === 'team', openInNewTab: false, }, - { key: 'Tier', value: tier ? tier.split('.')[1] : '' }, + { key: 'Tier', value: tier?.tagFQN ? tier.tagFQN.split('.')[1] : '' }, { key: 'Usage', value: usage }, { key: 'Queries', value: `${weeklyUsageCount} past week` }, { @@ -338,7 +338,7 @@ const DatasetDetails: React.FC = ({ followHandler={followTable} isFollowing={isFollowing} tags={tableTags} - tier={tier || ''} + tier={tier} titleLinks={slashedTableName} version={version} versionHandler={versionHandler} @@ -411,7 +411,7 @@ const DatasetDetails: React.FC = ({ {activeTab === 4 && (
; diff --git a/openmetadata-ui/src/main/resources/ui/src/components/DatasetDetails/DatasetDetails.test.tsx b/openmetadata-ui/src/main/resources/ui/src/components/DatasetDetails/DatasetDetails.test.tsx index f5e45e0e362..0b56cc47fa3 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/DatasetDetails/DatasetDetails.test.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/DatasetDetails/DatasetDetails.test.tsx @@ -22,6 +22,7 @@ import { TypeUsedToReturnUsageDetailsOfAnEntity, } from '../../generated/entity/data/table'; import { EntityLineage } from '../../generated/type/entityLineage'; +import { TagLabel } from '../../generated/type/tagLabel'; import DatasetDetails from './DatasetDetails.component'; import { DatasetOwner } from './DatasetDetails.interface'; @@ -65,7 +66,7 @@ const DatasetDetailsProps = { tableDetails: {} as Table, tableProfile: [], tableTags: [], - tier: '', + tier: {} as TagLabel, unfollowTableHandler: jest.fn(), usageSummary: {} as TypeUsedToReturnUsageDetailsOfAnEntity, users: [], diff --git a/openmetadata-ui/src/main/resources/ui/src/components/DatasetVersion/DatasetVersion.component.tsx b/openmetadata-ui/src/main/resources/ui/src/components/DatasetVersion/DatasetVersion.component.tsx index 09d8701fbc5..ca107a5c7ba 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/DatasetVersion/DatasetVersion.component.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/DatasetVersion/DatasetVersion.component.tsx @@ -126,8 +126,8 @@ const DatasetVersion: React.FC = ({ oldTier?.tagFQN?.split('.')[1] || '', newTier?.tagFQN?.split('.')[1] || '' ) - : tier - ? tier.split('.')[1] + : tier?.tagFQN + ? tier?.tagFQN.split('.')[1] : '', }, ]; @@ -343,7 +343,7 @@ const DatasetVersion: React.FC = ({ extraInfo={getExtraInfo()} followersList={[]} tags={getTableTags(currentVersionData.columns || [])} - tier={tier || ''} + tier={tier} titleLinks={slashedTableName} version={version} versionHandler={backHandler} diff --git a/openmetadata-ui/src/main/resources/ui/src/components/DatasetVersion/DatasetVersion.interface.ts b/openmetadata-ui/src/main/resources/ui/src/components/DatasetVersion/DatasetVersion.interface.ts index d2a902af937..6aea7a9c229 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/DatasetVersion/DatasetVersion.interface.ts +++ b/openmetadata-ui/src/main/resources/ui/src/components/DatasetVersion/DatasetVersion.interface.ts @@ -13,6 +13,7 @@ import { Table } from '../../generated/entity/data/table'; import { EntityHistory } from '../../generated/type/entityHistory'; +import { TagLabel } from '../../generated/type/tagLabel'; import { TitleBreadcrumbProps } from '../common/title-breadcrumb/title-breadcrumb.interface'; export interface DatasetVersionProp { @@ -20,7 +21,7 @@ export interface DatasetVersionProp { currentVersionData: Table; isVersionLoading: boolean; owner: Table['owner']; - tier: string; + tier: TagLabel; slashedTableName: TitleBreadcrumbProps['titleLinks']; datasetFQN: string; versionList: EntityHistory; diff --git a/openmetadata-ui/src/main/resources/ui/src/components/EntityInfoDrawer/EntityInfoDrawer.component.tsx b/openmetadata-ui/src/main/resources/ui/src/components/EntityInfoDrawer/EntityInfoDrawer.component.tsx index 054c78ee3d1..4cbe3ea6e06 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/EntityInfoDrawer/EntityInfoDrawer.component.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/EntityInfoDrawer/EntityInfoDrawer.component.tsx @@ -230,7 +230,7 @@ const EntityInfoDrawer = ({
{getEntityTags(selectedNode.type, entityDetail).length > 0 ? ( getEntityTags(selectedNode.type, entityDetail).map((t) => { - return ; + return ; }) ) : (

No Tags added

diff --git a/openmetadata-ui/src/main/resources/ui/src/components/EntityTable/EntityTable.component.tsx b/openmetadata-ui/src/main/resources/ui/src/components/EntityTable/EntityTable.component.tsx index c0ffad13157..42310a70aec 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/EntityTable/EntityTable.component.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/EntityTable/EntityTable.component.tsx @@ -531,7 +531,8 @@ const EntityTable = ({ { 'diff-removed': tag?.removed } )} key={i} - tag={`#${tag.tagFQN}`} + startWith="#" + tag={tag} /> ) )} @@ -569,7 +570,11 @@ const EntityTable = ({ ) : ( - + )} diff --git a/openmetadata-ui/src/main/resources/ui/src/components/PipelineDetails/PipelineDetails.component.tsx b/openmetadata-ui/src/main/resources/ui/src/components/PipelineDetails/PipelineDetails.component.tsx index 08730529cdb..f53a3912293 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/PipelineDetails/PipelineDetails.component.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/PipelineDetails/PipelineDetails.component.tsx @@ -132,7 +132,7 @@ const PipelineDetails = ({ isLink: owner?.type === 'team', openInNewTab: false, }, - { key: 'Tier', value: tier ? tier.split('.')[1] : '' }, + { key: 'Tier', value: tier?.tagFQN ? tier.tagFQN.split('.')[1] : '' }, { key: `${serviceType} Url`, value: pipelineUrl, @@ -278,7 +278,7 @@ const PipelineDetails = ({ tagList={tagList} tags={pipelineTags} tagsHandler={onTagUpdate} - tier={tier || ''} + tier={tier} titleLinks={slashedPipelineName} />
@@ -386,7 +386,7 @@ const PipelineDetails = ({ {activeTab === 3 && (
; pipelineTags: Array; slashedPipelineName: TitleBreadcrumbProps['titleLinks']; diff --git a/openmetadata-ui/src/main/resources/ui/src/components/TopicDetails/TopicDetails.component.tsx b/openmetadata-ui/src/main/resources/ui/src/components/TopicDetails/TopicDetails.component.tsx index 91744e9a2e2..8fc0fd77edb 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/TopicDetails/TopicDetails.component.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/TopicDetails/TopicDetails.component.tsx @@ -137,7 +137,7 @@ const TopicDetails: React.FC = ({ isLink: owner?.type === 'team', openInNewTab: false, }, - { key: 'Tier', value: tier ? tier.split('.')[1] : '' }, + { key: 'Tier', value: tier?.tagFQN ? tier.tagFQN.split('.')[1] : '' }, ...getConfigDetails(), ]; @@ -310,7 +310,7 @@ const TopicDetails: React.FC = ({ {activeTab === 3 && (
; topicTags: Array; slashedTopicName: TitleBreadcrumbProps['titleLinks']; diff --git a/openmetadata-ui/src/main/resources/ui/src/components/common/description/Description.tsx b/openmetadata-ui/src/main/resources/ui/src/components/common/description/Description.tsx index 6d5ab48d0bd..a44dcf26dd5 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/common/description/Description.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/common/description/Description.tsx @@ -72,7 +72,10 @@ const Description = ({
{description.trim() ? ( - + ) : ( No description added )} diff --git a/openmetadata-ui/src/main/resources/ui/src/components/common/entityPageInfo/EntityPageInfo.tsx b/openmetadata-ui/src/main/resources/ui/src/components/common/entityPageInfo/EntityPageInfo.tsx index 64c1b74055c..488d487d78b 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/common/entityPageInfo/EntityPageInfo.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/common/entityPageInfo/EntityPageInfo.tsx @@ -17,6 +17,7 @@ import { EntityTags, TableDetail } from 'Models'; import React, { useEffect, useState } from 'react'; import { FOLLOWERS_VIEW_CAP, LIST_SIZE } from '../../../constants/constants'; import { User } from '../../../generated/entity/teams/user'; +import { TagLabel } from '../../../generated/type/tagLabel'; import { getHtmlForNonAdminAction } from '../../../utils/CommonUtils'; import SVGIcons from '../../../utils/SvgUtils'; import { getFollowerDetail } from '../../../utils/TableUtils'; @@ -42,7 +43,7 @@ type Props = { isFollowing?: boolean; followers?: number; extraInfo: Array; - tier: string; + tier: TagLabel; tags: Array; isTagEditable?: boolean; tagList?: Array; @@ -86,13 +87,13 @@ const EntityPageInfo = ({ }; const getSelectedTags = () => { - return tier + return tier?.tagFQN ? [ ...tags.map((tag) => ({ tagFQN: tag.tagFQN, isRemovable: true, })), - { tagFQN: tier, isRemovable: false }, + { tagFQN: tier.tagFQN, isRemovable: false }, ] : [ ...tags.map((tag) => ({ @@ -310,8 +311,12 @@ const EntityPageInfo = ({ {(tags.length > 0 || tier) && ( )} - {tier && ( - + {tier?.tagFQN && ( + )} {tags.length > 0 && ( <> @@ -319,7 +324,8 @@ const EntityPageInfo = ({ ))} @@ -331,7 +337,8 @@ const EntityPageInfo = ({ ))} @@ -381,7 +388,8 @@ const EntityPageInfo = ({ diff --git a/openmetadata-ui/src/main/resources/ui/src/components/common/rich-text-editor/RichTextEditorPreviewer.tsx b/openmetadata-ui/src/main/resources/ui/src/components/common/rich-text-editor/RichTextEditorPreviewer.tsx index 887f2695681..5726e8c0b82 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/common/rich-text-editor/RichTextEditorPreviewer.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/common/rich-text-editor/RichTextEditorPreviewer.tsx @@ -11,19 +11,26 @@ * limitations under the License. */ +import classNames from 'classnames'; import React, { useEffect, useState } from 'react'; import ReactMarkdown from 'react-markdown'; import rehypeRaw from 'rehype-raw'; import gfm from 'remark-gfm'; /*eslint-disable */ -const RichTextEditorPreviewer = ({ markdown }: { markdown: string }) => { +const RichTextEditorPreviewer = ({ + markdown, + className = '', +}: { + markdown: string; + className?: string; +}) => { const [content, setContent] = useState(''); useEffect(() => { setContent(markdown); }, [markdown]); return ( -
+
= ({ indexType, matches, }: Props) => { + const getTier = () => { + if (tier) { + return isString(tier) ? tier : tier.tagFQN; + } + + return 'No Tier'; + }; + const OtherDetails = [ { key: 'Owner', value: owner }, { key: 'Service', value: serviceType }, @@ -62,13 +71,15 @@ const TableDataCard: FunctionComponent = ({ ? getUsagePercentile(usage) : undefined, }, - { key: 'Tier', value: tier ? tier : 'No Tier' }, + { key: 'Tier', value: getTier() }, ]; const getAssetTags = () => { - const assetTags = [...(tags as Array)]; - if (tier) { - assetTags.filter((tag) => !tag.includes(tier)).unshift(tier); + const assetTags = [...(tags as Array)]; + if (tier && !isUndefined(tier)) { + assetTags + // .filter((tag) => !tag.tagFQN.includes((tier as TagLabel).tagFQN)) + .unshift(tier as TagLabel); } return [...new Set(assetTags)]; diff --git a/openmetadata-ui/src/main/resources/ui/src/components/common/table-data-card/TableDataCardBody.tsx b/openmetadata-ui/src/main/resources/ui/src/components/common/table-data-card/TableDataCardBody.tsx index a5f75c38b46..91fac195db8 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/common/table-data-card/TableDataCardBody.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/common/table-data-card/TableDataCardBody.tsx @@ -11,8 +11,9 @@ * limitations under the License. */ -import { isNil } from 'lodash'; +import { isNil, isString } from 'lodash'; import React, { FunctionComponent } from 'react'; +import { TagLabel } from '../../../generated/type/tagLabel'; import Tag from '../../tags/tags'; import RichTextEditorPreviewer from '../rich-text-editor/RichTextEditorPreviewer'; @@ -22,7 +23,7 @@ type Props = { key: string; value?: string; }[]; - tags?: string[]; + tags?: string[] | TagLabel[]; }; const TableDataCardBody: FunctionComponent = ({ @@ -30,6 +31,19 @@ const TableDataCardBody: FunctionComponent = ({ extraInfo, tags, }: Props) => { + const getTagValue = (tag: string | TagLabel): string | TagLabel => { + if (isString(tag)) { + return tag.startsWith('Tier.Tier') ? tag.split('.')[1] : tag; + } else { + return { + ...tag, + tagFQN: tag.tagFQN.startsWith('Tier.Tier') + ? tag.tagFQN.split('.')[1] + : tag.tagFQN, + }; + } + }; + return (
@@ -63,7 +77,8 @@ const TableDataCardBody: FunctionComponent = ({ ))} diff --git a/openmetadata-ui/src/main/resources/ui/src/components/my-data-details/SchemaTable.tsx b/openmetadata-ui/src/main/resources/ui/src/components/my-data-details/SchemaTable.tsx index 6c584491fff..e42d5739445 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/my-data-details/SchemaTable.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/my-data-details/SchemaTable.tsx @@ -410,7 +410,8 @@ const SchemaTable: FunctionComponent = ({ diff --git a/openmetadata-ui/src/main/resources/ui/src/components/recently-viewed/RecentlyViewed.tsx b/openmetadata-ui/src/main/resources/ui/src/components/recently-viewed/RecentlyViewed.tsx index 84f793e2e1d..b874b143ce2 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/recently-viewed/RecentlyViewed.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/recently-viewed/RecentlyViewed.tsx @@ -11,7 +11,8 @@ * limitations under the License. */ -import { EntityTags, FormatedTableData } from 'Models'; +import { isString } from 'lodash'; +import { FormatedTableData } from 'Models'; import React, { FunctionComponent, useEffect, useState } from 'react'; import { getDashboardByFqn } from '../../axiosAPIs/dashboardAPI'; import { getPipelineByFqn } from '../../axiosAPIs/pipelineAPI'; @@ -23,7 +24,7 @@ import { getRecentlyViewedData, setRecentlyViewedData, } from '../../utils/CommonUtils'; -import { getOwnerFromId, getTierFromTableTags } from '../../utils/TableUtils'; +import { getOwnerFromId, getTierTags } from '../../utils/TableUtils'; import { getTableTags } from '../../utils/TagsUtils'; import TableDataCard from '../common/table-data-card/TableDataCard'; import Loader from '../Loader/Loader'; @@ -69,11 +70,8 @@ const RecentlyViewed: FunctionComponent = () => { name, owner: getOwnerFromId(owner?.id)?.name || '--', serviceType: oData.serviceType, - tags: [ - getTierFromTableTags(tags), - ...tableTags.map((tag) => tag.tagFQN), - ].filter((tag) => tag), - tier: getTierFromTableTags(tags), + tags: [...tableTags].filter((tag) => tag), + tier: getTierTags(tags), weeklyPercentileRank: usageSummary?.weeklyStats.percentileRank || 0, }); @@ -93,8 +91,8 @@ const RecentlyViewed: FunctionComponent = () => { name, owner: getOwnerFromId(owner?.id)?.name || '--', serviceType: oData.serviceType, - tags: (tags as Array).map((tag) => tag.tagFQN), - tier: getTierFromTableTags(tags as Array), + tags: tags, + tier: getTierTags(tags), }); break; @@ -121,8 +119,8 @@ const RecentlyViewed: FunctionComponent = () => { name: displayName, owner: getOwnerFromId(owner?.id)?.name || '--', serviceType: oData.serviceType, - tags: (tags as Array).map((tag) => tag.tagFQN), - tier: getTierFromTableTags(tags as Array), + tags: tags, + tier: getTierTags(tags), }); break; @@ -150,8 +148,8 @@ const RecentlyViewed: FunctionComponent = () => { name: displayName, owner: getOwnerFromId(owner?.id)?.name || '--', serviceType: oData.serviceType, - tags: (tags as Array).map((tag) => tag.tagFQN), - tier: getTierFromTableTags(tags as Array), + tags: tags, + tier: getTierTags(tags), }); break; @@ -200,7 +198,9 @@ const RecentlyViewed: FunctionComponent = () => { serviceType={item.serviceType || '--'} tableType={item.tableType} tags={item.tags} - tier={item.tier?.split('.')[1]} + tier={ + isString(item.tier) ? item.tier?.split('.')[1] : item.tier + } usage={item.weeklyPercentileRank} />
diff --git a/openmetadata-ui/src/main/resources/ui/src/components/tags-container/tags-container.tsx b/openmetadata-ui/src/main/resources/ui/src/components/tags-container/tags-container.tsx index 780295fef29..3f995ac904d 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/tags-container/tags-container.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/tags-container/tags-container.tsx @@ -12,11 +12,10 @@ */ import classNames from 'classnames'; -import { capitalize, isEmpty, isNull } from 'lodash'; +import { isEmpty, isNull } from 'lodash'; import { EntityTags } from 'Models'; import React, { FunctionComponent, useEffect, useRef, useState } from 'react'; import { Button } from '../buttons/Button/Button'; -import PopOver from '../common/popover/PopOver'; import DropDownList from '../dropdown/DropDownList'; import Tags from '../tags/tags'; import { TagsContainerProps } from './tags-container.interface'; @@ -72,6 +71,7 @@ const TagsContainer: FunctionComponent = ({ .filter((tag) => { return !tags.some((selectedTag) => selectedTag.tagFQN === tag); }) + .filter((tag) => !tag.includes('Tier')) .map((tag) => { return { name: tag, @@ -126,8 +126,8 @@ const TagsContainer: FunctionComponent = ({ onCancel(event); }; - const getTagsContainer = (tag: EntityTags, index: number) => { - return tag.tagFQN ? ( + const getTagsElement = (tag: EntityTags, index: number) => { + return ( = ({ removeTag={(_e, removedTag: string) => { handleTagRemoval(removedTag, index); }} - tag={`#${tag.tagFQN}`} + startWith="#" + tag={tag} /> - ) : null; - }; - - const getTagsElement = (tag: EntityTags, index: number) => { - if (tag.labelType) { - return ( - - {getTagsContainer(tag, index)} - - ); - } else { - return getTagsContainer(tag, index); - } + ); }; const handleClick = (e: MouseEvent) => { if (node?.current?.contains(e.target as Node)) { diff --git a/openmetadata-ui/src/main/resources/ui/src/components/tags/tags.interface.ts b/openmetadata-ui/src/main/resources/ui/src/components/tags/tags.interface.ts index 03ae2e02efd..bf92011da6d 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/tags/tags.interface.ts +++ b/openmetadata-ui/src/main/resources/ui/src/components/tags/tags.interface.ts @@ -11,10 +11,13 @@ * limitations under the License. */ +import { TagLabel } from '../../generated/type/tagLabel'; + export type TagProps = { className?: string; editable?: boolean; - tag: string; + startWith?: '#' | '+ '; + tag: string | TagLabel; type?: 'contained' | 'outlined'; isRemovable?: boolean; removeTag?: ( diff --git a/openmetadata-ui/src/main/resources/ui/src/components/tags/tags.test.tsx b/openmetadata-ui/src/main/resources/ui/src/components/tags/tags.test.tsx index 7f6c5186e62..37c63b76bdd 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/tags/tags.test.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/tags/tags.test.tsx @@ -20,7 +20,7 @@ const mockCallback = jest.fn(); describe('Test tags Component', () => { it('Component should render', () => { const { container } = render( - + ); const tags = getByTestId(container, 'tags'); const remove = getByTestId(container, 'remove'); @@ -31,7 +31,7 @@ describe('Test tags Component', () => { it('onClick of X callback function should call', () => { const { container } = render( - + ); const remove = getByTestId(container, 'remove'); fireEvent.click( diff --git a/openmetadata-ui/src/main/resources/ui/src/components/tags/tags.tsx b/openmetadata-ui/src/main/resources/ui/src/components/tags/tags.tsx index 20a14c0b913..52cdcb8161f 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/tags/tags.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/tags/tags.tsx @@ -12,7 +12,10 @@ */ import classNames from 'classnames'; +import { isString } from 'lodash'; import React, { FunctionComponent } from 'react'; +import PopOver from '../common/popover/PopOver'; +import RichTextEditorPreviewer from '../common/rich-text-editor/RichTextEditorPreviewer'; import { TagProps } from './tags.interface'; import { tagStyles } from './tags.styles'; @@ -20,6 +23,7 @@ const Tags: FunctionComponent = ({ className, editable, tag, + startWith, type = 'contained', removeTag, isRemovable = true, @@ -31,24 +35,67 @@ const Tags: FunctionComponent = ({ ? tagStyles.text.editable : tagStyles.text.default; - return ( - - {tag} - {editable && isRemovable && ( - ) => { - e.preventDefault(); - e.stopPropagation(); - removeTag && removeTag(e, tag.startsWith('#') ? tag.slice(1) : tag); - }}> -