X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/33f356b44d2935a5b3f3d233c3b635e8e7b50085..394ebdfd13fe40a7096f484c46a353d2537f4c9a:/src/views/run-process-panel/run-process-second-step.tsx diff --git a/src/views/run-process-panel/run-process-second-step.tsx b/src/views/run-process-panel/run-process-second-step.tsx index 6582710c..08cf4e6c 100644 --- a/src/views/run-process-panel/run-process-second-step.tsx +++ b/src/views/run-process-panel/run-process-second-step.tsx @@ -2,61 +2,80 @@ // // SPDX-License-Identifier: AGPL-3.0 -import * as React from 'react'; -import { withStyles, WithStyles, StyleRulesCallback, Grid, Button } from '@material-ui/core'; -import { ArvadosTheme } from '~/common/custom-theme'; -import { Field, reduxForm, InjectedFormProps } from 'redux-form'; -import { TextField } from '~/components/text-field/text-field'; -import { RunProcessSecondStepDataFormProps, RUN_PROCESS_SECOND_STEP_FORM_NAME } from '~/store/run-process-panel/run-process-panel-actions'; +import React from 'react'; +import { Grid, Button } from '@material-ui/core'; +import { RunProcessBasicForm, RUN_PROCESS_BASIC_FORM } from './run-process-basic-form'; +import { RunProcessInputsForm } from 'views/run-process-panel/run-process-inputs-form'; +import { CommandInputParameter, WorkflowResource } from 'models/workflow'; +import { connect } from 'react-redux'; +import { RootState } from 'store/store'; +import { isValid } from 'redux-form'; +import { RUN_PROCESS_INPUTS_FORM } from './run-process-inputs-form'; +import { RunProcessAdvancedForm, RUN_PROCESS_ADVANCED_FORM } from './run-process-advanced-form'; +import { createStructuredSelector } from 'reselect'; +import { WorkflowPresetSelect } from 'views/run-process-panel/workflow-preset-select'; +import { selectPreset } from 'store/run-process-panel/run-process-panel-actions'; -type CssRules = 'root'; +export interface RunProcessSecondStepFormDataProps { + inputs: CommandInputParameter[]; + workflow?: WorkflowResource; + presets?: WorkflowResource[]; + selectedPreset?: WorkflowResource; + valid: boolean; +} -const styles: StyleRulesCallback = (theme: ArvadosTheme) => ({ - root: { +export interface RunProcessSecondStepFormActionProps { + goBack: () => void; + runProcess: () => void; + onPresetChange: (preset: WorkflowResource) => void; +} - } -}); +const selectedWorkflowSelector = (state: RootState) => + state.runProcessPanel.selectedWorkflow; -export interface RunProcessSecondStepDataProps { +const presetsSelector = (state: RootState) => + state.runProcessPanel.presets; -} +const selectedPresetSelector = (state: RootState) => + state.runProcessPanel.selectedPreset; -export interface RunProcessSecondStepActionProps { - onSetStep: (step: number) => void; - onRunProcess: (data: RunProcessSecondStepDataFormProps) => void; -} +const inputsSelector = (state: RootState) => + state.runProcessPanel.inputs; + +const validSelector = (state: RootState) => + isValid(RUN_PROCESS_BASIC_FORM)(state) && isValid(RUN_PROCESS_INPUTS_FORM)(state) && isValid(RUN_PROCESS_ADVANCED_FORM)(state); -type RunProcessSecondStepProps = RunProcessSecondStepDataProps - & RunProcessSecondStepActionProps - & WithStyles - & InjectedFormProps; +const mapStateToProps = createStructuredSelector({ + inputs: inputsSelector, + valid: validSelector, + workflow: selectedWorkflowSelector, + presets: presetsSelector, + selectedPreset: selectedPresetSelector, +}); -const RunProcessSecondStep = withStyles(styles)( - ({ onSetStep, classes }: RunProcessSecondStepProps) => - +export type RunProcessSecondStepFormProps = RunProcessSecondStepFormDataProps & RunProcessSecondStepFormActionProps; +export const RunProcessSecondStepForm = connect(mapStateToProps, { onPresetChange: selectPreset })( + ({ inputs, workflow, selectedPreset, presets, onPresetChange, valid, goBack, runProcess }: RunProcessSecondStepFormProps) => + -
- - - + + + {workflow && selectedPreset && presets && + < WorkflowPresetSelect + {...{ workflow, selectedPreset, presets, onChange: onPresetChange }} /> + } + + + + +
- - -
-); - -export const RunProcessSecondStepForm = reduxForm({ - form: RUN_PROCESS_SECOND_STEP_FORM_NAME -})(RunProcessSecondStep); \ No newline at end of file +
);