Skip to content

Commit ae9248c

Browse files
Merge pull request #98 from ramonvermeulen/ramon/lineage-auto-center
added functionality to auto-center when changing node
2 parents 17a2990 + 92a7bf5 commit ae9248c

File tree

2 files changed

+11
-5
lines changed

2 files changed

+11
-5
lines changed

lineage-panel/src/Flow.tsx

+10-5
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import {
88
ReactFlow,
99
addEdge,
1010
useEdgesState,
11-
useNodesState, NodeTypes,
11+
useNodesState, NodeTypes, useReactFlow,
1212
} from '@xyflow/react';
1313
import { type MouseEvent as ReactMouseEvent, useCallback, useEffect } from 'react';
1414
import { MdRefresh } from 'react-icons/md';
@@ -38,9 +38,10 @@ const nodeTypes = {
3838
export default function Flow() {
3939
const [nodes, setNodes, onNodesChange] = useNodesState<Node>([]);
4040
const [edges, setEdges, onEdgesChange] = useEdgesState<Edge>([]);
41+
const reactFlow = useReactFlow();
4142
const { setLineageInfo } = useLineageLayout({ setNodes, setEdges, addEdge });
4243

43-
const setActiveNode = useCallback((nodeId: string) => {
44+
const setActiveNode = useCallback(async (nodeId: string) => {
4445
const newNodes = nodes.map(n => ({
4546
...n,
4647
data: {
@@ -49,11 +50,15 @@ export default function Flow() {
4950
}
5051
}));
5152
setNodes(newNodes);
52-
}, [nodes, setNodes]);
53+
const newActiveNode = nodes.find(n => n.id === nodeId);
54+
if (newActiveNode) {
55+
await reactFlow.setCenter(newActiveNode.position.x, newActiveNode.position.y, { duration: 100, zoom: reactFlow.getZoom() });
56+
}
57+
}, [reactFlow, nodes, setNodes]);
5358

5459

55-
function onNodeClick(_event: ReactMouseEvent, node: Node) : void {
56-
setActiveNode(node.id);
60+
async function onNodeClick(_event: ReactMouseEvent, node: Node) : Promise<void> {
61+
await setActiveNode(node.id);
5762
if (isDevMode) {
5863
return;
5964
}

lineage-panel/src/index.css

+1
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ body,
3737
}
3838

3939
.dbt-model-node {
40+
cursor: pointer;
4041
display: flex;
4142
align-items: center;
4243
justify-content: space-between;

0 commit comments

Comments
 (0)