diff --git a/app/components/account-send/component.js b/app/components/account-send/component.js index 4b9663bf..10e6a6ed 100644 --- a/app/components/account-send/component.js +++ b/app/components/account-send/component.js @@ -1,22 +1,40 @@ import Component from '@ember/component'; -import { get } from '@ember/object'; +import { get, set } from '@ember/object'; +import { action } from 'ember-decorators/object'; import { on } from 'ember-decorators/object/evented'; import Changeset from 'ember-changeset'; import lookupValidator from 'ember-changeset-validations'; +import BigNumber from 'npm:bignumber.js'; + import SendValidations from '../../validations/send'; +import { prefixes } from '../../utils/format-amount'; export default Component.extend({ accounts: null, block: null, changeset: null, + amount: null, @on('init') createChangeset() { const block = get(this, 'block'); this.changeset = new Changeset(block, lookupValidator(SendValidations), SendValidations); }, + + @action + updateAmount(value, changeset) { + if (!value) { + return false; + } + + const multiplier = prefixes.Mxrb; + const multiplicand = BigNumber(value).times(multiplier); + const raw = multiplicand.toFixed(0); + set(changeset, 'amount', raw); + return false; + }, }); diff --git a/app/components/account-send/template.hbs b/app/components/account-send/template.hbs index b6f83b6c..149f9328 100644 --- a/app/components/account-send/template.hbs +++ b/app/components/account-send/template.hbs @@ -7,7 +7,7 @@ {{form.element class="form-control-lg" controlType="text" label="Destination Account" property="destination" placeholder="e.g. xrb_3e3j5tkog48pnny9dmfzj1r16pg8t1e76dz5tmac6iq689wyjfpiij4txtdo"}} - {{form.element class="form-control-lg" static=true controlType="number" label="Amount (XRB)" property="amount"}} + {{form.element class="form-control-lg" static=true controlType="number" label="Amount (XRB)" value=amount onChange=(action 'updateAmount')}}
{{#bs-button size="lg" type="primary" icon="fa fa-paper-plane" buttonType="submit"}} diff --git a/app/utils/format-amount.js b/app/utils/format-amount.js index 3df99ea2..716d9506 100644 --- a/app/utils/format-amount.js +++ b/app/utils/format-amount.js @@ -2,7 +2,7 @@ import BigNumber from 'npm:bignumber.js'; const base10 = BigNumber(10); -const PREFIXES = { +export const prefixes = { Gxrb: base10.pow(33), Mxrb: base10.pow(30), kxrb: base10.pow(27), @@ -12,7 +12,7 @@ const PREFIXES = { }; export default function formatAmount(value = 0, { prefix = 'Mxrb', precision = 6 } = {}) { - const divisor = PREFIXES[prefix] || PREFIXES.Mxrb; + const divisor = prefixes[prefix] || prefixes.Mxrb; const quotient = BigNumber(value).dividedBy(divisor); const digits = Math.max(precision, Math.min(1, quotient.decimalPlaces())); return quotient.toFormat(digits);