@@ -5,7 +5,10 @@ import type {TPoolStats} from '../../types/api/nodes';
55import type { TTabletStateInfo } from '../../types/api/tablet' ;
66import { valueIsDefined } from '../../utils' ;
77import { EMPTY_DATA_PLACEHOLDER } from '../../utils/constants' ;
8- import { formatStorageValuesToGb } from '../../utils/dataFormatters/dataFormatters' ;
8+ import {
9+ formatStorageValues ,
10+ formatStorageValuesToGb ,
11+ } from '../../utils/dataFormatters/dataFormatters' ;
912import { getSpaceUsageSeverity } from '../../utils/storage' ;
1013import type { Column } from '../../utils/tableUtils/types' ;
1114import { CellWithPopover } from '../CellWithPopover/CellWithPopover' ;
@@ -111,6 +114,29 @@ export function getMemoryColumn<
111114 resizeMinWidth : 170 ,
112115 } ;
113116}
117+ export function getRAMColumn < T extends { MemoryUsed ?: string ; MemoryLimit ?: string } > ( ) : Column < T > {
118+ return {
119+ name : NODES_COLUMNS_IDS . RAM ,
120+ header : NODES_COLUMNS_TITLES . RAM ,
121+ sortAccessor : ( { MemoryUsed = 0 } ) => Number ( MemoryUsed ) ,
122+ defaultOrder : DataTable . DESCENDING ,
123+ render : ( { row} ) => (
124+ < ProgressViewer
125+ value = { row . MemoryUsed }
126+ capacity = { row . MemoryLimit }
127+ formatValues = { ( value , total ) =>
128+ formatStorageValues ( value , total , 'gb' , undefined , true )
129+ }
130+ colorizeProgress
131+ vertical
132+ hideCapacity
133+ />
134+ ) ,
135+ align : DataTable . LEFT ,
136+ width : 85 ,
137+ resizeMinWidth : 40 ,
138+ } ;
139+ }
114140export function getSharedCacheUsageColumn <
115141 T extends { SharedCacheUsed ?: string | number ; SharedCacheLimit ?: string | number } ,
116142> ( ) : Column < T > {
@@ -143,6 +169,34 @@ export function getCpuColumn<T extends {PoolStats?: TPoolStats[]}>(): Column<T>
143169 resizeMinWidth : 60 ,
144170 } ;
145171}
172+ export function getTotalCpuColumn < T extends { PoolStats ?: TPoolStats [ ] } > ( ) : Column < T > {
173+ return {
174+ name : NODES_COLUMNS_IDS . TotalCPU ,
175+ header : NODES_COLUMNS_TITLES . TotalCPU ,
176+ sortAccessor : ( { PoolStats = [ ] } ) => Math . max ( ...PoolStats . map ( ( { Usage} ) => Number ( Usage ) ) ) ,
177+ defaultOrder : DataTable . DESCENDING ,
178+ render : ( { row} ) => {
179+ if ( ! row . PoolStats ) {
180+ return EMPTY_DATA_PLACEHOLDER ;
181+ }
182+
183+ const totalPoolUsage = row . PoolStats . reduce ( ( acc , pool ) => acc + ( pool . Usage || 0 ) , 0 ) ;
184+
185+ return (
186+ < ProgressViewer
187+ value = { totalPoolUsage }
188+ capacity = { 1 }
189+ colorizeProgress
190+ percents
191+ vertical
192+ />
193+ ) ;
194+ } ,
195+ align : DataTable . LEFT ,
196+ width : 85 ,
197+ resizeMinWidth : 40 ,
198+ } ;
199+ }
146200export function getLoadAverageColumn < T extends { LoadAveragePercents ?: number [ ] } > ( ) : Column < T > {
147201 return {
148202 name : NODES_COLUMNS_IDS . LoadAverage ,
0 commit comments