feat: use numberOfCassettes on cashout wizard
fix: hidden fields showing during editing
This commit is contained in:
parent
6d6c8adabd
commit
13e6401b22
7 changed files with 120 additions and 144 deletions
|
|
@ -6,12 +6,12 @@ import Modal from 'src/components/Modal'
|
|||
import { Autocomplete } from 'src/components/inputs/formik'
|
||||
import denominations from 'src/utils/bill-denominations'
|
||||
import { toNamespace } from 'src/utils/config'
|
||||
import { transformNumber } from 'src/utils/number'
|
||||
|
||||
import WizardSplash from './WizardSplash'
|
||||
import WizardStep from './WizardStep'
|
||||
import { DenominationsSchema } from './helper'
|
||||
|
||||
const LAST_STEP = 6
|
||||
const MODAL_WIDTH = 554
|
||||
const MODAL_HEIGHT = 520
|
||||
|
||||
|
|
@ -25,6 +25,7 @@ const getOptions = R.curry((locale, denomiations) => {
|
|||
})
|
||||
|
||||
const Wizard = ({ machine, locale, onClose, save, error }) => {
|
||||
const LAST_STEP = machine.numberOfCassettes + 2
|
||||
const [{ step, config }, setState] = useState({
|
||||
step: 0,
|
||||
config: { active: true }
|
||||
|
|
@ -38,7 +39,10 @@ const Wizard = ({ machine, locale, onClose, save, error }) => {
|
|||
const onContinue = async it => {
|
||||
if (isLastStep) {
|
||||
return save(
|
||||
toNamespace(machine.deviceId, DenominationsSchema.cast(config))
|
||||
toNamespace(
|
||||
machine.deviceId,
|
||||
DenominationsSchema.cast(config, { assert: false })
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
|
|
@ -50,62 +54,55 @@ const Wizard = ({ machine, locale, onClose, save, error }) => {
|
|||
})
|
||||
}
|
||||
|
||||
const steps = [
|
||||
{
|
||||
type: 'cassette1',
|
||||
display: 'Cassette 1',
|
||||
component: Autocomplete,
|
||||
inputProps: {
|
||||
options: R.map(it => ({ code: it, display: it }))(options),
|
||||
labelProp: 'display',
|
||||
valueProp: 'code'
|
||||
}
|
||||
},
|
||||
{
|
||||
type: 'cassette2',
|
||||
display: 'Cassette 2',
|
||||
component: Autocomplete,
|
||||
inputProps: {
|
||||
options: R.map(it => ({ code: it, display: it }))(options),
|
||||
labelProp: 'display',
|
||||
valueProp: 'code'
|
||||
}
|
||||
},
|
||||
{
|
||||
type: 'cassette3',
|
||||
display: 'Cassette 3',
|
||||
component: Autocomplete,
|
||||
inputProps: {
|
||||
options: R.map(it => ({ code: it, display: it }))(options),
|
||||
labelProp: 'display',
|
||||
valueProp: 'code'
|
||||
}
|
||||
},
|
||||
{
|
||||
type: 'cassette4',
|
||||
display: 'Cassette 4',
|
||||
component: Autocomplete,
|
||||
inputProps: {
|
||||
options: R.map(it => ({ code: it, display: it }))(options),
|
||||
labelProp: 'display',
|
||||
valueProp: 'code'
|
||||
}
|
||||
},
|
||||
{
|
||||
type: 'zeroConfLimit',
|
||||
display: '0-conf Limit',
|
||||
schema: Yup.object().shape({
|
||||
zeroConfLimit: Yup.number().required()
|
||||
const steps = []
|
||||
|
||||
R.until(
|
||||
R.gt(R.__, machine.numberOfCassettes),
|
||||
it => {
|
||||
steps.push({
|
||||
type: `cassette${it}`,
|
||||
display: `Cassette ${it}`,
|
||||
component: Autocomplete,
|
||||
inputProps: {
|
||||
options: R.map(it => ({ code: it, display: it }))(options),
|
||||
labelProp: 'display',
|
||||
valueProp: 'code'
|
||||
}
|
||||
})
|
||||
}
|
||||
]
|
||||
return R.add(1, it)
|
||||
},
|
||||
1
|
||||
)
|
||||
|
||||
steps.push({
|
||||
type: 'zeroConfLimit',
|
||||
display: '0-conf Limit',
|
||||
schema: Yup.object().shape({
|
||||
zeroConfLimit: Yup.number().required()
|
||||
})
|
||||
})
|
||||
|
||||
const schema = () =>
|
||||
Yup.object().shape({
|
||||
cassette1: Yup.number().required(),
|
||||
cassette2: step >= 2 ? Yup.number().required() : Yup.number(),
|
||||
cassette3: step >= 3 ? Yup.number().required() : Yup.number(),
|
||||
cassette4: step >= 4 ? Yup.number().required() : Yup.number()
|
||||
cassette2:
|
||||
machine.numberOfCassettes > 1 && step >= 2
|
||||
? Yup.number().required()
|
||||
: Yup.number()
|
||||
.transform(transformNumber)
|
||||
.nullable(),
|
||||
cassette3:
|
||||
machine.numberOfCassettes > 2 && step >= 3
|
||||
? Yup.number().required()
|
||||
: Yup.number()
|
||||
.transform(transformNumber)
|
||||
.nullable(),
|
||||
cassette4:
|
||||
machine.numberOfCassettes > 3 && step >= 4
|
||||
? Yup.number().required()
|
||||
: Yup.number()
|
||||
.transform(transformNumber)
|
||||
.nullable()
|
||||
})
|
||||
|
||||
return (
|
||||
|
|
@ -122,6 +119,7 @@ const Wizard = ({ machine, locale, onClose, save, error }) => {
|
|||
<WizardStep
|
||||
step={step}
|
||||
name={machine.name}
|
||||
numberOfCassettes={machine.numberOfCassettes}
|
||||
error={error}
|
||||
lastStep={isLastStep}
|
||||
steps={steps}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue