lamassu-server/new-lamassu-admin/src/pages/Cashout/helper.js
2021-11-25 18:29:38 +00:00

98 lines
2.1 KiB
JavaScript

import * as R from 'ramda'
import * as Yup from 'yup'
import { NumberInput } from 'src/components/inputs/formik'
import { transformNumber } from 'src/utils/number'
const currencyMax = 999999999
const DenominationsSchema = Yup.object().shape({
cassette1: Yup.number()
.label('Cassette 1')
.required()
.min(1)
.max(currencyMax),
cassette2: Yup.number()
.label('Cassette 2')
.required()
.min(1)
.max(currencyMax),
cassette3: Yup.number()
.label('Cassette 3')
.min(1)
.max(currencyMax)
.nullable()
.transform(transformNumber),
cassette4: Yup.number()
.label('Cassette 4')
.min(1)
.max(currencyMax)
.nullable()
.transform(transformNumber),
zeroConfLimit: Yup.number()
.label('0-conf Limit')
.required()
.min(0)
.max(currencyMax)
})
const getElements = (machines, { fiatCurrency } = {}) => {
const maxNumberOfCassettes = Math.max(
...R.map(it => it.numberOfCassettes, machines),
0
)
const elements = [
{
name: 'id',
header: 'Machine',
width: 200,
view: it => machines.find(({ deviceId }) => deviceId === it).name,
size: 'sm',
editable: false
}
]
R.until(
R.gt(R.__, maxNumberOfCassettes),
it => {
elements.push({
name: `cassette${it}`,
header: `Cassette ${it}`,
size: 'sm',
stripe: true,
textAlign: 'right',
width: (maxNumberOfCassettes > 2 ? 600 : 460) / maxNumberOfCassettes,
input: NumberInput,
inputProps: {
decimalPlaces: 0
},
suffix: fiatCurrency,
doubleHeader: 'Denominations',
isHidden: machine =>
it >
machines.find(({ deviceId }) => deviceId === machine.id)
.numberOfCassettes
})
return R.add(1, it)
},
1
)
elements.push({
name: 'zeroConfLimit',
header: '0-conf Limit',
size: 'sm',
stripe: true,
textAlign: 'right',
width: maxNumberOfCassettes > 2 ? 150 : 290,
input: NumberInput,
inputProps: {
decimalPlaces: 0
},
suffix: fiatCurrency
})
return elements
}
export { DenominationsSchema, getElements }