UNPKG

@open-tender/utils

Version:

A library of utils for use with Open Tender applications that utilize our cloud-based Order API.

106 lines (105 loc) 3.19 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.reduceCheckout = exports.reduceDollars = exports.reduceNumpad = exports.reduceKeypad = exports.buttonsCheckout = exports.buttonsDollars = exports.buttonsNumpad = exports.buttonsKeypad = exports.centsToDollars = void 0; const centsToDollars = (cents) => (cents / 100).toFixed(2); exports.centsToDollars = centsToDollars; exports.buttonsKeypad = [ '1234567890'.split(''), 'qwertyuiop'.split(''), 'asdfghjkl'.split(''), ['Clr', ...'zxcvbnm'.split(''), 'Del'] ]; exports.buttonsNumpad = [ '123'.split(''), '456'.split(''), '789'.split(''), ['Clr', '0', 'Del'] ]; exports.buttonsDollars = [ '123'.split(''), '456'.split(''), '789'.split(''), ['Clr', '0', '00'] ]; exports.buttonsCheckout = [ ['1', '2', '3', '$5'], ['4', '5', '6', '$10'], ['7', '8', '9', '$20'], ['Clr', '0', '00', 'Next $'] ]; const reduceKeypad = (value, key) => { switch (key) { case 'Clear': case 'Clr': return ''; case 'Delete': case 'Del': return value.slice(0, -1); case 'Space': return value + ' '; default: return value + key; } }; exports.reduceKeypad = reduceKeypad; const reduceNumpad = (value, key, clear) => { const current = clear ? '' : value; switch (key) { case 'Clear': case 'Clr': return ''; case 'Delete': case 'Del': return value.slice(0, -1); default: return current + key; } }; exports.reduceNumpad = reduceNumpad; const reduceDollars = (value, key, clear) => { const current = clear ? '' : value; switch (key) { case 'Clear': case 'Clr': return '0.00'; default: { const val = parseInt(current.replace('.', '') + key); return (0, exports.centsToDollars)(val); } } }; exports.reduceDollars = reduceDollars; const reduceCheckout = (value, key, clear) => { const current = !key.toString().includes('$') && clear ? '' : value; switch (key) { case 'Clear': case 'Clr': return '0.00'; case 'Next $': { const [dollars] = current.split('.'); const val = (parseInt(dollars) + 1) * 100; return (0, exports.centsToDollars)(val); } case '$5': case '$10': case '$20': { const keyValue = parseInt(key.replace('$', '')) * 100; const [dollars, cents] = current.split('.').map(n => parseInt(n)); let val; if (cents > 0 || dollars % 10 > 0) { val = Math.floor(parseInt(current.replace('.', '')) / keyValue) * keyValue + keyValue; } else { val = dollars * 100 + keyValue; } return (0, exports.centsToDollars)(val); } default: { const val = parseInt(current.replace('.', '') + key); return (0, exports.centsToDollars)(val); } } }; exports.reduceCheckout = reduceCheckout;