Populate form with default values
authorMichal Klobukowski <michal.klobukowski@contractors.roche.com>
Mon, 1 Oct 2018 09:26:53 +0000 (11:26 +0200)
committerMichal Klobukowski <michal.klobukowski@contractors.roche.com>
Mon, 1 Oct 2018 09:26:53 +0000 (11:26 +0200)
Feature #13863

Arvados-DCO-1.1-Signed-off-by: Michal Klobukowski <michal.klobukowski@contractors.roche.com>

src/views/run-process-panel/run-process-inputs-form.tsx

index 0e533206df139283184e089c9b20d707cb2e507f..90bb8c2e9bda20af64c82548f8f42d3108ccc700 100644 (file)
@@ -11,6 +11,7 @@ import { StringCommandInputParameter, FloatCommandInputParameter, File } from '.
 import { FloatInput } from '~/views/run-process-panel/inputs/float-input';
 import { BooleanInput } from './inputs/boolean-input';
 import { FileInput } from './inputs/file-input';
+import { connect } from 'react-redux';
 
 const RUN_PROCESS_INPUTS_FORM = 'runProcessInputsForm';
 
@@ -18,26 +19,32 @@ export interface RunProcessInputFormProps {
     inputs: CommandInputParameter[];
 }
 
-export const RunProcessInputsForm = reduxForm<any, RunProcessInputFormProps>({
-    form: RUN_PROCESS_INPUTS_FORM
-})((props: InjectedFormProps & RunProcessInputFormProps) =>
-    <form>
-        {props.inputs.map(input => {
-            switch (true) {
-                case input.type === CWLType.BOOLEAN:
-                    return <BooleanInput key={input.id} input={input as BooleanCommandInputParameter} />;
-                case input.type === CWLType.INT:
-                case input.type === CWLType.LONG:
-                    return <IntInput key={input.id} input={input as IntCommandInputParameter} />;
-                case input.type === CWLType.FLOAT:
-                case input.type === CWLType.DOUBLE:
-                    return <FloatInput key={input.id} input={input as FloatCommandInputParameter} />;
-                case input.type === CWLType.STRING:
-                    return <StringInput key={input.id} input={input as StringCommandInputParameter} />;
-                case input.type === CWLType.FILE:
-                    return <FileInput key={input.id} input={input as FileCommandInputParameter} />;
-                default:
-                    return null;
-            }
-        })}
-    </form>);
\ No newline at end of file
+export const RunProcessInputsForm = connect(
+    (_: any, props: RunProcessInputFormProps) => ({
+        initialValues: props.inputs.reduce(
+            (values, input) => ({ ...values, [input.id]: input.default }),
+            {}),
+    }))(
+        reduxForm<any, RunProcessInputFormProps>({
+            form: RUN_PROCESS_INPUTS_FORM
+        })((props: InjectedFormProps & RunProcessInputFormProps) =>
+            <form>
+                {props.inputs.map(input => {
+                    switch (true) {
+                        case input.type === CWLType.BOOLEAN:
+                            return <BooleanInput key={input.id} input={input as BooleanCommandInputParameter} />;
+                        case input.type === CWLType.INT:
+                        case input.type === CWLType.LONG:
+                            return <IntInput key={input.id} input={input as IntCommandInputParameter} />;
+                        case input.type === CWLType.FLOAT:
+                        case input.type === CWLType.DOUBLE:
+                            return <FloatInput key={input.id} input={input as FloatCommandInputParameter} />;
+                        case input.type === CWLType.STRING:
+                            return <StringInput key={input.id} input={input as StringCommandInputParameter} />;
+                        case input.type === CWLType.FILE:
+                            return <FileInput key={input.id} input={input as FileCommandInputParameter} />;
+                        default:
+                            return null;
+                    }
+                })}
+            </form>));
\ No newline at end of file