X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/23180724fefb8b4b31e2c07e711101367942f721..b04ed9ad5145bf8335cc5749b3d2f0ac166ef60f:/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 56a58012b2..14b06fd459 100644 --- a/src/views/run-process-panel/inputs/float-input.tsx +++ b/src/views/run-process-panel/inputs/float-input.tsx @@ -2,12 +2,13 @@ // // SPDX-License-Identifier: AGPL-3.0 -import * as React from 'react'; -import { FloatCommandInputParameter, isRequiredInput } from '~/models/workflow'; +import React from 'react'; +import { memoize } from 'lodash/fp'; +import { FloatCommandInputParameter, isRequiredInput } from 'models/workflow'; import { Field } from 'redux-form'; -import { isNumber } from '~/validators/is-number'; +import { isNumber } from 'validators/is-number'; import { GenericInputProps, GenericInput } from './generic-input'; -import { FloatInput as FloatInputComponent } from '~/components/float-input/float-input'; +import { FloatInput as FloatInputComponent } from 'components/float-input/float-input'; export interface FloatInputProps { input: FloatCommandInputParameter; } @@ -17,11 +18,17 @@ export const FloatInput = ({ input }: FloatInputProps) => commandInput={input} component={Input} parse={parseFloat} - format={value => isNaN(value) ? '' : JSON.stringify(value)} - validate={[ - isRequiredInput(input) - ? isNumber - : () => undefined,]} />; + 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) =>