Skip to content

Commit b27972b

Browse files
committed
Not resetting view every time filter is opened
1 parent 57e9d05 commit b27972b

File tree

1 file changed

+27
-23
lines changed

1 file changed

+27
-23
lines changed

src/reactviews/pages/SchemaDesigner/toolbar/filterTablesButton.tsx

Lines changed: 27 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,14 @@ export function FilterTablesButton() {
3131
const [selectedTables, setSelectedTables] = useState<string[]>([]);
3232
const [isFilterMenuOpen, setIsFilterMenuOpen] = useState(false);
3333

34+
function resetView() {
35+
setTimeout(async () => {
36+
await reactFlow.fitView({
37+
nodes: reactFlow.getNodes().filter((node) => node.hidden !== true),
38+
});
39+
}, 0);
40+
}
41+
3442
function loadTables() {
3543
// Update the selected tables based on the current nodes
3644
const nodes = reactFlow.getNodes();
@@ -54,22 +62,23 @@ export function FilterTablesButton() {
5462
hidden: false,
5563
});
5664
});
57-
return;
65+
resetView();
66+
} else {
67+
nodes.forEach((node) => {
68+
const tableName = `${node.data.schema}.${node.data.name}`;
69+
if (selectedTables.includes(tableName)) {
70+
reactFlow.updateNode(node.id, {
71+
...node,
72+
hidden: false,
73+
});
74+
} else {
75+
reactFlow.updateNode(node.id, {
76+
...node,
77+
hidden: true,
78+
});
79+
}
80+
});
5881
}
59-
nodes.forEach((node) => {
60-
const tableName = `${node.data.schema}.${node.data.name}`;
61-
if (selectedTables.includes(tableName)) {
62-
reactFlow.updateNode(node.id, {
63-
...node,
64-
hidden: false,
65-
});
66-
} else {
67-
reactFlow.updateNode(node.id, {
68-
...node,
69-
hidden: true,
70-
});
71-
}
72-
});
7382
}, [selectedTables]);
7483

7584
useEffect(() => {
@@ -192,6 +201,7 @@ export function FilterTablesButton() {
192201
selectedItems={selectedTables}
193202
onSelectionChange={(_e, data) => {
194203
setSelectedTables(data.selectedItems as string[]);
204+
resetView();
195205
}}>
196206
{renderListItems()}
197207
</List>
@@ -207,15 +217,9 @@ export function FilterTablesButton() {
207217
<Button
208218
size="small"
209219
style={{}}
210-
onClick={() => {
220+
onClick={async () => {
211221
setSelectedTables([]);
212-
const nodes = reactFlow.getNodes();
213-
nodes.forEach((node) => {
214-
reactFlow.updateNode(node.id, {
215-
...node,
216-
hidden: false,
217-
});
218-
});
222+
resetView();
219223
}}
220224
appearance="subtle"
221225
icon={<FluentIcons.DismissRegular />}>

0 commit comments

Comments
 (0)