import { makeStyles } from '@material-ui/core' import { Form, Formik } from 'formik' import * as R from 'ramda' import React, { useContext } from 'react' import * as Yup from 'yup' import PromptWhenDirty from 'src/components/PromptWhenDirty' import { TL2 } from 'src/components/typography' import { transformNumber } from 'src/utils/number' import { Cashbox } from '../../../components/inputs/cashbox/Cashbox' import NotificationsCtx from '../NotificationsContext' import Header from '../components/EditHeader' import EditableNumber from '../components/EditableNumber' import styles from './FiatBalanceAlerts.styles.js' const useStyles = makeStyles(styles) const CASH_IN_KEY = 'fiatBalanceAlertsCashIn' const CASH_OUT_KEY = 'fiatBalanceAlertsCashOut' const DEFAULT_NUMBER_OF_CASSETTES = 2 const notesMin = 0 const notesMax = 9999999 const FiatBalance = ({ section, min = 0, max = 100, fieldWidth = 80 }) => { const { isEditing, isDisabled, setEditing, data, save, machines = [] } = useContext(NotificationsCtx) const classes = useStyles() const maxNumberOfCassettes = Math.max( ...R.map(it => it.numberOfCassettes, machines), DEFAULT_NUMBER_OF_CASSETTES ) const schema = Yup.object().shape({ cashInAlertThreshold: Yup.number() .transform(transformNumber) .integer() .min(notesMin) .max(notesMax) .nullable(), fillingPercentageCassette1: Yup.number() .transform(transformNumber) .integer() .min(min) .max(max) .nullable(), fillingPercentageCassette2: Yup.number() .transform(transformNumber) .integer() .min(min) .max(max) .nullable(), fiatBalanceCassette3: Yup.number() .transform(transformNumber) .integer() .min(min) .max(max) .nullable(), fiatBalanceCassette4: Yup.number() .transform(transformNumber) .integer() .min(min) .max(max) .nullable() }) return ( save(section, schema.cast(it))} onReset={() => { setEditing(CASH_IN_KEY, false) setEditing(CASH_OUT_KEY, false) }}> {({ values }) => ( <>
setEditing(CASH_IN_KEY, it)} />
(x === '' ? '-' : x)} decoration="notes" width={fieldWidth} />
setEditing(CASH_OUT_KEY, it)} />
{R.map( it => ( <>
Cassette {it + 1} (x === '' ? '-' : x)} decoration="%" width={fieldWidth} />
), R.times(R.identity, maxNumberOfCassettes) )}
)} ) } export default FiatBalance