@@ -3,42 +3,59 @@ import {StringParam, useQueryParams} from 'use-query-params';
3
3
import { AccessDenied } from '../../components/Errors/403/AccessDenied' ;
4
4
import { ResponseError } from '../../components/Errors/ResponseError/ResponseError' ;
5
5
import 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' ;
7
8
import { storageTypeSchema , visibleEntitiesSchema } from '../../store/reducers/storage/types' ;
8
9
import type { StorageType , VisibleEntities } from '../../store/reducers/storage/types' ;
9
- import type { AdditionalNodesProps } from '../../types/additionalProps' ;
10
10
import { NodesUptimeFilterValues , nodesUptimeFilterValuesSchema } from '../../utils/nodes' ;
11
+ import { useAdditionalNodeProps } from '../AppWithClusters/useClusterData' ;
11
12
12
13
import { StorageControls } from './StorageControls/StorageControls' ;
13
14
import { PaginatedStorageGroups } from './StorageGroups/PaginatedStorageGroups' ;
15
+ import { useStorageGroupsSelectedColumns } from './StorageGroups/columns/hooks' ;
14
16
import { PaginatedStorageNodes } from './StorageNodes/PaginatedStorageNodes' ;
15
-
16
- import './Storage.scss' ;
17
+ import { useStorageNodesSelectedColumns } from './StorageNodes/columns/hooks' ;
17
18
18
19
interface PaginatedStorageProps {
19
20
database ?: string ;
20
21
nodeId ?: string ;
21
22
parentContainer ?: Element | null ;
22
- additionalNodesProps ?: AdditionalNodesProps ;
23
23
}
24
24
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
+
31
29
const [ queryParams , setQueryParams ] = useQueryParams ( {
32
30
type : StringParam ,
33
31
visible : StringParam ,
34
32
search : StringParam ,
35
33
uptimeFilter : StringParam ,
36
34
} ) ;
37
35
const storageType = storageTypeSchema . parse ( queryParams . type ) ;
36
+ const isGroups = storageType === 'groups' ;
37
+ const isNodes = storageType === 'nodes' ;
38
+
38
39
const visibleEntities = visibleEntitiesSchema . parse ( queryParams . visible ) ;
39
40
const searchValue = queryParams . search ?? '' ;
40
41
const nodesUptimeFilter = nodesUptimeFilterValuesSchema . parse ( queryParams . uptimeFilter ) ;
41
42
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
+
42
59
const handleTextFilterChange = ( value : string ) => {
43
60
setQueryParams ( { search : value || undefined } , 'replaceIn' ) ;
44
61
} ;
@@ -70,11 +87,19 @@ export const PaginatedStorage = ({
70
87
} ;
71
88
72
89
const renderControls : RenderControls = ( { totalEntities, foundEntities, inited} ) => {
90
+ const columnsToSelect = isGroups
91
+ ? storageGroupsColumnsToSelect
92
+ : storageNodesColumnsToSelect ;
93
+
94
+ const handleSelectedColumnsUpdate = isGroups
95
+ ? setStorageGroupsSelectedColumns
96
+ : setStorageNodesSelectedColumns ;
97
+
73
98
return (
74
99
< StorageControls
75
100
searchValue = { searchValue }
76
101
handleSearchValueChange = { handleTextFilterChange }
77
- withTypeSelector = { ! nodeId }
102
+ withTypeSelector
78
103
storageType = { storageType }
79
104
handleStorageTypeChange = { handleStorageTypeChange }
80
105
visibleEntities = { visibleEntities }
@@ -85,6 +110,8 @@ export const PaginatedStorage = ({
85
110
entitiesCountCurrent = { foundEntities }
86
111
entitiesCountTotal = { totalEntities }
87
112
entitiesLoading = { ! inited }
113
+ columnsToSelect = { columnsToSelect }
114
+ handleSelectedColumnsUpdate = { handleSelectedColumnsUpdate }
88
115
/>
89
116
) ;
90
117
} ;
@@ -97,18 +124,18 @@ export const PaginatedStorage = ({
97
124
return < ResponseError error = { error } /> ;
98
125
} ;
99
126
100
- if ( storageType === STORAGE_TYPES . nodes ) {
127
+ if ( isNodes ) {
101
128
return (
102
129
< PaginatedStorageNodes
103
130
searchValue = { searchValue }
104
131
visibleEntities = { visibleEntities }
105
132
nodesUptimeFilter = { nodesUptimeFilter }
106
133
database = { database }
107
- additionalNodesProps = { additionalNodesProps }
108
134
onShowAll = { handleShowAllNodes }
109
135
parentContainer = { parentContainer }
110
136
renderControls = { renderControls }
111
137
renderErrorMessage = { renderErrorMessage }
138
+ columns = { storageNodesColumnsToShow }
112
139
/>
113
140
) ;
114
141
}
@@ -123,6 +150,7 @@ export const PaginatedStorage = ({
123
150
parentContainer = { parentContainer }
124
151
renderControls = { renderControls }
125
152
renderErrorMessage = { renderErrorMessage }
153
+ columns = { storageGroupsColumnsToShow }
126
154
/>
127
155
) ;
128
156
} ;
0 commit comments