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:
Shailesh Parmar 2022-05-04 10:17:03 +05:30 committed by GitHub
parent 8aa88b1efc
commit e37ef3dfa3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 27 additions and 7 deletions

View File

@ -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)}>

View File

@ -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}

View File

@ -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>;

View File

@ -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,

View File

@ -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}

View File

@ -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;

View File

@ -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}
/> />

View File

@ -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}