+export const setWorkflow = (workflow: WorkflowResource, isWorkflowChanged = true) =>
+ (dispatch: Dispatch<any>, getState: () => RootState) => {
+ const isStepChanged = getState().runProcessPanel.isStepChanged;
+ if (isStepChanged && isWorkflowChanged) {
+ dispatch(runProcessPanelActions.SET_STEP_CHANGED(false));
+ dispatch(runProcessPanelActions.SET_SELECTED_WORKFLOW(workflow));
+ dispatch<any>(loadPresets(workflow.uuid));
+ dispatch(initialize(RUN_PROCESS_ADVANCED_FORM, DEFAULT_ADVANCED_FORM_VALUES));
+ }
+ if (!isWorkflowChanged) {
+ dispatch(runProcessPanelActions.SET_SELECTED_WORKFLOW(workflow));
+ dispatch<any>(loadPresets(workflow.uuid));
+ dispatch(initialize(RUN_PROCESS_ADVANCED_FORM, DEFAULT_ADVANCED_FORM_VALUES));
+ }
+ };
+
+export const loadPresets = (workflowUuid: string) =>
+ async (dispatch: Dispatch<any>, _: () => RootState, { workflowService }: ServiceRepository) => {
+ const { items } = await workflowService.presets(workflowUuid);
+ dispatch(runProcessPanelActions.SET_WORKFLOW_PRESETS(items));
+ };
+
+export const selectPreset = (preset: WorkflowResource) =>
+ (dispatch: Dispatch<any>) => {
+ dispatch(runProcessPanelActions.SELECT_WORKFLOW_PRESET(preset));
+ const inputs = getWorkflowInputs(parseWorkflowDefinition(preset)) || [];
+ const values = inputs.reduce((values, input) => ({
+ ...values,
+ [input.id]: input.default,
+ }), {});
+ dispatch(initialize(RUN_PROCESS_INPUTS_FORM, values));
+ };
+
+export const goToStep = (step: number) =>
+ (dispatch: Dispatch) => {
+ if (step === 1) {
+ dispatch(runProcessPanelActions.SET_STEP_CHANGED(true));
+ }
+ dispatch(runProcessPanelActions.SET_CURRENT_STEP(step));
+ };