mirror of
https://github.com/open-metadata/OpenMetadata.git
synced 2025-09-04 06:33:10 +00:00
fix(ui): table data issue in entity table lineage sidebar (#13893)
* fix table data issue in entity table lineage sidebar * optimize code
This commit is contained in:
parent
bdfc9226d5
commit
2935c1d67b
@ -254,7 +254,7 @@ const EntityInfoDrawer = ({
|
|||||||
default:
|
default:
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}, [entityDetail, fetchEntityDetail, tags, selectedNode]);
|
}, [entityDetail, fetchEntityDetail, tags, selectedNode, isLoading]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
fetchEntityDetail(selectedNode);
|
fetchEntityDetail(selectedNode);
|
||||||
|
@ -50,7 +50,10 @@ import CommonEntitySummaryInfo from '../CommonEntitySummaryInfo/CommonEntitySumm
|
|||||||
import SummaryList from '../SummaryList/SummaryList.component';
|
import SummaryList from '../SummaryList/SummaryList.component';
|
||||||
import { BasicEntityInfo } from '../SummaryList/SummaryList.interface';
|
import { BasicEntityInfo } from '../SummaryList/SummaryList.interface';
|
||||||
import './table-summary.less';
|
import './table-summary.less';
|
||||||
import { TableSummaryProps } from './TableSummary.interface';
|
import {
|
||||||
|
TableProfileDetails,
|
||||||
|
TableSummaryProps,
|
||||||
|
} from './TableSummary.interface';
|
||||||
|
|
||||||
function TableSummary({
|
function TableSummary({
|
||||||
entityDetails,
|
entityDetails,
|
||||||
@ -62,23 +65,29 @@ function TableSummary({
|
|||||||
const location = useLocation();
|
const location = useLocation();
|
||||||
const isTourPage = location.pathname.includes(ROUTES.TOUR);
|
const isTourPage = location.pathname.includes(ROUTES.TOUR);
|
||||||
const { getEntityPermission } = usePermissionProvider();
|
const { getEntityPermission } = usePermissionProvider();
|
||||||
const [tableDetails, setTableDetails] = useState<Table>(entityDetails);
|
|
||||||
|
const [profileData, setProfileData] = useState<TableProfileDetails>();
|
||||||
const [testSuiteSummary, setTestSuiteSummary] = useState<TestSummary>();
|
const [testSuiteSummary, setTestSuiteSummary] = useState<TestSummary>();
|
||||||
const [tablePermissions, setTablePermissions] = useState<OperationPermission>(
|
const [tablePermissions, setTablePermissions] = useState<OperationPermission>(
|
||||||
DEFAULT_ENTITY_PERMISSION
|
DEFAULT_ENTITY_PERMISSION
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const tableDetails: Table = useMemo(
|
||||||
|
() => ({ ...entityDetails, ...profileData }),
|
||||||
|
[entityDetails, profileData]
|
||||||
|
);
|
||||||
|
|
||||||
const viewProfilerPermission = useMemo(
|
const viewProfilerPermission = useMemo(
|
||||||
() => tablePermissions.ViewDataProfile || tablePermissions.ViewAll,
|
() => tablePermissions.ViewDataProfile || tablePermissions.ViewAll,
|
||||||
[tablePermissions]
|
[tablePermissions]
|
||||||
);
|
);
|
||||||
|
|
||||||
const isTableDeleted = useMemo(() => entityDetails.deleted, [entityDetails]);
|
const isTableDeleted = useMemo(() => tableDetails.deleted, [tableDetails]);
|
||||||
|
|
||||||
const fetchAllTests = async () => {
|
const fetchAllTests = async () => {
|
||||||
try {
|
try {
|
||||||
const res = await getTableDetailsByFQN(
|
const res = await getTableDetailsByFQN(
|
||||||
getEncodedFqn(entityDetails.fullyQualifiedName ?? ''),
|
getEncodedFqn(tableDetails.fullyQualifiedName ?? ''),
|
||||||
'testSuite'
|
'testSuite'
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -92,23 +101,14 @@ function TableSummary({
|
|||||||
|
|
||||||
const fetchProfilerData = useCallback(async () => {
|
const fetchProfilerData = useCallback(async () => {
|
||||||
try {
|
try {
|
||||||
const profileResponse = await getLatestTableProfileByFqn(
|
const { profile, tableConstraints } = await getLatestTableProfileByFqn(
|
||||||
entityDetails?.fullyQualifiedName || ''
|
tableDetails?.fullyQualifiedName ?? ''
|
||||||
);
|
);
|
||||||
|
setProfileData({ profile, tableConstraints });
|
||||||
const { profile, tableConstraints } = profileResponse;
|
|
||||||
|
|
||||||
setTableDetails((prev) => {
|
|
||||||
if (prev) {
|
|
||||||
return { ...prev, profile, tableConstraints };
|
|
||||||
} else {
|
|
||||||
return {} as Table;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
// Error
|
// Error
|
||||||
}
|
}
|
||||||
}, [entityDetails]);
|
}, [tableDetails]);
|
||||||
|
|
||||||
const profilerSummary = useMemo(() => {
|
const profilerSummary = useMemo(() => {
|
||||||
if (!viewProfilerPermission) {
|
if (!viewProfilerPermission) {
|
||||||
@ -163,8 +163,6 @@ function TableSummary({
|
|||||||
);
|
);
|
||||||
}, [tableDetails, testSuiteSummary, viewProfilerPermission]);
|
}, [tableDetails, testSuiteSummary, viewProfilerPermission]);
|
||||||
|
|
||||||
const { columns } = tableDetails;
|
|
||||||
|
|
||||||
const entityInfo = useMemo(
|
const entityInfo = useMemo(
|
||||||
() => getEntityOverview(ExplorePageTabs.TABLES, tableDetails),
|
() => getEntityOverview(ExplorePageTabs.TABLES, tableDetails),
|
||||||
[tableDetails]
|
[tableDetails]
|
||||||
@ -174,22 +172,22 @@ function TableSummary({
|
|||||||
() =>
|
() =>
|
||||||
getFormattedEntityData(
|
getFormattedEntityData(
|
||||||
SummaryEntityType.COLUMN,
|
SummaryEntityType.COLUMN,
|
||||||
columns,
|
tableDetails.columns,
|
||||||
tableDetails.tableConstraints
|
tableDetails.tableConstraints
|
||||||
),
|
),
|
||||||
[columns, tableDetails]
|
[tableDetails]
|
||||||
);
|
);
|
||||||
|
|
||||||
const init = useCallback(async () => {
|
const init = useCallback(async () => {
|
||||||
if (entityDetails.id && !isTourPage) {
|
if (tableDetails.id && !isTourPage) {
|
||||||
const tablePermission = await getEntityPermission(
|
const tablePermission = await getEntityPermission(
|
||||||
ResourceEntity.TABLE,
|
ResourceEntity.TABLE,
|
||||||
entityDetails.id
|
tableDetails.id
|
||||||
);
|
);
|
||||||
setTablePermissions(tablePermission);
|
setTablePermissions(tablePermission);
|
||||||
const shouldFetchProfilerData =
|
const shouldFetchProfilerData =
|
||||||
!isTableDeleted &&
|
!isTableDeleted &&
|
||||||
entityDetails.service?.type === 'databaseService' &&
|
tableDetails.service?.type === 'databaseService' &&
|
||||||
!isTourPage &&
|
!isTourPage &&
|
||||||
tablePermission;
|
tablePermission;
|
||||||
|
|
||||||
@ -200,11 +198,18 @@ function TableSummary({
|
|||||||
} else {
|
} else {
|
||||||
setTablePermissions(mockTablePermission as OperationPermission);
|
setTablePermissions(mockTablePermission as OperationPermission);
|
||||||
}
|
}
|
||||||
}, [entityDetails.fullyQualifiedName, isTourPage, isTableDeleted]);
|
}, [
|
||||||
|
tableDetails,
|
||||||
|
isTourPage,
|
||||||
|
isTableDeleted,
|
||||||
|
fetchProfilerData,
|
||||||
|
fetchAllTests,
|
||||||
|
getEntityPermission,
|
||||||
|
]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
init();
|
init();
|
||||||
}, [entityDetails.id]);
|
}, [tableDetails.id]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<SummaryPanelSkeleton loading={isLoading || isEmpty(tableDetails)}>
|
<SummaryPanelSkeleton loading={isLoading || isEmpty(tableDetails)}>
|
||||||
@ -234,8 +239,8 @@ function TableSummary({
|
|||||||
<Divider className="m-y-xs" />
|
<Divider className="m-y-xs" />
|
||||||
|
|
||||||
<SummaryTagsDescription
|
<SummaryTagsDescription
|
||||||
entityDetail={entityDetails}
|
entityDetail={tableDetails}
|
||||||
tags={tags ?? entityDetails.tags ?? []}
|
tags={tags ?? tableDetails.tags ?? []}
|
||||||
/>
|
/>
|
||||||
<Divider className="m-y-xs" />
|
<Divider className="m-y-xs" />
|
||||||
|
|
||||||
|
@ -30,3 +30,8 @@ export interface BasicTableInfo {
|
|||||||
Queries: string;
|
Queries: string;
|
||||||
Columns: string;
|
Columns: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface TableProfileDetails {
|
||||||
|
profile: Table['profile'];
|
||||||
|
tableConstraints: Table['tableConstraints'];
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user