7
7
IAcmTableColumn ,
8
8
AcmAlert ,
9
9
AcmTable ,
10
+ AcmLabels ,
10
11
} from '../../../ui-components'
11
12
import { DiscoverdPolicyTableItem , useFetchPolicies } from './useFetchPolicies'
12
13
import { useTranslation } from '../../../lib/acm-i18next'
@@ -24,6 +25,7 @@ import {
24
25
severityCell ,
25
26
} from './ByCluster/common'
26
27
import { ClusterPolicyViolationIcons2 } from '../components/ClusterPolicyViolations'
28
+ import { exportObjectString } from '../../../resources/utils'
27
29
28
30
function nameCell ( item : DiscoverdPolicyTableItem ) : ReactNode {
29
31
return (
@@ -67,8 +69,17 @@ function clusterCell(item: DiscoverdPolicyTableItem): ReactNode | string {
67
69
return '-'
68
70
}
69
71
72
+ function labelsCell (
73
+ item : DiscoverdPolicyTableItem ,
74
+ labelMap : Record < string , { pairs ?: Record < string , string > ; labels ?: string [ ] } > | undefined
75
+ ) : ReactNode | string {
76
+ const labels = labelMap ?. [ item . id ] ?. pairs
77
+ return < AcmLabels labels = { labels } isCompact = { true } />
78
+ }
79
+
70
80
export default function DiscoveredPolicies ( ) {
71
- const { isFetching, data, err } = useFetchPolicies ( )
81
+ const { isFetching, data, labelData, err } = useFetchPolicies ( )
82
+ const { labelOptions, labelMap } = labelData || { }
72
83
const { t } = useTranslation ( )
73
84
74
85
const discoveredPoliciesCols = useMemo < IAcmTableColumn < DiscoverdPolicyTableItem > [ ] > (
@@ -99,6 +110,13 @@ export default function DiscoveredPolicies() {
99
110
id : 'kind' ,
100
111
exportContent : ( item : DiscoverdPolicyTableItem ) => item . kind ,
101
112
} ,
113
+ {
114
+ header : t ( 'table.labels' ) ,
115
+ cell : ( item : DiscoverdPolicyTableItem ) => labelsCell ( item , labelMap ) ,
116
+ exportContent : ( item : DiscoverdPolicyTableItem ) => {
117
+ return exportObjectString ( labelMap ? labelMap [ item . id ] ?. pairs : { } )
118
+ } ,
119
+ } ,
102
120
{
103
121
header : t ( 'Response action' ) ,
104
122
cell : 'responseAction' ,
@@ -139,7 +157,7 @@ export default function DiscoveredPolicies() {
139
157
exportContent : getSourceExportCSV ,
140
158
} ,
141
159
] ,
142
- [ t ]
160
+ [ labelMap , t ]
143
161
)
144
162
145
163
const filters = useMemo < ITableFilter < DiscoverdPolicyTableItem > [ ] > (
@@ -207,6 +225,14 @@ export default function DiscoveredPolicies() {
207
225
} ,
208
226
getResponseActionFilter ( t ) ,
209
227
getSeverityFilter ( t ) ,
228
+ {
229
+ id : 'label' ,
230
+ label : t ( 'Label' ) ,
231
+ options : labelOptions || [ ] ,
232
+ tableFilterFn : ( selectedValues , item ) => {
233
+ return selectedValues . some ( ( val ) => labelMap ?. [ item . id ] . labels . includes ( val ) )
234
+ } ,
235
+ } ,
210
236
{
211
237
id : 'source' ,
212
238
label : t ( 'Source' ) ,
@@ -216,7 +242,7 @@ export default function DiscoveredPolicies() {
216
242
} ,
217
243
} ,
218
244
] ,
219
- [ data , t ]
245
+ [ data , labelMap , labelOptions , t ]
220
246
)
221
247
222
248
if ( isFetching ) {
@@ -238,6 +264,7 @@ export default function DiscoveredPolicies() {
238
264
items = { data }
239
265
emptyState = { < AcmEmptyState title = { t ( `You don't have any policies.` ) } message = { t ( 'There are no policies.' ) } /> }
240
266
filters = { filters }
267
+ secondaryFilterIds = { [ 'label' ] }
241
268
showExportButton
242
269
exportFilePrefix = "discoveredPolicies"
243
270
/>
0 commit comments