11import React from 'react' ;
22
3+ import { TableColumnSetup } from '@gravity-ui/uikit' ;
34import { StringParam , useQueryParams } from 'use-query-params' ;
45
56import { EntitiesCount } from '../../components/EntitiesCount' ;
@@ -27,13 +28,12 @@ import {cn} from '../../utils/cn';
2728import { useTypedDispatch , useTypedSelector } from '../../utils/hooks' ;
2829import {
2930 NodesUptimeFilterValues ,
30- isSortableNodesProperty ,
3131 isUnavailableNode ,
3232 nodesUptimeFilterValuesSchema ,
3333} from '../../utils/nodes' ;
3434
35- import { getNodesColumns } from './columns/columns' ;
3635import { NODES_COLUMNS_WIDTH_LS_KEY } from './columns/constants' ;
36+ import { useNodesSelectedColumns } from './columns/hooks' ;
3737import { getNodes } from './getNodes' ;
3838import i18n from './i18n' ;
3939
@@ -69,6 +69,11 @@ export const PaginatedNodes = ({
6969 return { path, database, searchValue, problemFilter, uptimeFilter} ;
7070 } , [ path , database , searchValue , problemFilter , uptimeFilter ] ) ;
7171
72+ const { columnsToShow, columnsToSelect, setColumns} = useNodesSelectedColumns ( {
73+ getNodeRef : additionalNodesProps ?. getNodeRef ,
74+ database,
75+ } ) ;
76+
7277 const getRowClassName : GetRowClassName < NodesPreparedEntity > = ( row ) => {
7378 return b ( 'node' , { unavailable : isUnavailableNode ( row ) } ) ;
7479 } ;
@@ -102,6 +107,13 @@ export const PaginatedNodes = ({
102107 label = { 'Nodes' }
103108 loading = { ! inited }
104109 />
110+ < TableColumnSetup
111+ popupWidth = { 200 }
112+ items = { columnsToSelect }
113+ showStatus
114+ onUpdate = { setColumns }
115+ sortable = { false }
116+ />
105117 </ React . Fragment >
106118 ) ;
107119 } ;
@@ -125,20 +137,11 @@ export const PaginatedNodes = ({
125137 return < ResponseError error = { error } /> ;
126138 } ;
127139
128- const rawColumns = getNodesColumns ( {
129- getNodeRef : additionalNodesProps ?. getNodeRef ,
130- database,
131- } ) ;
132-
133- const columns = rawColumns . map ( ( column ) => {
134- return { ...column , sortable : isSortableNodesProperty ( column . name ) } ;
135- } ) ;
136-
137140 return (
138141 < ResizeablePaginatedTable
139142 columnsWidthLSKey = { NODES_COLUMNS_WIDTH_LS_KEY }
140143 parentContainer = { parentContainer }
141- columns = { columns }
144+ columns = { columnsToShow }
142145 fetchData = { getNodes }
143146 limit = { 50 }
144147 renderControls = { renderControls }
0 commit comments