@@ -3,42 +3,59 @@ import {StringParam, useQueryParams} from 'use-query-params';
33import { AccessDenied } from '../../components/Errors/403/AccessDenied' ;
44import { ResponseError } from '../../components/Errors/ResponseError/ResponseError' ;
55import type { RenderControls , RenderErrorMessage } from '../../components/PaginatedTable' ;
6- import { STORAGE_TYPES , VISIBLE_ENTITIES } from '../../store/reducers/storage/constants' ;
6+ import { useClusterBaseInfo } from '../../store/reducers/cluster/cluster' ;
7+ import { VISIBLE_ENTITIES } from '../../store/reducers/storage/constants' ;
78import { storageTypeSchema , visibleEntitiesSchema } from '../../store/reducers/storage/types' ;
89import type { StorageType , VisibleEntities } from '../../store/reducers/storage/types' ;
9- import type { AdditionalNodesProps } from '../../types/additionalProps' ;
1010import { NodesUptimeFilterValues , nodesUptimeFilterValuesSchema } from '../../utils/nodes' ;
11+ import { useAdditionalNodeProps } from '../AppWithClusters/useClusterData' ;
1112
1213import { StorageControls } from './StorageControls/StorageControls' ;
1314import { PaginatedStorageGroups } from './StorageGroups/PaginatedStorageGroups' ;
15+ import { useStorageGroupsSelectedColumns } from './StorageGroups/columns/hooks' ;
1416import { PaginatedStorageNodes } from './StorageNodes/PaginatedStorageNodes' ;
15-
16- import './Storage.scss' ;
17+ import { useStorageNodesSelectedColumns } from './StorageNodes/columns/hooks' ;
1718
1819interface PaginatedStorageProps {
1920 database ?: string ;
2021 nodeId ?: string ;
2122 parentContainer ?: Element | null ;
22- additionalNodesProps ?: AdditionalNodesProps ;
2323}
2424
25- export const PaginatedStorage = ( {
26- database,
27- nodeId,
28- parentContainer,
29- additionalNodesProps,
30- } : PaginatedStorageProps ) => {
25+ export const PaginatedStorage = ( { database, nodeId, parentContainer} : PaginatedStorageProps ) => {
26+ const { balancer} = useClusterBaseInfo ( ) ;
27+ const additionalNodesProps = useAdditionalNodeProps ( { balancer} ) ;
28+
3129 const [ queryParams , setQueryParams ] = useQueryParams ( {
3230 type : StringParam ,
3331 visible : StringParam ,
3432 search : StringParam ,
3533 uptimeFilter : StringParam ,
3634 } ) ;
3735 const storageType = storageTypeSchema . parse ( queryParams . type ) ;
36+ const isGroups = storageType === 'groups' ;
37+ const isNodes = storageType === 'nodes' ;
38+
3839 const visibleEntities = visibleEntitiesSchema . parse ( queryParams . visible ) ;
3940 const searchValue = queryParams . search ?? '' ;
4041 const nodesUptimeFilter = nodesUptimeFilterValuesSchema . parse ( queryParams . uptimeFilter ) ;
4142
43+ const {
44+ columnsToShow : storageNodesColumnsToShow ,
45+ columnsToSelect : storageNodesColumnsToSelect ,
46+ setColumns : setStorageNodesSelectedColumns ,
47+ } = useStorageNodesSelectedColumns ( {
48+ additionalNodesProps,
49+ visibleEntities,
50+ database,
51+ } ) ;
52+
53+ const {
54+ columnsToShow : storageGroupsColumnsToShow ,
55+ columnsToSelect : storageGroupsColumnsToSelect ,
56+ setColumns : setStorageGroupsSelectedColumns ,
57+ } = useStorageGroupsSelectedColumns ( visibleEntities ) ;
58+
4259 const handleTextFilterChange = ( value : string ) => {
4360 setQueryParams ( { search : value || undefined } , 'replaceIn' ) ;
4461 } ;
@@ -70,11 +87,19 @@ export const PaginatedStorage = ({
7087 } ;
7188
7289 const renderControls : RenderControls = ( { totalEntities, foundEntities, inited} ) => {
90+ const columnsToSelect = isGroups
91+ ? storageGroupsColumnsToSelect
92+ : storageNodesColumnsToSelect ;
93+
94+ const handleSelectedColumnsUpdate = isGroups
95+ ? setStorageGroupsSelectedColumns
96+ : setStorageNodesSelectedColumns ;
97+
7398 return (
7499 < StorageControls
75100 searchValue = { searchValue }
76101 handleSearchValueChange = { handleTextFilterChange }
77- withTypeSelector = { ! nodeId }
102+ withTypeSelector
78103 storageType = { storageType }
79104 handleStorageTypeChange = { handleStorageTypeChange }
80105 visibleEntities = { visibleEntities }
@@ -85,6 +110,8 @@ export const PaginatedStorage = ({
85110 entitiesCountCurrent = { foundEntities }
86111 entitiesCountTotal = { totalEntities }
87112 entitiesLoading = { ! inited }
113+ columnsToSelect = { columnsToSelect }
114+ handleSelectedColumnsUpdate = { handleSelectedColumnsUpdate }
88115 />
89116 ) ;
90117 } ;
@@ -97,18 +124,18 @@ export const PaginatedStorage = ({
97124 return < ResponseError error = { error } /> ;
98125 } ;
99126
100- if ( storageType === STORAGE_TYPES . nodes ) {
127+ if ( isNodes ) {
101128 return (
102129 < PaginatedStorageNodes
103130 searchValue = { searchValue }
104131 visibleEntities = { visibleEntities }
105132 nodesUptimeFilter = { nodesUptimeFilter }
106133 database = { database }
107- additionalNodesProps = { additionalNodesProps }
108134 onShowAll = { handleShowAllNodes }
109135 parentContainer = { parentContainer }
110136 renderControls = { renderControls }
111137 renderErrorMessage = { renderErrorMessage }
138+ columns = { storageNodesColumnsToShow }
112139 />
113140 ) ;
114141 }
@@ -123,6 +150,7 @@ export const PaginatedStorage = ({
123150 parentContainer = { parentContainer }
124151 renderControls = { renderControls }
125152 renderErrorMessage = { renderErrorMessage }
153+ columns = { storageGroupsColumnsToShow }
126154 />
127155 ) ;
128156} ;
0 commit comments