mirror of
https://github.com/open-metadata/OpenMetadata.git
synced 2025-12-17 10:35:08 +00:00
Fix issue-4575: UI: Add total count of user owned or following data entities in profile page and home page (#4623)
This commit is contained in:
parent
8aa88b1efc
commit
e37ef3dfa3
@ -46,10 +46,13 @@ const EntityList: FunctionComponent<Prop> = ({
|
|||||||
)}`}
|
)}`}
|
||||||
key={index}>
|
key={index}>
|
||||||
<div className="tw-flex">
|
<div className="tw-flex">
|
||||||
{getEntityIcon(item.index)}
|
{getEntityIcon(item.index || item.type || '')}
|
||||||
<Link
|
<Link
|
||||||
className="tw-font-medium tw-pl-2"
|
className="tw-font-medium tw-pl-2"
|
||||||
to={getEntityLink(item.index, item.fullyQualifiedName)}>
|
to={getEntityLink(
|
||||||
|
item.index || item.type || '',
|
||||||
|
item.fullyQualifiedName
|
||||||
|
)}>
|
||||||
<button
|
<button
|
||||||
className="tw-text-grey-body hover:tw-text-primary-hover hover:tw-underline tw-w-52 tw-truncate tw-text-left"
|
className="tw-text-grey-body hover:tw-text-primary-hover hover:tw-underline tw-w-52 tw-truncate tw-text-left"
|
||||||
title={getEntityName(item as unknown as EntityReference)}>
|
title={getEntityName(item as unknown as EntityReference)}>
|
||||||
|
|||||||
@ -53,6 +53,8 @@ const MyData: React.FC<MyDataProps> = ({
|
|||||||
followedData,
|
followedData,
|
||||||
feedData,
|
feedData,
|
||||||
feedFilter,
|
feedFilter,
|
||||||
|
ownedDataCount,
|
||||||
|
followedDataCount,
|
||||||
feedFilterHandler,
|
feedFilterHandler,
|
||||||
isFeedLoading,
|
isFeedLoading,
|
||||||
postFeedHandler,
|
postFeedHandler,
|
||||||
@ -140,7 +142,7 @@ const MyData: React.FC<MyDataProps> = ({
|
|||||||
data-testid="my-data"
|
data-testid="my-data"
|
||||||
to={getLinkByFilter(Ownership.OWNER)}>
|
to={getLinkByFilter(Ownership.OWNER)}>
|
||||||
<span className="link-text tw-font-normal tw-text-xs">
|
<span className="link-text tw-font-normal tw-text-xs">
|
||||||
View All
|
View All <span>({ownedDataCount})</span>
|
||||||
</span>
|
</span>
|
||||||
</Link>
|
</Link>
|
||||||
) : null}
|
) : null}
|
||||||
@ -160,7 +162,7 @@ const MyData: React.FC<MyDataProps> = ({
|
|||||||
data-testid="following-data"
|
data-testid="following-data"
|
||||||
to={getLinkByFilter(Ownership.FOLLOWERS)}>
|
to={getLinkByFilter(Ownership.FOLLOWERS)}>
|
||||||
<span className="link-text tw-font-normal tw-text-xs">
|
<span className="link-text tw-font-normal tw-text-xs">
|
||||||
View All
|
View All <span>({followedDataCount})</span>
|
||||||
</span>
|
</span>
|
||||||
</Link>
|
</Link>
|
||||||
) : null}
|
) : null}
|
||||||
|
|||||||
@ -26,6 +26,8 @@ export interface MyDataProps {
|
|||||||
countTables: number;
|
countTables: number;
|
||||||
countTopics: number;
|
countTopics: number;
|
||||||
countDashboards: number;
|
countDashboards: number;
|
||||||
|
followedDataCount: number;
|
||||||
|
ownedDataCount: number;
|
||||||
countPipelines: number;
|
countPipelines: number;
|
||||||
userDetails?: User;
|
userDetails?: User;
|
||||||
ownedData: Array<FormatedTableData>;
|
ownedData: Array<FormatedTableData>;
|
||||||
|
|||||||
@ -319,6 +319,8 @@ const mockProp = {
|
|||||||
countServices: 0,
|
countServices: 0,
|
||||||
countTables: 10,
|
countTables: 10,
|
||||||
countTopics: 5,
|
countTopics: 5,
|
||||||
|
followedDataCount: 5,
|
||||||
|
ownedDataCount: 5,
|
||||||
error: '',
|
error: '',
|
||||||
feedData: formatDataResponse(mockData.data.hits.hits),
|
feedData: formatDataResponse(mockData.data.hits.hits),
|
||||||
feedFilter: FeedFilter.ALL,
|
feedFilter: FeedFilter.ALL,
|
||||||
|
|||||||
@ -616,14 +616,15 @@ const Users = ({
|
|||||||
<EntityList
|
<EntityList
|
||||||
entityList={userData?.owns as unknown as FormatedTableData[]}
|
entityList={userData?.owns as unknown as FormatedTableData[]}
|
||||||
headerText={
|
headerText={
|
||||||
<div className="tw-flex tw-justify-between">
|
<div className="tw-flex tw-justify-between tw-items-center">
|
||||||
My Data
|
My Data
|
||||||
{userData?.owns?.length ? (
|
{userData?.owns?.length ? (
|
||||||
<Link
|
<Link
|
||||||
|
className="tw-ml-1"
|
||||||
data-testid="my-data"
|
data-testid="my-data"
|
||||||
to={getLinkByFilter(Ownership.OWNER)}>
|
to={getLinkByFilter(Ownership.OWNER)}>
|
||||||
<span className="link-text tw-font-normal tw-text-xs">
|
<span className="link-text tw-font-normal tw-text-xs">
|
||||||
View All
|
View All <span>({userData?.owns?.length})</span>
|
||||||
</span>
|
</span>
|
||||||
</Link>
|
</Link>
|
||||||
) : null}
|
) : null}
|
||||||
@ -640,10 +641,11 @@ const Users = ({
|
|||||||
Following
|
Following
|
||||||
{userData?.follows?.length ? (
|
{userData?.follows?.length ? (
|
||||||
<Link
|
<Link
|
||||||
|
className="tw-ml-1"
|
||||||
data-testid="following-data"
|
data-testid="following-data"
|
||||||
to={getLinkByFilter(Ownership.FOLLOWERS)}>
|
to={getLinkByFilter(Ownership.FOLLOWERS)}>
|
||||||
<span className="link-text tw-font-normal tw-text-xs">
|
<span className="link-text tw-font-normal tw-text-xs">
|
||||||
View All
|
View All <span>({userData?.follows?.length})</span>
|
||||||
</span>
|
</span>
|
||||||
</Link>
|
</Link>
|
||||||
) : null}
|
) : null}
|
||||||
|
|||||||
@ -222,6 +222,7 @@ declare module 'Models' {
|
|||||||
name: string[];
|
name: string[];
|
||||||
};
|
};
|
||||||
index: string;
|
index: string;
|
||||||
|
type?: string;
|
||||||
database?: string;
|
database?: string;
|
||||||
databaseSchema?: string;
|
databaseSchema?: string;
|
||||||
deleted?: boolean;
|
deleted?: boolean;
|
||||||
|
|||||||
@ -55,6 +55,8 @@ const MyDataPage = () => {
|
|||||||
|
|
||||||
const [ownedData, setOwnedData] = useState<Array<FormatedTableData>>();
|
const [ownedData, setOwnedData] = useState<Array<FormatedTableData>>();
|
||||||
const [followedData, setFollowedData] = useState<Array<FormatedTableData>>();
|
const [followedData, setFollowedData] = useState<Array<FormatedTableData>>();
|
||||||
|
const [ownedDataCount, setOwnedDataCount] = useState(0);
|
||||||
|
const [followedDataCount, setFollowedDataCount] = useState(0);
|
||||||
|
|
||||||
const [feedFilter, setFeedFilter] = useState<FeedFilter>(FeedFilter.ALL);
|
const [feedFilter, setFeedFilter] = useState<FeedFilter>(FeedFilter.ALL);
|
||||||
const [entityThread, setEntityThread] = useState<EntityThread[]>([]);
|
const [entityThread, setEntityThread] = useState<EntityThread[]>([]);
|
||||||
@ -203,8 +205,10 @@ const MyDataPage = () => {
|
|||||||
.then(([resOwnedEntity, resFollowedEntity]) => {
|
.then(([resOwnedEntity, resFollowedEntity]) => {
|
||||||
if (resOwnedEntity.status === 'fulfilled') {
|
if (resOwnedEntity.status === 'fulfilled') {
|
||||||
setOwnedData(formatDataResponse(resOwnedEntity.value.data.hits.hits));
|
setOwnedData(formatDataResponse(resOwnedEntity.value.data.hits.hits));
|
||||||
|
setOwnedDataCount(resOwnedEntity.value.data.hits.total.value);
|
||||||
}
|
}
|
||||||
if (resFollowedEntity.status === 'fulfilled') {
|
if (resFollowedEntity.status === 'fulfilled') {
|
||||||
|
setFollowedDataCount(resFollowedEntity.value.data.hits.total.value);
|
||||||
setFollowedData(
|
setFollowedData(
|
||||||
formatDataResponse(resFollowedEntity.value.data.hits.hits)
|
formatDataResponse(resFollowedEntity.value.data.hits.hits)
|
||||||
);
|
);
|
||||||
@ -353,8 +357,10 @@ const MyDataPage = () => {
|
|||||||
feedFilterHandler={feedFilterHandler}
|
feedFilterHandler={feedFilterHandler}
|
||||||
fetchFeedHandler={getFeedData}
|
fetchFeedHandler={getFeedData}
|
||||||
followedData={followedData || []}
|
followedData={followedData || []}
|
||||||
|
followedDataCount={followedDataCount}
|
||||||
isFeedLoading={isFeedLoading}
|
isFeedLoading={isFeedLoading}
|
||||||
ownedData={ownedData || []}
|
ownedData={ownedData || []}
|
||||||
|
ownedDataCount={ownedDataCount}
|
||||||
paging={paging}
|
paging={paging}
|
||||||
postFeedHandler={postFeedHandler}
|
postFeedHandler={postFeedHandler}
|
||||||
/>
|
/>
|
||||||
|
|||||||
@ -133,8 +133,10 @@ const TourPage = () => {
|
|||||||
}}
|
}}
|
||||||
fetchFeedHandler={handleOnClick}
|
fetchFeedHandler={handleOnClick}
|
||||||
followedData={[]}
|
followedData={[]}
|
||||||
|
followedDataCount={1}
|
||||||
isFeedLoading={false}
|
isFeedLoading={false}
|
||||||
ownedData={[]}
|
ownedData={[]}
|
||||||
|
ownedDataCount={1}
|
||||||
paging={{} as Paging}
|
paging={{} as Paging}
|
||||||
postFeedHandler={handleOnClick}
|
postFeedHandler={handleOnClick}
|
||||||
userDetails={AppState.userDetails}
|
userDetails={AppState.userDetails}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user