@@ -48,6 +48,7 @@ const Step = ({
48
48
const [ isSelected , setIsSelected ] = useState ( false ) ;
49
49
const [ deleteModalHidden , setDeleteModalHidden ] = useState ( true ) ;
50
50
const [ signalsListView , setSignalsListView ] = useState ( false ) ;
51
+ const [ hideHealthy , setHideHealthy ] = useState ( true ) ;
51
52
const signalToDelete = useRef ( { } ) ;
52
53
const isDragHandleClicked = useRef ( false ) ;
53
54
@@ -168,9 +169,28 @@ const Step = ({
168
169
169
170
SignalsGrid . displayName = 'SignalsGrid' ;
170
171
171
- const SignalsList = memo (
172
- ( ) =>
173
- signals . map ( ( { guid, name, status, type } ) => (
172
+ const SignalsList = memo ( ( ) => {
173
+ if ( mode === MODES . EDIT ) {
174
+ return signals . map ( ( { guid, name, status, type } ) => {
175
+ return (
176
+ < Signal
177
+ key = { guid }
178
+ guid = { guid }
179
+ type = { type }
180
+ name = { signalDisplayName ( { name, guid } ) }
181
+ onDelete = { ( ) => openDeleteModalHandler ( guid , name ) }
182
+ status = { status }
183
+ mode = { mode }
184
+ />
185
+ ) ;
186
+ } ) ;
187
+ }
188
+ const filteredSignals = ! hideHealthy
189
+ ? signals
190
+ : signals . filter ( ( s ) => s . status !== 'success' && s . status !== 'unknown' ) ;
191
+
192
+ return filteredSignals . map ( ( { guid, name, status, type } ) => {
193
+ return (
174
194
< Signal
175
195
key = { guid }
176
196
guid = { guid }
@@ -180,9 +200,9 @@ const Step = ({
180
200
status = { status }
181
201
mode = { mode }
182
202
/>
183
- ) ) ,
184
- [ signals , mode , signalExpandOption ]
185
- ) ;
203
+ ) ;
204
+ } ) ;
205
+ } , [ signals , mode , signalExpandOption , hideHealthy ] ) ;
186
206
SignalsList . displayName = 'SignalsList' ;
187
207
188
208
const handleStepExpandCollapse = ( e ) => {
@@ -192,6 +212,15 @@ const Step = ({
192
212
}
193
213
} ;
194
214
215
+ const renderButtonText = ( ) => {
216
+ const healthySignalCount = signals . filter (
217
+ ( s ) => s . status === 'success' || s . status === 'unknown'
218
+ ) . length ;
219
+ const firstWord = hideHealthy ? 'Show' : 'Hide' ;
220
+
221
+ return `${ firstWord } ${ healthySignalCount } healthy/unknown signal(s)` ;
222
+ } ;
223
+
195
224
return (
196
225
< div
197
226
className = { `step ${ mode === MODES . STACKED ? 'stacked' : '' } ${
@@ -201,11 +230,6 @@ const Step = ({
201
230
} ${ [ MODES . STACKED , MODES . INLINE ] . includes ( mode ) ? status : '' } ${
202
231
isFaded ? 'faded' : ''
203
232
} `}
204
- onClick = { ( ) =>
205
- mode !== MODES . EDIT && markSelection
206
- ? markSelection ( COMPONENTS . STEP , stepId , { stageId, levelId } )
207
- : null
208
- }
209
233
draggable = { mode === MODES . EDIT }
210
234
onDragStart = { dragStartHandler }
211
235
onDragOver = { onDragOver }
@@ -218,6 +242,7 @@ const Step = ({
218
242
stepId = { stepId }
219
243
step = { thisStep }
220
244
onDragHandle = { dragHandleHandler }
245
+ markSelection = { markSelection }
221
246
mode = { mode }
222
247
saveFlow = { saveFlow }
223
248
isStepExpanded = { signalsListView }
@@ -261,6 +286,27 @@ const Step = ({
261
286
signalsListView ? (
262
287
< div className = "list" >
263
288
< SignalsList />
289
+ { signals . filter (
290
+ ( s ) => s . status === 'success' || s . status === 'unknown'
291
+ ) . length > 0 ? (
292
+ < Button
293
+ className = "show-healthy-btn"
294
+ iconType = {
295
+ hideHealthy
296
+ ? Button . ICON_TYPE . INTERFACE__CHEVRON__CHEVRON_RIGHT
297
+ : Button . ICON_TYPE . INTERFACE__CHEVRON__CHEVRON_TOP
298
+ }
299
+ ariaLabel = "Expand/collapse signals"
300
+ variant = { Button . VARIANT . TERTIARY }
301
+ onClick = { ( ) =>
302
+ setHideHealthy ( ( prevHideHealthy ) => ! prevHideHealthy )
303
+ }
304
+ >
305
+ { renderButtonText ( ) }
306
+ </ Button >
307
+ ) : (
308
+ ''
309
+ ) }
264
310
</ div >
265
311
) : (
266
312
< div className = "grid" >
0 commit comments