Skip to content

Commit b38a59c

Browse files
committed
fix: add healthy/unknown signal toggle to inline view
1 parent fe65b9b commit b38a59c

File tree

3 files changed

+83
-13
lines changed

3 files changed

+83
-13
lines changed

src/components/step/header.js

+12-2
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,15 @@ import {
1818
} from '../';
1919
import { FLOW_DISPATCH_COMPONENTS, FLOW_DISPATCH_TYPES } from '../../reducers';
2020
import { FlowDispatchContext } from '../../contexts';
21-
import { MODES } from '../../constants';
21+
import { COMPONENTS, MODES } from '../../constants';
2222

2323
const StepHeader = ({
2424
stageId,
2525
levelId,
2626
stepId,
2727
step: { title, signals, link, config } = {},
2828
onDragHandle,
29+
markSelection,
2930
mode = MODES.INLINE,
3031
saveFlow,
3132
isStepExpanded,
@@ -132,7 +133,15 @@ const StepHeader = ({
132133
/>
133134
</div>
134135
) : (
135-
<div className="step-header" title={title}>
136+
<div
137+
onClick={() =>
138+
mode !== MODES.EDIT && markSelection
139+
? markSelection(COMPONENTS.STEP, stepId, { stageId, levelId })
140+
: null
141+
}
142+
className="step-header"
143+
title={title}
144+
>
136145
<HeadingText type={HeadingText.TYPE.HEADING_6} className="title">
137146
{title}
138147
</HeadingText>
@@ -159,6 +168,7 @@ StepHeader.propTypes = {
159168
stepId: PropTypes.string,
160169
step: PropTypes.object,
161170
onDragHandle: PropTypes.func,
171+
markSelection: PropTypes.func,
162172
mode: PropTypes.oneOf(Object.values(MODES)),
163173
saveFlow: PropTypes.func,
164174
isStepExpanded: PropTypes.bool,

src/components/step/index.js

+57-11
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ const Step = ({
4848
const [isSelected, setIsSelected] = useState(false);
4949
const [deleteModalHidden, setDeleteModalHidden] = useState(true);
5050
const [signalsListView, setSignalsListView] = useState(false);
51+
const [hideHealthy, setHideHealthy] = useState(true);
5152
const signalToDelete = useRef({});
5253
const isDragHandleClicked = useRef(false);
5354

@@ -168,9 +169,28 @@ const Step = ({
168169

169170
SignalsGrid.displayName = 'SignalsGrid';
170171

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 (
174194
<Signal
175195
key={guid}
176196
guid={guid}
@@ -180,9 +200,9 @@ const Step = ({
180200
status={status}
181201
mode={mode}
182202
/>
183-
)),
184-
[signals, mode, signalExpandOption]
185-
);
203+
);
204+
});
205+
}, [signals, mode, signalExpandOption, hideHealthy]);
186206
SignalsList.displayName = 'SignalsList';
187207

188208
const handleStepExpandCollapse = (e) => {
@@ -192,6 +212,15 @@ const Step = ({
192212
}
193213
};
194214

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+
195224
return (
196225
<div
197226
className={`step ${mode === MODES.STACKED ? 'stacked' : ''} ${
@@ -201,11 +230,6 @@ const Step = ({
201230
} ${[MODES.STACKED, MODES.INLINE].includes(mode) ? status : ''} ${
202231
isFaded ? 'faded' : ''
203232
}`}
204-
onClick={() =>
205-
mode !== MODES.EDIT && markSelection
206-
? markSelection(COMPONENTS.STEP, stepId, { stageId, levelId })
207-
: null
208-
}
209233
draggable={mode === MODES.EDIT}
210234
onDragStart={dragStartHandler}
211235
onDragOver={onDragOver}
@@ -218,6 +242,7 @@ const Step = ({
218242
stepId={stepId}
219243
step={thisStep}
220244
onDragHandle={dragHandleHandler}
245+
markSelection={markSelection}
221246
mode={mode}
222247
saveFlow={saveFlow}
223248
isStepExpanded={signalsListView}
@@ -261,6 +286,27 @@ const Step = ({
261286
signalsListView ? (
262287
<div className="list">
263288
<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+
)}
264310
</div>
265311
) : (
266312
<div className="grid">

src/components/step/styles.scss

+14
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,20 @@
2727
margin-top: 8px;
2828
}
2929

30+
.show-healthy-btn {
31+
background-color: transparent;
32+
border: 0;
33+
box-shadow: none;
34+
padding: 0;
35+
color: #6B757B;
36+
37+
span {
38+
font-size: 12px !important;
39+
font-weight: 400 !important;
40+
margin-right: 4px !important;
41+
}
42+
}
43+
3044
.step-header {
3145
display: grid;
3246
grid-template-columns: auto min-content;

0 commit comments

Comments
 (0)