@@ -31,6 +31,14 @@ export function FilterTablesButton() {
31
31
const [ selectedTables , setSelectedTables ] = useState < string [ ] > ( [ ] ) ;
32
32
const [ isFilterMenuOpen , setIsFilterMenuOpen ] = useState ( false ) ;
33
33
34
+ function resetView ( ) {
35
+ setTimeout ( async ( ) => {
36
+ await reactFlow . fitView ( {
37
+ nodes : reactFlow . getNodes ( ) . filter ( ( node ) => node . hidden !== true ) ,
38
+ } ) ;
39
+ } , 0 ) ;
40
+ }
41
+
34
42
function loadTables ( ) {
35
43
// Update the selected tables based on the current nodes
36
44
const nodes = reactFlow . getNodes ( ) ;
@@ -54,22 +62,23 @@ export function FilterTablesButton() {
54
62
hidden : false ,
55
63
} ) ;
56
64
} ) ;
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
+ } ) ;
58
81
}
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
- } ) ;
73
82
} , [ selectedTables ] ) ;
74
83
75
84
useEffect ( ( ) => {
@@ -192,6 +201,7 @@ export function FilterTablesButton() {
192
201
selectedItems = { selectedTables }
193
202
onSelectionChange = { ( _e , data ) => {
194
203
setSelectedTables ( data . selectedItems as string [ ] ) ;
204
+ resetView ( ) ;
195
205
} } >
196
206
{ renderListItems ( ) }
197
207
</ List >
@@ -207,15 +217,9 @@ export function FilterTablesButton() {
207
217
< Button
208
218
size = "small"
209
219
style = { { } }
210
- onClick = { ( ) => {
220
+ onClick = { async ( ) => {
211
221
setSelectedTables ( [ ] ) ;
212
- const nodes = reactFlow . getNodes ( ) ;
213
- nodes . forEach ( ( node ) => {
214
- reactFlow . updateNode ( node . id , {
215
- ...node ,
216
- hidden : false ,
217
- } ) ;
218
- } ) ;
222
+ resetView ( ) ;
219
223
} }
220
224
appearance = "subtle"
221
225
icon = { < FluentIcons . DismissRegular /> } >
0 commit comments