interface RunProcessPanel {
processOwnerUuid: string;
currentStep: number;
+ isStepChanged: boolean;
workflows: WorkflowResource[];
searchWorkflows: WorkflowResource[];
selectedWorkflow: WorkflowResource | undefined;
+ presets?: WorkflowResource[];
+ selectedPreset?: WorkflowResource;
inputs: CommandInputParameter[];
}
const initialState: RunProcessPanel = {
processOwnerUuid: '',
currentStep: 0,
+ isStepChanged: false,
workflows: [],
selectedWorkflow: undefined,
inputs: [],
runProcessPanelActions.match(action, {
SET_PROCESS_OWNER_UUID: processOwnerUuid => ({ ...state, processOwnerUuid }),
SET_CURRENT_STEP: currentStep => ({ ...state, currentStep }),
+ SET_STEP_CHANGED: isStepChanged => ({ ...state, isStepChanged }),
SET_SELECTED_WORKFLOW: selectedWorkflow => ({
...state,
selectedWorkflow,
+ presets: undefined,
+ selectedPreset: selectedWorkflow,
inputs: getWorkflowInputs(parseWorkflowDefinition(selectedWorkflow)) || [],
}),
+ SET_WORKFLOW_PRESETS: presets => ({
+ ...state,
+ presets,
+ }),
+ SELECT_WORKFLOW_PRESET: selectedPreset => ({
+ ...state,
+ selectedPreset,
+ }),
SET_WORKFLOWS: workflows => ({ ...state, workflows, searchWorkflows: workflows }),
- SEARCH_WORKFLOWS: term => ({ ...state, searchWorkflows: state.workflows.filter(workflow => workflow.name.includes(term)) }),
+ SEARCH_WORKFLOWS: term => {
+ const termRegex = new RegExp(term, 'i');
+ return {
+ ...state,
+ searchWorkflows: state.workflows.filter(workflow => termRegex.test(workflow.name)),
+ };
+ },
RESET_RUN_PROCESS_PANEL: () => ({ ...initialState, processOwnerUuid: state.processOwnerUuid }),
default: () => state
});
\ No newline at end of file