@@ -13,6 +13,7 @@ import {
13
13
Content ,
14
14
Brand ,
15
15
Tooltip ,
16
+ Bullseye ,
16
17
} from '@patternfly/react-core' ;
17
18
import {
18
19
Table ,
@@ -47,10 +48,9 @@ import { WorkspaceConnectAction } from '~/app/pages/Workspaces/WorkspaceConnectA
47
48
import { WorkspaceStartActionModal } from '~/app/pages/Workspaces/workspaceActions/WorkspaceStartActionModal' ;
48
49
import { WorkspaceRestartActionModal } from '~/app/pages/Workspaces/workspaceActions/WorkspaceRestartActionModal' ;
49
50
import { WorkspaceStopActionModal } from '~/app/pages/Workspaces/workspaceActions/WorkspaceStopActionModal' ;
51
+ import EmptyStateWithClearFilters from '~/shared/components/EmptyStateWithClearFilters' ; // Import the new component
50
52
import Filter , { FilteredColumn , FilterRef } from 'shared/components/Filter' ; // Import FilterRef
51
53
import { formatRam } from 'shared/utilities/WorkspaceUtils' ;
52
- import EmptyStateWithClearFilters from '~/shared/components/EmptyStateWithClearFilters' ; // Import the new component
53
- import { Bullseye } from '@patternfly/react-core' ; // Import Bullseye if not already imported
54
54
55
55
export enum ActionType {
56
56
ViewDetails ,
@@ -200,19 +200,21 @@ export const Workspaces: React.FunctionComponent = () => {
200
200
> = { } ; // Initialize the redirect status dictionary
201
201
workspaceRedirectStatus = buildWorkspaceRedirectStatus ( workspaceKinds ) ; // Populate the dictionary
202
202
203
- // Table columns
204
- const columnNames : WorkspacesColumnNames = {
205
- redirectStatus : 'Redirect Status' ,
206
- name : 'Name' ,
207
- kind : 'Kind' ,
208
- image : 'Image' ,
209
- podConfig : 'Pod Config' ,
210
- state : 'State' ,
211
- homeVol : 'Home Vol' ,
212
- cpu : 'CPU' ,
213
- ram : 'Memory' ,
214
- lastActivity : 'Last Activity' ,
215
- } ;
203
+ const columnNames : WorkspacesColumnNames = React . useMemo (
204
+ ( ) => ( {
205
+ redirectStatus : 'Redirect Status' ,
206
+ name : 'Name' ,
207
+ kind : 'Kind' ,
208
+ image : 'Image' ,
209
+ podConfig : 'Pod Config' ,
210
+ state : 'State' ,
211
+ homeVol : 'Home Vol' ,
212
+ cpu : 'CPU' ,
213
+ ram : 'Memory' ,
214
+ lastActivity : 'Last Activity' ,
215
+ } ) ,
216
+ [ ] ,
217
+ ) ;
216
218
217
219
const filterableColumns = {
218
220
name : 'Name' ,
@@ -258,41 +260,43 @@ export const Workspaces: React.FunctionComponent = () => {
258
260
expandedWorkspacesNames . includes ( workspace . name ) ;
259
261
260
262
// filter function to pass to the filter component
261
- const onFilter = React . useCallback ( ( filters : FilteredColumn [ ] ) => {
262
- // Search name with search value
263
- let filteredWorkspaces = initialWorkspaces ;
264
- filters . forEach ( ( filter ) => {
265
- let searchValueInput : RegExp ;
266
- try {
267
- searchValueInput = new RegExp ( filter . value , 'i' ) ;
268
- } catch {
269
- searchValueInput = new RegExp ( filter . value . replace ( / [ . * + ? ^ $ { } ( ) | [ \] \\ ] / g, '\\$&' ) , 'i' ) ;
270
- }
271
-
272
- filteredWorkspaces = filteredWorkspaces . filter ( ( workspace ) => {
273
- if ( filter . value === '' ) {
274
- return true ;
263
+ const onFilter = React . useCallback (
264
+ ( filters : FilteredColumn [ ] ) => {
265
+ // Search name with search value
266
+ let filteredWorkspaces = initialWorkspaces ;
267
+ filters . forEach ( ( filter ) => {
268
+ let searchValueInput : RegExp ;
269
+ try {
270
+ searchValueInput = new RegExp ( filter . value , 'i' ) ;
271
+ } catch {
272
+ searchValueInput = new RegExp ( filter . value . replace ( / [ . * + ? ^ $ { } ( ) | [ \] \\ ] / g, '\\$&' ) , 'i' ) ;
275
273
}
276
- switch ( filter . columnName ) {
277
- case columnNames . name :
278
- return workspace . name . search ( searchValueInput ) >= 0 ;
279
- case columnNames . kind :
280
- return workspace . kind . search ( searchValueInput ) >= 0 ;
281
- case columnNames . image :
282
- return workspace . options . imageConfig . search ( searchValueInput ) >= 0 ;
283
- case columnNames . podConfig :
284
- return workspace . options . podConfig . search ( searchValueInput ) >= 0 ;
285
- case columnNames . state :
286
- return WorkspaceState [ workspace . status . state ] . search ( searchValueInput ) >= 0 ;
287
- case columnNames . homeVol :
288
- return workspace . podTemplate . volumes . home . search ( searchValueInput ) >= 0 ;
289
- default :
274
+
275
+ filteredWorkspaces = filteredWorkspaces . filter ( ( workspace ) => {
276
+ if ( filter . value === '' ) {
290
277
return true ;
291
- }
278
+ }
279
+ switch ( filter . columnName ) {
280
+ case columnNames . name :
281
+ return workspace . name . search ( searchValueInput ) >= 0 ;
282
+ case columnNames . kind :
283
+ return workspace . kind . search ( searchValueInput ) >= 0 ;
284
+ case columnNames . image :
285
+ return workspace . options . imageConfig . search ( searchValueInput ) >= 0 ;
286
+ case columnNames . podConfig :
287
+ return workspace . options . podConfig . search ( searchValueInput ) >= 0 ;
288
+ case columnNames . state :
289
+ return WorkspaceState [ workspace . status . state ] . search ( searchValueInput ) >= 0 ;
290
+ case columnNames . homeVol :
291
+ return workspace . podTemplate . volumes . home . search ( searchValueInput ) >= 0 ;
292
+ default :
293
+ return true ;
294
+ }
295
+ } ) ;
292
296
} ) ;
293
- } ) ;
294
- setWorkspaces ( filteredWorkspaces ) ;
295
- } , [ initialWorkspaces , columnNames ]
297
+ setWorkspaces ( filteredWorkspaces ) ;
298
+ } ,
299
+ [ initialWorkspaces , columnNames ] ,
296
300
) ;
297
301
298
302
const emptyState = React . useMemo (
@@ -576,7 +580,12 @@ export const Workspaces: React.FunctionComponent = () => {
576
580
</ Content >
577
581
< br />
578
582
< Content style = { { display : 'flex' , alignItems : 'flex-start' , columnGap : '20px' } } >
579
- < Filter ref = { filterRef } id = "filter-workspaces" onFilter = { onFilter } columnNames = { filterableColumns } />
583
+ < Filter
584
+ ref = { filterRef }
585
+ id = "filter-workspaces"
586
+ onFilter = { onFilter }
587
+ columnNames = { filterableColumns }
588
+ />
580
589
< Button variant = "primary" ouiaId = "Primary" onClick = { createWorkspace } >
581
590
Create Workspace
582
591
</ Button >
@@ -705,4 +714,4 @@ export const Workspaces: React.FunctionComponent = () => {
705
714
</ DrawerContent >
706
715
</ Drawer >
707
716
) ;
708
- } ;
717
+ } ;
0 commit comments