-
Notifications
You must be signed in to change notification settings - Fork 21
Expand file tree
/
Copy pathNodesTable.tsx
More file actions
47 lines (40 loc) · 1.45 KB
/
NodesTable.tsx
File metadata and controls
47 lines (40 loc) · 1.45 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import type {Column} from '@gravity-ui/react-data-table';
import {ResizeableDataTable} from '../../../components/ResizeableDataTable/ResizeableDataTable';
import {
getCpuColumn,
getHostColumn,
getLoadAverageColumn,
getNodeIdColumn,
getRAMColumn,
getUptimeColumn,
} from '../../../components/nodesColumns/columns';
import type {GetNodesColumnsParams} from '../../../components/nodesColumns/types';
import type {NodesPreparedEntity} from '../../../store/reducers/nodes/types';
import {DEFAULT_TABLE_SETTINGS} from '../../../utils/constants';
import {useAdditionalNodesProps} from '../../../utils/hooks/useAdditionalNodesProps';
const VERSIONS_COLUMNS_WIDTH_LS_KEY = 'versionsTableColumnsWidth';
function getColumns(params: GetNodesColumnsParams): Column<NodesPreparedEntity>[] {
return [
getNodeIdColumn(),
getHostColumn(params),
getUptimeColumn(),
getRAMColumn(),
getCpuColumn(),
getLoadAverageColumn(),
];
}
interface NodesTableProps {
nodes: NodesPreparedEntity[];
}
export const NodesTable = ({nodes}: NodesTableProps) => {
const additionalNodesProps = useAdditionalNodesProps();
const columns = getColumns({getNodeRef: additionalNodesProps?.getNodeRef});
return (
<ResizeableDataTable
columnsWidthLSKey={VERSIONS_COLUMNS_WIDTH_LS_KEY}
data={nodes}
columns={columns}
settings={DEFAULT_TABLE_SETTINGS}
/>
);
};