From 60894347d8554f0dd5b35c4a2b3737b541c03844 Mon Sep 17 00:00:00 2001 From: csrapr <26280794+csrapr@users.noreply.github.com> Date: Thu, 18 Feb 2021 14:38:37 +0000 Subject: [PATCH] Feat: cash cassette graph next to input field --- .../src/components/inputs/cashbox/Cashbox.js | 33 +++++++------ .../inputs/cashbox/Cashbox.styles.js | 3 +- .../inputs/formik/CashCassetteInput.js | 47 +++++++++++++++++++ .../src/components/inputs/formik/index.js | 4 +- .../src/pages/Maintenance/CashCassettes.js | 34 +++++++------- .../pages/Maintenance/CashCassettes.styles.js | 3 ++ 6 files changed, 90 insertions(+), 34 deletions(-) create mode 100644 new-lamassu-admin/src/components/inputs/formik/CashCassetteInput.js diff --git a/new-lamassu-admin/src/components/inputs/cashbox/Cashbox.js b/new-lamassu-admin/src/components/inputs/cashbox/Cashbox.js index 3db0c862..c55c35bd 100644 --- a/new-lamassu-admin/src/components/inputs/cashbox/Cashbox.js +++ b/new-lamassu-admin/src/components/inputs/cashbox/Cashbox.js @@ -46,7 +46,7 @@ const CashIn = ({ currency, notes, total }) => { return ( <>
-
+
{notes} notes
@@ -104,7 +104,8 @@ const CashOut = ({ denomination = 0, currency, notes, - className + className, + editingMode = false }) => { const percent = (100 * notes) / capacity const classes = gridClasses() @@ -114,20 +115,22 @@ const CashOut = ({
-
-
- {notes} - + {!editingMode && ( +
+
+ {notes} + +
+
+ + {notes * denomination} {currency.code} + +
-
- - {notes * denomination} {currency.code} - -
-
+ )}
) diff --git a/new-lamassu-admin/src/components/inputs/cashbox/Cashbox.styles.js b/new-lamassu-admin/src/components/inputs/cashbox/Cashbox.styles.js index 234cc598..9c8e2633 100644 --- a/new-lamassu-admin/src/components/inputs/cashbox/Cashbox.styles.js +++ b/new-lamassu-admin/src/components/inputs/cashbox/Cashbox.styles.js @@ -48,8 +48,7 @@ const cashboxStyles = { const gridStyles = { row: { - display: 'flex', - justifyContent: 'space-between' + display: 'flex' }, innerRow: { display: 'flex', diff --git a/new-lamassu-admin/src/components/inputs/formik/CashCassetteInput.js b/new-lamassu-admin/src/components/inputs/formik/CashCassetteInput.js new file mode 100644 index 00000000..5002b0fb --- /dev/null +++ b/new-lamassu-admin/src/components/inputs/formik/CashCassetteInput.js @@ -0,0 +1,47 @@ +import { makeStyles } from '@material-ui/core' +import React, { memo, useState } from 'react' + +import { CashOut } from 'src/components/inputs/cashbox/Cashbox' + +import { NumberInput } from '../base' +const useStyles = makeStyles({ + flex: { + display: 'flex' + }, + cashCassette: { + width: 80, + height: 36, + marginRight: 16 + } +}) + +const CashCassetteInput = memo(({ decimalPlaces, ...props }) => { + const classes = useStyles() + const { name, onChange, onBlur, value } = props.field + const { touched, errors } = props.form + const [notes, setNotes] = useState(value) + const error = !!(touched[name] && errors[name]) + return ( +
+ + { + setNotes(e.target.value) + return onChange(e) + }} + onBlur={onBlur} + value={value} + error={error} + decimalPlaces={decimalPlaces} + {...props} + /> +
+ ) +}) + +export default CashCassetteInput diff --git a/new-lamassu-admin/src/components/inputs/formik/index.js b/new-lamassu-admin/src/components/inputs/formik/index.js index 1b39657e..b5719013 100644 --- a/new-lamassu-admin/src/components/inputs/formik/index.js +++ b/new-lamassu-admin/src/components/inputs/formik/index.js @@ -1,4 +1,5 @@ import Autocomplete from './Autocomplete' +import CashCassetteInput from './CashCassetteInput' import Checkbox from './Checkbox' import NumberInput from './NumberInput' import RadioGroup from './RadioGroup' @@ -11,5 +12,6 @@ export { TextInput, NumberInput, SecretInput, - RadioGroup + RadioGroup, + CashCassetteInput } diff --git a/new-lamassu-admin/src/pages/Maintenance/CashCassettes.js b/new-lamassu-admin/src/pages/Maintenance/CashCassettes.js index 2c2bd2d7..532373ec 100644 --- a/new-lamassu-admin/src/pages/Maintenance/CashCassettes.js +++ b/new-lamassu-admin/src/pages/Maintenance/CashCassettes.js @@ -7,7 +7,7 @@ import * as Yup from 'yup' import { Table as EditableTable } from 'src/components/editableTable' import { CashOut, CashIn } from 'src/components/inputs/cashbox/Cashbox' -import { NumberInput } from 'src/components/inputs/formik' +import { NumberInput, CashCassetteInput } from 'src/components/inputs/formik' import TitleSection from 'src/components/layout/TitleSection' import { EmptyTable } from 'src/components/table' import { fromNamespace } from 'src/utils/config' @@ -86,6 +86,7 @@ const CashCassettes = () => { const cashout = data?.config && fromNamespace('cashOut')(data.config) const locale = data?.config && fromNamespace('locale')(data.config) const fiatCurrency = locale?.fiatCurrency + const machines = R.path(['machines'])(data) ?? [] const onSave = (...[, { id, cashbox, cassette1, cassette2 }]) => { return setCassetteBills({ @@ -135,7 +136,7 @@ const CashCassettes = () => { notes={value} /> ), - input: NumberInput, + input: CashCassetteInput, inputProps: { decimalPlaces: 0 } @@ -145,15 +146,17 @@ const CashCassettes = () => { header: 'Cassette 2 (Bottom)', width: 265, stripe: true, - view: (value, { id }) => ( - - ), - input: NumberInput, + view: (value, { id }) => { + return ( + + ) + }, + input: CashCassetteInput, inputProps: { decimalPlaces: 0 } @@ -161,24 +164,23 @@ const CashCassettes = () => { ] return ( - <> +
- - {data && R.isEmpty(data.machines) && ( + {data && R.isEmpty(machines) && ( )} - +
) } diff --git a/new-lamassu-admin/src/pages/Maintenance/CashCassettes.styles.js b/new-lamassu-admin/src/pages/Maintenance/CashCassettes.styles.js index 8b574172..c6ebdda7 100644 --- a/new-lamassu-admin/src/pages/Maintenance/CashCassettes.styles.js +++ b/new-lamassu-admin/src/pages/Maintenance/CashCassettes.styles.js @@ -2,5 +2,8 @@ export default { cashbox: { width: 80, height: 36 + }, + pageBottomMargin: { + marginBottom: 180 } }