Lineage node labels should wrap around,
Lineage nodes are overlapping.
This commit is contained in:
Sachin Chaurasiya 2021-10-18 18:01:14 +05:30 committed by GitHub
parent ce568d6aa1
commit da6a57e2c1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 32 additions and 18 deletions

View File

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

View File

@ -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 && (

View File

@ -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 && (