@@ -22,27 +22,24 @@ import DOMPurify from 'dompurify'
22
22
23
23
import {
24
24
capitalizeFirstLetter ,
25
- GVKType ,
26
25
highlightSearchText ,
27
26
K8S_EMPTY_GROUP ,
28
27
Nodes ,
29
28
NodeType ,
30
29
ReactSelectInputAction ,
31
30
RESOURCE_BROWSER_ROUTES ,
32
- TreeHeading ,
33
- TreeItem ,
34
31
TreeNode ,
35
32
TreeView ,
36
33
URL_FILTER_KEYS ,
37
34
useRegisterShortcut ,
38
35
} from '@devtron-labs/devtron-fe-common-lib'
39
36
40
- import { AggregationKeys } from '../../app/types'
41
- import { KIND_SEARCH_COMMON_STYLES , ResourceBrowserTabsId , SIDEBAR_KEYS } from '../Constants'
37
+ import { KIND_SEARCH_COMMON_STYLES , ResourceBrowserTabsId } from '../Constants'
42
38
import { K8sObjectOptionType , RBResourceSidebarDataAttributeType , SidebarType } from '../Types'
43
39
import { convertK8sObjectMapToOptionsList , convertResourceGroupListToK8sObjectList } from '../Utils'
44
40
import { KindSearchClearIndicator , KindSearchValueContainer } from './ResourceList.component'
45
41
import { K8sResourceListURLParams } from './types'
42
+ import { getRBSidebarTreeViewNodeId , getRBSidebarTreeViewNodes } from './utils'
46
43
47
44
const Sidebar = ( { apiResources, selectedResource, updateK8sResourceTab, updateTabLastSyncMoment } : SidebarType ) => {
48
45
const { registerShortcut, unregisterShortcut } = useRegisterShortcut ( )
@@ -199,102 +196,7 @@ const Sidebar = ({ apiResources, selectedResource, updateK8sResourceTab, updateT
199
196
200
197
const noOptionsMessage = ( ) => 'No matching kind'
201
198
202
- const getTreeViewNodeId = ( { Group, Version, Kind } : GVKType ) =>
203
- `${ Group . toLowerCase ( ) } -${ Version . toLowerCase ( ) } -${ Kind . toLowerCase ( ) } `
204
- const getTreeViewNodeDataAttributes = ( { Group, Version, Kind } : GVKType ) : RBResourceSidebarDataAttributeType => ( {
205
- 'data-group' : Group . toLowerCase ( ) ,
206
- 'data-version' : Version . toLowerCase ( ) ,
207
- 'data-kind' : Kind . toLowerCase ( ) ,
208
- } )
209
-
210
- const getTreeViewNodes = ( ) => {
211
- const fixedNodes : TreeNode < RBResourceSidebarDataAttributeType > [ ] = (
212
- [
213
- ! ! list ?. size &&
214
- ! ! list . get ( AggregationKeys . Nodes ) && {
215
- type : 'item' ,
216
- title : SIDEBAR_KEYS . nodes ,
217
- id : getTreeViewNodeId ( SIDEBAR_KEYS . nodeGVK ) ,
218
- dataAttributes : getTreeViewNodeDataAttributes ( SIDEBAR_KEYS . nodeGVK ) ,
219
- } ,
220
-
221
- ! ! list ?. size &&
222
- ! ! list . get ( AggregationKeys . Events ) && {
223
- type : 'item' ,
224
- title : SIDEBAR_KEYS . events ,
225
- id : getTreeViewNodeId ( SIDEBAR_KEYS . eventGVK ) ,
226
- dataAttributes : getTreeViewNodeDataAttributes ( SIDEBAR_KEYS . eventGVK ) ,
227
- } ,
228
-
229
- ! ! list ?. size &&
230
- ! ! list . get ( AggregationKeys . Namespaces ) && {
231
- type : 'item' ,
232
- title : SIDEBAR_KEYS . namespaces ,
233
- id : getTreeViewNodeId ( SIDEBAR_KEYS . namespaceGVK ) ,
234
- dataAttributes : getTreeViewNodeDataAttributes ( SIDEBAR_KEYS . namespaceGVK ) ,
235
- } ,
236
- ] satisfies TreeNode < RBResourceSidebarDataAttributeType > [ ]
237
- ) . filter ( Boolean )
238
-
239
- const dynamicNodesList = list ?. size
240
- ? [ ...list . values ( ) ] . filter (
241
- ( k8sObject ) =>
242
- ! (
243
- k8sObject . name === AggregationKeys . Events ||
244
- k8sObject . name === AggregationKeys . Namespaces ||
245
- k8sObject . name === AggregationKeys . Nodes
246
- ) ,
247
- )
248
- : [ ]
249
-
250
- const dynamicNodes = dynamicNodesList . map < TreeHeading < RBResourceSidebarDataAttributeType > > ( ( k8sObject ) => ( {
251
- id : `${ k8sObject . name } -parent` ,
252
- type : 'heading' ,
253
- title : k8sObject . name ,
254
- items : [ ...k8sObject . child . entries ( ) ]
255
- . filter ( ( [ key ] ) => {
256
- const keyLowerCased = key . toLowerCase ( )
257
- return ! (
258
- keyLowerCased === 'node' ||
259
- keyLowerCased === SIDEBAR_KEYS . namespaceGVK . Kind . toLowerCase ( ) ||
260
- keyLowerCased === SIDEBAR_KEYS . eventGVK . Kind . toLowerCase ( )
261
- )
262
- } )
263
- . map < TreeNode < RBResourceSidebarDataAttributeType > > ( ( [ key , value ] ) => {
264
- if ( value . data . length === 1 ) {
265
- const childData = value . data [ 0 ]
266
- const nodeName = childData . gvk . Kind
267
- return {
268
- type : 'item' ,
269
- title : nodeName ,
270
- id : getTreeViewNodeId ( childData . gvk ) ,
271
- dataAttributes : getTreeViewNodeDataAttributes ( childData . gvk ) ,
272
- } satisfies TreeItem < RBResourceSidebarDataAttributeType >
273
- }
274
-
275
- return {
276
- type : 'heading' ,
277
- id : `${ k8sObject . name } /${ key } -child` ,
278
- title : key ,
279
- dataAttributes : null ,
280
- items : value . data . map < TreeItem < RBResourceSidebarDataAttributeType > > ( ( childData ) => {
281
- const nodeName = childData . gvk . Group ? childData . gvk . Group : childData . gvk . Kind
282
-
283
- return {
284
- type : 'item' ,
285
- title : nodeName ,
286
- id : getTreeViewNodeId ( childData . gvk ) ,
287
- dataAttributes : getTreeViewNodeDataAttributes ( childData . gvk ) ,
288
- }
289
- } ) ,
290
- } satisfies TreeHeading < RBResourceSidebarDataAttributeType >
291
- } ) ,
292
- } ) )
293
-
294
- return fixedNodes . concat ( dynamicNodes )
295
- }
296
-
297
- const treeViewNodes = getTreeViewNodes ( )
199
+ const treeViewNodes = getRBSidebarTreeViewNodes ( list )
298
200
299
201
return (
300
202
< div className = "w-250 dc__no-shrink dc__overflow-hidden flexbox-col" >
@@ -331,7 +233,7 @@ const Sidebar = ({ apiResources, selectedResource, updateK8sResourceTab, updateT
331
233
< div className = "dc__overflow-auto flexbox-col flex-grow-1 dc__border-top-n1 p-8 dc__user-select-none" >
332
234
< TreeView < RBResourceSidebarDataAttributeType >
333
235
nodes = { treeViewNodes }
334
- selectedId = { getTreeViewNodeId (
236
+ selectedId = { getRBSidebarTreeViewNodeId (
335
237
selectedResource ?. gvk || { Group : '' , Version : '' , Kind : '' as NodeType } ,
336
238
) }
337
239
onSelect = { handleTreeViewNodeSelect }
0 commit comments