@@ -8,7 +8,7 @@ import {valueIsDefined} from '../../../utils';
88import { formatNumber } from '../../../utils/dataFormatters/dataFormatters' ;
99import i18n from '../i18n' ;
1010
11- import { ClusterMetricsCard , ClusterMetricsCardSkeleton } from './components/ClusterMetricsCard' ;
11+ import { ClusterDashboardSkeleton , ClusterMetricsCard } from './components/ClusterMetricsCard' ;
1212import { ClusterMetricsCores } from './components/ClusterMetricsCores' ;
1313import { ClusterMetricsMemory } from './components/ClusterMetricsMemory' ;
1414import { ClusterMetricsStorage } from './components/ClusterMetricsStorage' ;
@@ -43,95 +43,97 @@ interface ClusterDashboardProps {
4343 loading ?: boolean ;
4444}
4545
46- export function ClusterDashboard ( { cluster, groupStats = { } , loading} : ClusterDashboardProps ) {
47- const getDoughnuts = ( ) => {
48- if ( loading ) {
49- return Array . from ( '123' ) . map ( ( el ) => < ClusterMetricsCardSkeleton key = { el } /> ) ;
50- }
51- const metricsCards = [ ] ;
52- if ( isClusterInfoV2 ( cluster ) ) {
53- const { CoresUsed, NumberOfCpus} = cluster ;
54- if ( valueIsDefined ( CoresUsed ) && valueIsDefined ( NumberOfCpus ) ) {
55- metricsCards . push (
56- < ClusterMetricsCores value = { CoresUsed } capacity = { NumberOfCpus } key = "cores" /> ,
57- ) ;
58- }
59- }
60- const { StorageTotal, StorageUsed} = cluster ;
61- if ( valueIsDefined ( StorageTotal ) && valueIsDefined ( StorageUsed ) ) {
62- metricsCards . push (
63- < ClusterMetricsStorage key = "storage" value = { StorageUsed } capacity = { StorageTotal } /> ,
64- ) ;
65- }
66- const { MemoryTotal, MemoryUsed} = cluster ;
67- if ( valueIsDefined ( MemoryTotal ) && valueIsDefined ( MemoryUsed ) ) {
46+ export function ClusterDashboard ( props : ClusterDashboardProps ) {
47+ return (
48+ < div className = { b ( ) } >
49+ < Flex gap = { 4 } wrap >
50+ < Flex gap = { 4 } wrap = "nowrap" >
51+ < ClusterDoughnuts { ...props } />
52+ </ Flex >
53+ < div className = { b ( 'cards-container' ) } >
54+ < ClusterDashboardCards { ...props } />
55+ </ div >
56+ </ Flex >
57+ </ div >
58+ ) ;
59+ }
60+
61+ function ClusterDoughnuts ( { cluster, loading} : ClusterDashboardProps ) {
62+ if ( loading ) {
63+ return < ClusterDashboardSkeleton /> ;
64+ }
65+ const metricsCards = [ ] ;
66+ if ( isClusterInfoV2 ( cluster ) ) {
67+ const { CoresUsed, NumberOfCpus} = cluster ;
68+ if ( valueIsDefined ( CoresUsed ) && valueIsDefined ( NumberOfCpus ) ) {
6869 metricsCards . push (
69- < ClusterMetricsMemory key = "memory" value = { MemoryUsed } capacity = { MemoryTotal } /> ,
70+ < ClusterMetricsCores value = { CoresUsed } capacity = { NumberOfCpus } key = "cores" /> ,
7071 ) ;
7172 }
72- return metricsCards ;
73- } ;
73+ }
74+ const { StorageTotal, StorageUsed} = cluster ;
75+ if ( valueIsDefined ( StorageTotal ) && valueIsDefined ( StorageUsed ) ) {
76+ metricsCards . push (
77+ < ClusterMetricsStorage key = "storage" value = { StorageUsed } capacity = { StorageTotal } /> ,
78+ ) ;
79+ }
80+ const { MemoryTotal, MemoryUsed} = cluster ;
81+ if ( valueIsDefined ( MemoryTotal ) && valueIsDefined ( MemoryUsed ) ) {
82+ metricsCards . push (
83+ < ClusterMetricsMemory key = "memory" value = { MemoryUsed } capacity = { MemoryTotal } /> ,
84+ ) ;
85+ }
86+ return metricsCards ;
87+ }
7488
75- const getCards = ( ) => {
76- if ( loading ) {
77- return null ;
78- }
79- const cards = [ ] ;
89+ function ClusterDashboardCards ( { cluster, groupStats = { } , loading} : ClusterDashboardProps ) {
90+ if ( loading ) {
91+ return null ;
92+ }
93+ const cards = [ ] ;
94+
95+ const nodesRoles = getNodesRolesInfo ( cluster ) ;
96+ cards . push (
97+ < ClusterMetricsCard size = "l" key = { 'roles' } title = { i18n ( 'label_nodes' ) } >
98+ < Flex gap = { 2 } direction = "column" >
99+ < Amount value = { cluster ?. NodesAlive } />
100+
101+ { nodesRoles ?. length ? < Tags tags = { nodesRoles } gap = { 3 } /> : null }
102+ </ Flex >
103+ </ ClusterMetricsCard > ,
104+ ) ;
80105
81- const nodesRoles = getNodesRolesInfo ( cluster ) ;
106+ if ( Object . keys ( groupStats ) . length ) {
107+ const tags = getStorageGroupStats ( groupStats ) ;
108+ const total = getTotalStorageGroupsUsed ( groupStats ) ;
82109 cards . push (
83- < ClusterMetricsCard size = "l" key = { 'roles ' } title = { i18n ( 'label_nodes ' ) } >
110+ < ClusterMetricsCard size = "l" key = { 'groups ' } title = { i18n ( 'label_storage-groups ' ) } >
84111 < Flex gap = { 2 } direction = "column" >
85- < Amount value = { cluster ?. NodesAlive } />
86-
87- { nodesRoles ?. length ? < Tags tags = { nodesRoles } gap = { 3 } /> : null }
112+ < Amount value = { total } />
113+ < Tags tags = { tags } gap = { 3 } />
88114 </ Flex >
89115 </ ClusterMetricsCard > ,
90116 ) ;
117+ }
91118
92- if ( Object . keys ( groupStats ) . length ) {
93- const tags = getStorageGroupStats ( groupStats ) ;
94- const total = getTotalStorageGroupsUsed ( groupStats ) ;
95- cards . push (
96- < ClusterMetricsCard size = "l" key = { 'groups' } title = { i18n ( 'label_storage-groups' ) } >
97- < Flex gap = { 2 } direction = "column" >
98- < Amount value = { total } />
99- < Tags tags = { tags } gap = { 3 } />
100- </ Flex >
101- </ ClusterMetricsCard > ,
102- ) ;
103- }
104-
105- const dataCenters = getDCInfo ( cluster ) ;
106- if ( dataCenters ?. length ) {
107- cards . push (
108- < ClusterMetricsCard size = "l" key = { 'hosts' } title = { i18n ( 'label_hosts' ) } >
109- < Flex gap = { 2 } direction = "column" >
110- < Amount value = { cluster ?. Hosts } />
111- < Tags tags = { dataCenters } gap = { 3 } />
112- </ Flex >
113- </ ClusterMetricsCard > ,
114- ) ;
115- }
116-
117- if ( cluster . Tenants ) {
118- cards . push (
119- < ClusterMetricsCard size = "l" key = "tenants" title = { i18n ( 'label_databases' ) } >
120- < Amount value = { cluster ?. Tenants } />
121- </ ClusterMetricsCard > ,
122- ) ;
123- }
124- return cards ;
125- } ;
126-
127- return (
128- < div className = { b ( ) } >
129- < Flex gap = { 4 } wrap >
130- < Flex gap = { 4 } wrap = "nowrap" >
131- { getDoughnuts ( ) }
119+ const dataCenters = getDCInfo ( cluster ) ;
120+ if ( dataCenters ?. length ) {
121+ cards . push (
122+ < ClusterMetricsCard size = "l" key = { 'hosts' } title = { i18n ( 'label_hosts' ) } >
123+ < Flex gap = { 2 } direction = "column" >
124+ < Amount value = { cluster ?. Hosts } />
125+ < Tags tags = { dataCenters } gap = { 3 } />
132126 </ Flex >
133- < div className = { b ( 'cards-container' ) } > { getCards ( ) } </ div >
134- </ Flex >
135- </ div >
136- ) ;
127+ </ ClusterMetricsCard > ,
128+ ) ;
129+ }
130+
131+ if ( cluster . Tenants ) {
132+ cards . push (
133+ < ClusterMetricsCard size = "l" key = "tenants" title = { i18n ( 'label_databases' ) } >
134+ < Amount value = { cluster ?. Tenants } />
135+ </ ClusterMetricsCard > ,
136+ ) ;
137+ }
138+ return cards ;
137139}
0 commit comments