Create FileInput
authorMichal Klobukowski <michal.klobukowski@contractors.roche.com>
Mon, 1 Oct 2018 09:19:12 +0000 (11:19 +0200)
committerMichal Klobukowski <michal.klobukowski@contractors.roche.com>
Mon, 1 Oct 2018 09:19:12 +0000 (11:19 +0200)
Feature #13863

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

src/views/run-process-panel/inputs/file-input.tsx [new file with mode: 0644]
src/views/run-process-panel/run-process-inputs-form.tsx

diff --git a/src/views/run-process-panel/inputs/file-input.tsx b/src/views/run-process-panel/inputs/file-input.tsx
new file mode 100644 (file)
index 0000000..6b001b2
--- /dev/null
@@ -0,0 +1,25 @@
+// Copyright (C) The Arvados Authors. All rights reserved.
+//
+// SPDX-License-Identifier: AGPL-3.0
+
+import * as React from 'react';
+import { getInputLabel, isRequiredInput, FileCommandInputParameter, File } from '~/models/workflow';
+import { Field } from 'redux-form';
+import { TextField } from '~/components/text-field/text-field';
+import { require } from '~/validators/require';
+
+export interface FileInputProps {
+    input: FileCommandInputParameter;
+}
+export const FileInput = ({ input }: FileInputProps) =>
+    <Field
+        name={input.id}
+        label={getInputLabel(input)}
+        component={TextField}
+        format={(value?: File) => value ? value.location : ''}
+        validate={[
+            isRequiredInput(input)
+                ? require
+                : () => undefined,
+        ]} />;
+
index 22c00c32727040f9cc09a59948ff8e37a3c4c6ba..0e533206df139283184e089c9b20d707cb2e507f 100644 (file)
@@ -4,12 +4,13 @@
 
 import * as React from 'react';
 import { reduxForm, InjectedFormProps } from 'redux-form';
-import { WorkflowResource, CommandInputParameter, CWLType, IntCommandInputParameter, BooleanCommandInputParameter } from '~/models/workflow';
+import { WorkflowResource, CommandInputParameter, CWLType, IntCommandInputParameter, BooleanCommandInputParameter, FileCommandInputParameter } from '~/models/workflow';
 import { IntInput } from '~/views/run-process-panel/inputs/int-input';
 import { StringInput } from '~/views/run-process-panel/inputs/string-input';
-import { StringCommandInputParameter, FloatCommandInputParameter } from '../../models/workflow';
+import { StringCommandInputParameter, FloatCommandInputParameter, File } from '../../models/workflow';
 import { FloatInput } from '~/views/run-process-panel/inputs/float-input';
 import { BooleanInput } from './inputs/boolean-input';
+import { FileInput } from './inputs/file-input';
 
 const RUN_PROCESS_INPUTS_FORM = 'runProcessInputsForm';
 
@@ -33,6 +34,8 @@ export const RunProcessInputsForm = reduxForm<any, RunProcessInputFormProps>({
                     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;
             }