mirror of
https://github.com/open-metadata/OpenMetadata.git
synced 2025-09-26 09:22:14 +00:00
Lineage node labels should wrap around, Lineage nodes are overlapping.
This commit is contained in:
parent
ce568d6aa1
commit
da6a57e2c1
@ -10,6 +10,7 @@ import ReactFlow, {
|
|||||||
Controls,
|
Controls,
|
||||||
Edge,
|
Edge,
|
||||||
Elements,
|
Elements,
|
||||||
|
FlowElement,
|
||||||
Node,
|
Node,
|
||||||
OnLoadParams,
|
OnLoadParams,
|
||||||
Position,
|
Position,
|
||||||
@ -45,7 +46,11 @@ const onNodeContextMenu = (_event: ReactMouseEvent, _node: Node | Edge) => {
|
|||||||
const getDataLabel = (v = '', separator = '.') => {
|
const getDataLabel = (v = '', separator = '.') => {
|
||||||
const length = v.split(separator).length;
|
const length = v.split(separator).length;
|
||||||
|
|
||||||
return v.split(separator)[length - 1];
|
return (
|
||||||
|
<p className="tw-break-words description-text">
|
||||||
|
{v.split(separator)[length - 1]}
|
||||||
|
</p>
|
||||||
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
const positionX = 150;
|
const positionX = 150;
|
||||||
@ -71,11 +76,11 @@ const getLineageData = (entityLineage: EntityLineage) => {
|
|||||||
const getNodes = (
|
const getNodes = (
|
||||||
id: string,
|
id: string,
|
||||||
pos: 'from' | 'to',
|
pos: 'from' | 'to',
|
||||||
depth: number
|
depth: number,
|
||||||
|
NodesArr: Array<EntityReference & { lDepth: number }> = []
|
||||||
): Array<EntityReference & { lDepth: number }> => {
|
): Array<EntityReference & { lDepth: number }> => {
|
||||||
let upDepth = 0;
|
|
||||||
let downDepth = 0;
|
|
||||||
if (pos === 'to') {
|
if (pos === 'to') {
|
||||||
|
let upDepth = NodesArr.filter((nd) => nd.lDepth === depth).length;
|
||||||
const UPNodes: Array<EntityReference> = [];
|
const UPNodes: Array<EntityReference> = [];
|
||||||
const updatedUpStreamEdge = upstreamEdges.map((up) => {
|
const updatedUpStreamEdge = upstreamEdges.map((up) => {
|
||||||
if (up.toEntity === id) {
|
if (up.toEntity === id) {
|
||||||
@ -118,6 +123,7 @@ const getLineageData = (entityLineage: EntityLineage) => {
|
|||||||
|
|
||||||
return UPNodes?.map((upNd) => ({ lDepth: depth, ...upNd })) || [];
|
return UPNodes?.map((upNd) => ({ lDepth: depth, ...upNd })) || [];
|
||||||
} else {
|
} else {
|
||||||
|
let downDepth = NodesArr.filter((nd) => nd.lDepth === depth).length;
|
||||||
const DOWNNodes: Array<EntityReference> = [];
|
const DOWNNodes: Array<EntityReference> = [];
|
||||||
const updatedDownStreamEdge = downstreamEdges.map((down) => {
|
const updatedDownStreamEdge = downstreamEdges.map((down) => {
|
||||||
if (down.fromEntity === id) {
|
if (down.fromEntity === id) {
|
||||||
@ -169,7 +175,7 @@ const getLineageData = (entityLineage: EntityLineage) => {
|
|||||||
depth = 1,
|
depth = 1,
|
||||||
upNodesArr: Array<EntityReference & { lDepth: number }> = []
|
upNodesArr: Array<EntityReference & { lDepth: number }> = []
|
||||||
) => {
|
) => {
|
||||||
const upNodes = getNodes(Entity.id, 'to', depth);
|
const upNodes = getNodes(Entity.id, 'to', depth, upNodesArr);
|
||||||
upNodesArr.push(...upNodes);
|
upNodesArr.push(...upNodes);
|
||||||
upNodes.forEach((up) => {
|
upNodes.forEach((up) => {
|
||||||
if (
|
if (
|
||||||
@ -187,7 +193,7 @@ const getLineageData = (entityLineage: EntityLineage) => {
|
|||||||
depth = 1,
|
depth = 1,
|
||||||
downNodesArr: Array<EntityReference & { lDepth: number }> = []
|
downNodesArr: Array<EntityReference & { lDepth: number }> = []
|
||||||
) => {
|
) => {
|
||||||
const downNodes = getNodes(Entity.id, 'from', depth);
|
const downNodes = getNodes(Entity.id, 'from', depth, downNodesArr);
|
||||||
downNodesArr.push(...downNodes);
|
downNodesArr.push(...downNodes);
|
||||||
downNodes.forEach((down) => {
|
downNodes.forEach((down) => {
|
||||||
if (
|
if (
|
||||||
@ -216,19 +222,27 @@ const getLineageData = (entityLineage: EntityLineage) => {
|
|||||||
data: { label: getDataLabel(mainNode.name as string) },
|
data: { label: getDataLabel(mainNode.name as string) },
|
||||||
position: { x: x, y: y },
|
position: { x: x, y: y },
|
||||||
},
|
},
|
||||||
...UPStreamNodes,
|
...UPStreamNodes.map((up) => {
|
||||||
...DOWNStreamNodes,
|
return lineageEdges.find(
|
||||||
|
(ed: FlowElement) => (ed as Edge).target === up.id
|
||||||
|
)
|
||||||
|
? up
|
||||||
|
: { ...up, type: 'input' };
|
||||||
|
}),
|
||||||
|
...DOWNStreamNodes.map((down) => {
|
||||||
|
return lineageEdges.find((ed: FlowElement) =>
|
||||||
|
(ed as Edge).source.includes(down.id)
|
||||||
|
)
|
||||||
|
? down
|
||||||
|
: { ...down, type: 'output' };
|
||||||
|
}),
|
||||||
...lineageEdges,
|
...lineageEdges,
|
||||||
];
|
];
|
||||||
|
|
||||||
return lineageData;
|
return lineageData;
|
||||||
};
|
};
|
||||||
|
|
||||||
const DatasetLineage = ({
|
const Entitylineage = ({ entityLineage }: { entityLineage: EntityLineage }) => {
|
||||||
entityLineage,
|
|
||||||
}: {
|
|
||||||
entityLineage: EntityLineage;
|
|
||||||
}) => {
|
|
||||||
const [elements, setElements] = useState<Elements>(
|
const [elements, setElements] = useState<Elements>(
|
||||||
getLineageData(entityLineage) as Elements
|
getLineageData(entityLineage) as Elements
|
||||||
);
|
);
|
||||||
@ -269,4 +283,4 @@ const DatasetLineage = ({
|
|||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
export default DatasetLineage;
|
export default Entitylineage;
|
@ -21,7 +21,7 @@ import RichTextEditorPreviewer from '../../components/common/rich-text-editor/Ri
|
|||||||
import TabsPane from '../../components/common/TabsPane/TabsPane';
|
import TabsPane from '../../components/common/TabsPane/TabsPane';
|
||||||
import { TitleBreadcrumbProps } from '../../components/common/title-breadcrumb/title-breadcrumb.interface';
|
import { TitleBreadcrumbProps } from '../../components/common/title-breadcrumb/title-breadcrumb.interface';
|
||||||
import PageContainer from '../../components/containers/PageContainer';
|
import PageContainer from '../../components/containers/PageContainer';
|
||||||
import DatasetLineage from '../../components/dataset-lineage/DatasetLineage';
|
import Entitylineage from '../../components/dataset-lineage/EntityLineage';
|
||||||
import Loader from '../../components/Loader/Loader';
|
import Loader from '../../components/Loader/Loader';
|
||||||
import { ModalWithMarkdownEditor } from '../../components/Modals/ModalWithMarkdownEditor/ModalWithMarkdownEditor';
|
import { ModalWithMarkdownEditor } from '../../components/Modals/ModalWithMarkdownEditor/ModalWithMarkdownEditor';
|
||||||
import ManageTab from '../../components/my-data-details/ManageTab';
|
import ManageTab from '../../components/my-data-details/ManageTab';
|
||||||
@ -619,7 +619,7 @@ const MyPipelinePage = () => {
|
|||||||
)}
|
)}
|
||||||
{activeTab === 2 && (
|
{activeTab === 2 && (
|
||||||
<div className="tw-w-full tw-h-96">
|
<div className="tw-w-full tw-h-96">
|
||||||
<DatasetLineage entityLineage={entityLineage} />
|
<Entitylineage entityLineage={entityLineage} />
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
{activeTab === 3 && (
|
{activeTab === 3 && (
|
||||||
|
@ -38,7 +38,7 @@ import EntityPageInfo from '../../components/common/entityPageInfo/EntityPageInf
|
|||||||
import TabsPane from '../../components/common/TabsPane/TabsPane';
|
import TabsPane from '../../components/common/TabsPane/TabsPane';
|
||||||
import { TitleBreadcrumbProps } from '../../components/common/title-breadcrumb/title-breadcrumb.interface';
|
import { TitleBreadcrumbProps } from '../../components/common/title-breadcrumb/title-breadcrumb.interface';
|
||||||
import PageContainer from '../../components/containers/PageContainer';
|
import PageContainer from '../../components/containers/PageContainer';
|
||||||
import DatasetLineage from '../../components/dataset-lineage/DatasetLineage';
|
import Entitylineage from '../../components/dataset-lineage/EntityLineage';
|
||||||
import FrequentlyJoinedTables from '../../components/my-data-details/FrequentlyJoinedTables';
|
import FrequentlyJoinedTables from '../../components/my-data-details/FrequentlyJoinedTables';
|
||||||
import ManageTab from '../../components/my-data-details/ManageTab';
|
import ManageTab from '../../components/my-data-details/ManageTab';
|
||||||
import ProfilerTable from '../../components/my-data-details/ProfilerTable';
|
import ProfilerTable from '../../components/my-data-details/ProfilerTable';
|
||||||
@ -562,7 +562,7 @@ const MyDataDetailsPage = () => {
|
|||||||
)}
|
)}
|
||||||
{activeTab === 3 && (
|
{activeTab === 3 && (
|
||||||
<div className="tw-w-full tw-h-96">
|
<div className="tw-w-full tw-h-96">
|
||||||
<DatasetLineage entityLineage={entityLineage} />
|
<Entitylineage entityLineage={entityLineage} />
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
{activeTab === 4 && (
|
{activeTab === 4 && (
|
||||||
|
Loading…
x
Reference in New Issue
Block a user