@@ -4,6 +4,7 @@ import DataTable from '@gravity-ui/react-data-table';
4
4
import { Select , TableColumnSetup } from '@gravity-ui/uikit' ;
5
5
import { Helmet } from 'react-helmet-async' ;
6
6
7
+ import { AutoRefreshControl } from '../../components/AutoRefreshControl/AutoRefreshControl' ;
7
8
import { ResponseError } from '../../components/Errors/ResponseError' ;
8
9
import { Loader } from '../../components/Loader' ;
9
10
import { ResizeableDataTable } from '../../components/ResizeableDataTable/ResizeableDataTable' ;
@@ -17,8 +18,8 @@ import {
17
18
selectStatusFilter ,
18
19
selectVersionFilter ,
19
20
} from '../../store/reducers/clusters/selectors' ;
20
- import { DEFAULT_POLLING_INTERVAL , DEFAULT_TABLE_SETTINGS } from '../../utils/constants' ;
21
- import { useTypedDispatch , useTypedSelector } from '../../utils/hooks' ;
21
+ import { DEFAULT_TABLE_SETTINGS } from '../../utils/constants' ;
22
+ import { useAutoRefreshInterval , useTypedDispatch , useTypedSelector } from '../../utils/hooks' ;
22
23
import { getMinorVersion } from '../../utils/versions' ;
23
24
24
25
import { ClustersStatistics } from './ClustersStatistics' ;
@@ -31,8 +32,9 @@ import {useSelectedColumns} from './useSelectedColumns';
31
32
import './Clusters.scss' ;
32
33
33
34
export function Clusters ( ) {
35
+ const [ autoRefreshInterval ] = useAutoRefreshInterval ( ) ;
34
36
const query = clustersApi . useGetClustersListQuery ( undefined , {
35
- pollingInterval : DEFAULT_POLLING_INTERVAL ,
37
+ pollingInterval : autoRefreshInterval ,
36
38
} ) ;
37
39
38
40
const dispatch = useTypedDispatch ( ) ;
@@ -107,10 +109,6 @@ export function Clusters() {
107
109
. map ( ( el ) => ( { value : el , content : el } ) ) ;
108
110
} , [ clusters ] ) ;
109
111
110
- if ( query . isLoading ) {
111
- return < Loader size = "l" /> ;
112
- }
113
-
114
112
return (
115
113
< div className = { b ( ) } >
116
114
< Helmet >
@@ -175,23 +173,27 @@ export function Clusters() {
175
173
sortable = { false }
176
174
/>
177
175
</ div >
176
+ < AutoRefreshControl />
178
177
</ div >
179
178
{ query . isError ? < ResponseError error = { query . error } className = { b ( 'error' ) } /> : null }
180
- < div className = { b ( 'table-wrapper' ) } >
181
- < div className = { b ( 'table-content' ) } >
182
- < ResizeableDataTable
183
- columnsWidthLSKey = { CLUSTERS_COLUMNS_WIDTH_LS_KEY }
184
- wrapperClassName = { b ( 'table' ) }
185
- data = { filteredClusters }
186
- columns = { columnsToShow }
187
- settings = { { ...DEFAULT_TABLE_SETTINGS , dynamicRender : false } }
188
- initialSortOrder = { {
189
- columnId : COLUMNS_NAMES . TITLE ,
190
- order : DataTable . ASCENDING ,
191
- } }
192
- />
179
+ { query . isLoading ? < Loader size = "l" /> : null }
180
+ { query . fulfilledTimeStamp ? (
181
+ < div className = { b ( 'table-wrapper' ) } >
182
+ < div className = { b ( 'table-content' ) } >
183
+ < ResizeableDataTable
184
+ columnsWidthLSKey = { CLUSTERS_COLUMNS_WIDTH_LS_KEY }
185
+ wrapperClassName = { b ( 'table' ) }
186
+ data = { filteredClusters }
187
+ columns = { columnsToShow }
188
+ settings = { { ...DEFAULT_TABLE_SETTINGS , dynamicRender : false } }
189
+ initialSortOrder = { {
190
+ columnId : COLUMNS_NAMES . TITLE ,
191
+ order : DataTable . ASCENDING ,
192
+ } }
193
+ />
194
+ </ div >
193
195
</ div >
194
- </ div >
196
+ ) : null }
195
197
</ div >
196
198
) ;
197
199
}
0 commit comments