X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/428d454e2681d66bb14558946cfe2fb77a2c8dce..fa9e1f065eefa7265879869e4b45eb76be64b4ce:/src/views/run-process-panel/inputs/float-input.tsx diff --git a/src/views/run-process-panel/inputs/float-input.tsx b/src/views/run-process-panel/inputs/float-input.tsx index 0f5a1162..a5905dc5 100644 --- a/src/views/run-process-panel/inputs/float-input.tsx +++ b/src/views/run-process-panel/inputs/float-input.tsx @@ -3,20 +3,42 @@ // SPDX-License-Identifier: AGPL-3.0 import * as React from 'react'; -import { getInputLabel, FloatCommandInputParameter } from '~/models/workflow'; +import { memoize } from 'lodash/fp'; +import { FloatCommandInputParameter, isRequiredInput } from '~/models/workflow'; import { Field } from 'redux-form'; -import { TextField } from '~/components/text-field/text-field'; import { isNumber } from '~/validators/is-number'; -import { toNumber } from 'lodash'; +import { GenericInputProps, GenericInput } from './generic-input'; +import { FloatInput as FloatInputComponent } from '~/components/float-input/float-input'; export interface FloatInputProps { input: FloatCommandInputParameter; } export const FloatInput = ({ input }: FloatInputProps) => toNumber(value)} - format={value => isNaN(value) ? '' : JSON.stringify(value)} - validate={[isNumber]} />; + commandInput={input} + component={Input} + parse={parseFloat} + format={format} + validate={getValidation(input)} />; + +const format = (value: any) => isNaN(value) ? '' : JSON.stringify(value); + +const getValidation = memoize( + (input: FloatCommandInputParameter) => ([ + isRequiredInput(input) + ? isNumber + : () => undefined,]) +); + +const Input = (props: GenericInputProps) => + ; + +const InputComponent = ({ input, meta, commandInput }: GenericInputProps) => + ;