@@ -2,9 +2,11 @@ import React from 'react';
22
33import { Checkbox , RadioButton } from '@gravity-ui/uikit' ;
44
5- import { Loader } from '../../components/Loader ' ;
5+ import { LoaderWrapper } from '../../components/LoaderWrapper/LoaderWrapper ' ;
66import { nodesApi } from '../../store/reducers/nodes/nodes' ;
7+ import type { NodesPreparedEntity } from '../../store/reducers/nodes/types' ;
78import type { TClusterInfo } from '../../types/api/cluster' ;
9+ import type { VersionToColorMap , VersionValue } from '../../types/versions' ;
810import { cn } from '../../utils/cn' ;
911import { useAutoRefreshInterval } from '../../utils/hooks' ;
1012import { VersionsBar } from '../Cluster/VersionsBar/VersionsBar' ;
@@ -19,21 +21,39 @@ import './Versions.scss';
1921
2022const b = cn ( 'ydb-versions' ) ;
2123
22- interface VersionsProps {
23- cluster : TClusterInfo ;
24+ interface VersionsContainerProps {
25+ cluster ?: TClusterInfo ;
26+ loading ?: boolean ;
2427}
2528
26- export const Versions = ( { cluster} : VersionsProps ) => {
29+ export function VersionsContainer ( { cluster, loading } : VersionsContainerProps ) {
2730 const [ autoRefreshInterval ] = useAutoRefreshInterval ( ) ;
28- const versionToColor = useVersionToColorMap ( ) ;
29-
30- const versionsValues = useGetVersionValues ( cluster , versionToColor ) ;
3131 const { currentData, isLoading : isNodesLoading } = nodesApi . useGetNodesQuery (
3232 { tablets : false , fieldsRequired : [ 'SystemState' , 'SubDomainKey' ] } ,
3333 { pollingInterval : autoRefreshInterval } ,
3434 ) ;
35+ const versionToColor = useVersionToColorMap ( ) ;
36+
37+ const versionsValues = useGetVersionValues ( { cluster, versionToColor, clusterLoading : loading } ) ;
38+
39+ return (
40+ < LoaderWrapper loading = { loading || isNodesLoading } >
41+ < Versions
42+ versionsValues = { versionsValues }
43+ nodes = { currentData ?. Nodes }
44+ versionToColor = { versionToColor }
45+ />
46+ </ LoaderWrapper >
47+ ) ;
48+ }
3549
36- const nodes = currentData ?. Nodes ;
50+ interface VersionsProps {
51+ nodes ?: NodesPreparedEntity [ ] ;
52+ versionsValues : VersionValue [ ] ;
53+ versionToColor ?: VersionToColorMap ;
54+ }
55+
56+ function Versions ( { versionsValues, nodes, versionToColor} : VersionsProps ) {
3757 const [ groupByValue , setGroupByValue ] = React . useState < GroupByValue > ( GroupByValue . VERSION ) ;
3858 const [ expanded , setExpanded ] = React . useState ( false ) ;
3959
@@ -71,10 +91,6 @@ export const Versions = ({cluster}: VersionsProps) => {
7191 ) ;
7292 } ;
7393
74- if ( isNodesLoading ) {
75- return < Loader /> ;
76- }
77-
7894 const tenantNodes = getGroupedTenantNodes ( nodes , versionToColor , groupByValue ) ;
7995 const storageNodes = getGroupedStorageNodes ( nodes , versionToColor ) ;
8096 const otherNodes = getOtherNodes ( nodes , versionToColor ) ;
@@ -146,4 +162,4 @@ export const Versions = ({cluster}: VersionsProps) => {
146162 { otherNodesContent }
147163 </ div >
148164 ) ;
149- } ;
165+ }
0 commit comments