Skip to content

Commit

Permalink
Tune processor states
Browse files Browse the repository at this point in the history
Signed-off-by: Tyler Ohlsen <[email protected]>
  • Loading branch information
ohltyler committed Feb 7, 2025
1 parent fe7cef4 commit 10b725d
Showing 1 changed file with 65 additions and 15 deletions.
80 changes: 65 additions & 15 deletions public/pages/workflow_detail/workflow_inputs/processors_list.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,8 @@ import {
EuiAccordion,
EuiSpacer,
EuiText,
EuiIconTip,
EuiIcon,
EuiCallOut,
} from '@elastic/eui';
import { cloneDeep, isEmpty } from 'lodash';
import { getIn, useFormikContext } from 'formik';
Expand Down Expand Up @@ -85,6 +86,11 @@ export function ProcessorsList(props: ProcessorsListProps) {
const [isPopoverOpen, setPopover] = useState(false);
const [processors, setProcessors] = useState<IProcessorConfig[]>([]);

// Accordions do not persist an open/closed state, so we manually persist
const [processorOpenState, setProcessorOpenState] = useState<{
[processorId: string]: boolean;
}>({});

function clearProcessorErrors(): void {
if (props.context === PROCESSOR_CONTEXT.INGEST) {
dispatch(setIngestPipelineErrors({ errors: {} }));
Expand Down Expand Up @@ -379,31 +385,60 @@ export function ProcessorsList(props: ProcessorsListProps) {
`${processorIndex}.errorMsg`,
undefined
);
const errorFound =
processorFormError !== undefined ||
processorRuntimeError !== undefined;
const isAddedProcessor =
processorAdded && processorIndex === processors.length - 1;
const processorOpen =
processorOpenState[processor.id] ?? isAddedProcessor;
const errorMsg = processorFormError
? 'Form error(s) detected'
: 'Runtime error(s) detected';

return (
<EuiFlexItem key={processorIndex}>
<EuiPanel paddingSize="s">
<EuiAccordion
initialIsOpen={
processorAdded && processorIndex === processors.length - 1
}
initialIsOpen={isAddedProcessor}
id={`accordion${processor.id}`}
onToggle={(isOpen) => {
setProcessorOpenState({
...processorOpenState,
[processor.id]: isOpen,
});
}}
buttonContent={
<EuiFlexGroup direction="row">
<EuiFlexGroup direction="column" gutterSize="none">
<EuiFlexItem grow={false}>
<EuiText>{`${processor.name || 'Processor'}`}</EuiText>
</EuiFlexItem>
{(processorFormError !== undefined ||
processorRuntimeError !== undefined) && (
{errorFound && !processorOpen && (
<EuiFlexItem grow={false}>
<EuiIconTip
aria-label="Warning"
size="m"
type="alert"
color="danger"
content={processorFormError || processorRuntimeError}
position="right"
/>
<EuiFlexGroup
direction="row"
gutterSize="s"
alignItems="flexStart"
>
<EuiFlexItem grow={false}>
<EuiIcon
color="danger"
type={'alert'}
style={{ marginTop: '4px' }}
/>
</EuiFlexItem>
<EuiFlexItem grow={false}>
<EuiText
size="s"
color="danger"
style={{
marginTop: '0px',
}}
>
{errorMsg}
</EuiText>
</EuiFlexItem>
</EuiFlexGroup>
</EuiFlexItem>
)}
</EuiFlexGroup>
Expand All @@ -421,6 +456,21 @@ export function ProcessorsList(props: ProcessorsListProps) {
>
<EuiSpacer size="s" />
<EuiFlexItem style={{ paddingLeft: '28px' }}>
{errorFound && processorOpen && (
<>
<EuiCallOut
size="s"
color="danger"
iconType={'alert'}
title={errorMsg}
>
<EuiText size="s">
{processorFormError || processorRuntimeError}
</EuiText>
</EuiCallOut>
<EuiSpacer size="s" />
</>
)}
<ProcessorInputs
uiConfig={props.uiConfig}
config={processor}
Expand Down

0 comments on commit 10b725d

Please sign in to comment.