@@ -22,7 +22,7 @@ import {
22
22
faExclamationTriangle ,
23
23
faCheck ,
24
24
} from '@fortawesome/free-solid-svg-icons'
25
- import { CippTable } from 'src/components/tables'
25
+ import { CippTable , cellBooleanFormatter } from 'src/components/tables'
26
26
import { useSelector } from 'react-redux'
27
27
import { useNavigate } from 'react-router-dom'
28
28
import { CippPage } from 'src/components/layout/CippPage'
@@ -32,6 +32,7 @@ import { queryString } from 'src/helpers'
32
32
import { cellGenericFormatter } from 'src/components/tables/CellGenericFormat'
33
33
import { useExecBestPracticeAnalyserMutation } from 'src/store/api/reports'
34
34
import { ModalService } from 'src/components/utilities'
35
+ import { cellTableFormatter } from 'src/components/tables/CellTable'
35
36
const RefreshAction = ( ) => {
36
37
const [ execBestPracticeAnalyser , { isLoading, isSuccess, error } ] =
37
38
useExecBestPracticeAnalyserMutation ( )
@@ -58,7 +59,7 @@ const RefreshAction = () => {
58
59
)
59
60
}
60
61
const BestPracticeAnalyser = ( ) => {
61
- const { data : templates = [ ] } = useGenericGetRequestQuery ( {
62
+ const { data : templates = [ ] , isLoading : templatesfetch } = useGenericGetRequestQuery ( {
62
63
path : 'api/listBPATemplates' ,
63
64
} )
64
65
let navigate = useNavigate ( )
@@ -102,18 +103,36 @@ const BestPracticeAnalyser = () => {
102
103
return acc ? acc [ part ] : undefined
103
104
} , obj )
104
105
}
105
-
106
- // Set columns
107
106
const flatObj = graphrequest . data . Columns
108
- flatObj . map ( ( col ) =>
107
+
108
+ flatObj . map ( ( col ) => {
109
+ // Determine the cell selector based on the 'formatter' property
110
+ let cellSelector
111
+ if ( col . formatter ) {
112
+ switch ( col . formatter ) {
113
+ case 'bool' :
114
+ cellSelector = cellBooleanFormatter ( )
115
+ break
116
+ case 'table' :
117
+ cellSelector = cellTableFormatter ( col . value )
118
+ break
119
+ default :
120
+ cellSelector = cellGenericFormatter ( )
121
+ break
122
+ }
123
+ } else {
124
+ cellSelector = cellGenericFormatter ( )
125
+ }
126
+
109
127
QueryColumns . data . push ( {
110
128
name : col . name ,
111
129
selector : ( row ) => getNestedValue ( row , col . value ) ,
112
130
sortable : true ,
113
131
exportSelector : col . value ,
114
- cell : cellGenericFormatter ( ) ,
115
- } ) ,
116
- )
132
+ cell : cellSelector , // Use the determined cell selector
133
+ } )
134
+ } )
135
+
117
136
QueryColumns . set = true
118
137
}
119
138
@@ -157,13 +176,14 @@ const BestPracticeAnalyser = () => {
157
176
< RFFCFormSelect
158
177
name = "reportTemplate"
159
178
label = "Select a report"
160
- placeholder = { 'Select a report' }
179
+ placeholder = { templatesfetch ? 'Loading...' : 'Select a report' }
161
180
values = { templates . map ( ( template ) => ( {
162
181
label : template . Name ,
163
182
value : template . Name ,
164
183
} ) ) }
165
184
/>
166
185
</ CCol >
186
+ { templatesfetch && < CSpinner /> }
167
187
</ CRow >
168
188
< CRow > </ CRow >
169
189
< CRow className = "mb-3" >
@@ -187,11 +207,12 @@ const BestPracticeAnalyser = () => {
187
207
< CRow >
188
208
< CCol >
189
209
< CippPage title = "Report Results" tenantSelector = { false } >
190
- { ! SearchNow && < span > Choose a BPA Report to get started.</ span > }
191
- { graphrequest . isSuccess && QueryColumns . set && SearchNow && (
210
+ { graphrequest . isUninitialized && < span > Choose a BPA Report to get started.</ span > }
211
+ { graphrequest . isFetching && < CSpinner /> }
212
+ { graphrequest . isSuccess && QueryColumns . set && (
192
213
< CCard className = "content-card" >
193
214
< CCardHeader className = "d-flex justify-content-between align-items-center" >
194
- < CCardTitle > Results </ CCardTitle >
215
+ < CCardTitle > Best Practice Report </ CCardTitle >
195
216
</ CCardHeader >
196
217
< CCardBody >
197
218
< CippTable
0 commit comments