From 397b2b1e778350b081932856a191d22691177379 Mon Sep 17 00:00:00 2001 From: Chika Date: Wed, 16 Dec 2020 19:15:08 +0300 Subject: [PATCH] fix validation | prevent non digit in inputnumber --- src/client/Elements/InputNumber.jsx | 10 +++++++--- .../Effects/actions/calculate/validate.ts | 12 ++++++++---- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/src/client/Elements/InputNumber.jsx b/src/client/Elements/InputNumber.jsx index 9312e51..f3b1334 100644 --- a/src/client/Elements/InputNumber.jsx +++ b/src/client/Elements/InputNumber.jsx @@ -14,11 +14,15 @@ const InputNumber = ({ { + if (value === '') { + return 0; + } + return value.replace(/[^0-9.,]+/, ''); + }} disabled={status === ElementStatus.Disabled} style={styles} - onChange={value => { - setCurrentValue(typeof value !== 'string' ? value : 0); - }} + onChange={value => setCurrentValue(value)} value={value} /> diff --git a/src/client/stores/CalculationStore/Effects/actions/calculate/validate.ts b/src/client/stores/CalculationStore/Effects/actions/calculate/validate.ts index f575f9e..cd562dd 100644 --- a/src/client/stores/CalculationStore/Effects/actions/calculate/validate.ts +++ b/src/client/stores/CalculationStore/Effects/actions/calculate/validate.ts @@ -1,9 +1,10 @@ +import { toJS } from 'mobx'; import { elementsValues } from 'client/Containers/Calculation/lib/elements/values'; import { TElements } from 'core/types/Calculation/Store/elements'; import CalculationStore from '../../..'; const VALIDATIONS = { - IS_NULL: valueName => !CalculationStore.getValue(valueName), + IS_NULL: valueName => CalculationStore.getValue(valueName) === undefined, LESS_ZERO: valueName => CalculationStore.getValue(valueName) < 0, LESS_OR_EQUALS_ZERO: valueName => CalculationStore.getValue(valueName) <= 0, }; @@ -26,9 +27,11 @@ const elementsValidations: TElements = { selectLeaseObjectCategory: VALIDATIONS.IS_NULL, tbxLeasingPeriod: valueName => CalculationStore.getValue(valueName) < 7, tbxLeaseObjectPrice: VALIDATIONS.LESS_OR_EQUALS_ZERO, - tbxLastPaymentPerc: VALIDATIONS.LESS_OR_EQUALS_ZERO, - tbxFirstPaymentPerc: VALIDATIONS.LESS_ZERO, - tbxLeaseObjectCount: VALIDATIONS.LESS_ZERO, + tbxLastPaymentPerc: VALIDATIONS.IS_NULL, + tbxLastPaymentRub: VALIDATIONS.IS_NULL, + tbxFirstPaymentPerc: VALIDATIONS.IS_NULL, + tbxFirstPaymentRub: VALIDATIONS.IS_NULL, + tbxLeaseObjectCount: VALIDATIONS.LESS_OR_EQUALS_ZERO, }; const validateElement = (elementName, condition) => { @@ -83,6 +86,7 @@ const validateTables = () => { }; export default () => { + const v = toJS(CalculationStore.values); validateElements(); validateTables(); };