diff --git a/CHANGELOG.md b/CHANGELOG.md index 6bee30518..8cb788a0d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,8 @@ # Changelog ## Current Master + +- Fix formatting of ETH balance - Fix formatting of account details. ## 2.5.0 2016-06-29 diff --git a/test/unit/util_test.js b/test/unit/util_test.js index dbc9816f5..41355686e 100644 --- a/test/unit/util_test.js +++ b/test/unit/util_test.js @@ -148,35 +148,22 @@ describe('util', function() { it('when given nothing', function() { var result = util.formatBalance() - assert.equal(result, '0 ETH', 'should return "0 ETH"') - }) - - it('should return eth as string followed by ETH', function() { - var input = new ethUtil.BN(ethInWei, 10).toJSON() - var result = util.formatBalance(input, 4) - assert.equal(result, '1.0000 ETH') - }) - - it('should return eth as string followed by ETH', function() { - var input = new ethUtil.BN(ethInWei, 10).div(new ethUtil.BN('2', 10)).toJSON() - var result = util.formatBalance(input, 3) - assert.equal(result, '0.500 ETH') }) it('should display specified decimal points', function() { var input = "0x128dfa6a90b28000" var result = util.formatBalance(input, 2) - assert.equal(result, '1.33 ETH') + assert.equal(result.formatted, '1.33 ETH') }) - it('should default to 3 decimal points', function() { + it('should default to 2 decimal points', function() { var input = "0x128dfa6a90b28000" var result = util.formatBalance(input) - assert.equal(result, '1.337 ETH') + assert.equal(result.formatted, '1.33 ETH') }) it('should show 2 significant digits for tiny balances', function() { var input = "0x1230fa6a90b28" var result = util.formatBalance(input) - assert.equal(result, '0.00032 ETH') + assert.equal(result.formatted, '0.00032 ETH') }) }) diff --git a/ui/app/account-detail.js b/ui/app/account-detail.js index 62b9d80ae..6d50dbd71 100644 --- a/ui/app/account-detail.js +++ b/ui/app/account-detail.js @@ -163,6 +163,7 @@ AccountDetailScreen.prototype.render = function () { h(EtherBalance, { value: account && account.balance, + mainBalance: true, style: { lineHeight: '7px', marginTop: '10px', diff --git a/ui/app/components/eth-balance.js b/ui/app/components/eth-balance.js index c7240ea21..510b620f3 100644 --- a/ui/app/components/eth-balance.js +++ b/ui/app/components/eth-balance.js @@ -2,6 +2,7 @@ const Component = require('react').Component const h = require('react-hyperscript') const inherits = require('util').inherits const formatBalance = require('../util').formatBalance +const Tooltip = require('./tooltip') module.exports = EthBalanceComponent @@ -30,28 +31,32 @@ EthBalanceComponent.prototype.render = function () { ) } EthBalanceComponent.prototype.renderBalance = function (value) { - if (value === 'None') return value - var balance = value.split(' ')[0] - var label = value.split(' ')[1] + var balance = value.formatted.split(' ')[0] + var label = value.formatted.split(' ')[1] return ( - h('.flex-column', { - style: { - alignItems: 'flex-end', - lineHeight: '13px', - fontFamily: 'Montserrat Thin', - textRendering: 'geometricPrecision', - }, + h(Tooltip, { + title: value.balance, + position: 'bottom', }, [ - h('div', balance), - h('div', { + h('.flex-column', { style: { - color: ' #AEAEAE', - fontSize: '12px', + alignItems: 'flex-end', + lineHeight: '13px', + fontFamily: 'Montserrat Light', + textRendering: 'geometricPrecision', }, - }, label), + }, [ + h('div', balance), + h('div', { + style: { + color: ' #AEAEAE', + fontSize: '12px', + }, + }, label), + ]), ]) ) } diff --git a/ui/app/components/tooltip.js b/ui/app/components/tooltip.js index 4eab8611e..fb67c717e 100644 --- a/ui/app/components/tooltip.js +++ b/ui/app/components/tooltip.js @@ -14,7 +14,7 @@ Tooltip.prototype.render = function () { const props = this.props return h(ReactTooltip, { - position: 'left', + position: props.position ? props.position : 'left', title: props.title, fixed: false, }, props.children) diff --git a/ui/app/util.js b/ui/app/util.js index d0ee57dee..86bf03667 100644 --- a/ui/app/util.js +++ b/ui/app/util.js @@ -109,22 +109,29 @@ function formatBalance (balance, decimalsToKeep) { var parsed = parseBalance(balance) var beforeDecimal = parsed[0] var afterDecimal = parsed[1] - var formatted = '0 ETH' - if (decimalsToKeep === undefined) { - if (beforeDecimal === '0') { - if (afterDecimal !== '0') { - var sigFigs = afterDecimal.match(/^0*(.{2})/) // default: grabs 2 most significant digits - if (sigFigs) { afterDecimal = sigFigs[0] } - formatted = '0.' + afterDecimal + ' ETH' - } - } else { - formatted = beforeDecimal + '.' + afterDecimal.slice(0, 3) + ' ETH' + var formatted, formattedBalance + + if (beforeDecimal === '0') { + if (afterDecimal !== '0') { + var sigFigs = afterDecimal.match(/^0*(.{2})/) // default: grabs 2 most significant digits + if (sigFigs) { afterDecimal = sigFigs[0] } + formattedBalance = `0.${afterDecimal.slice(0, 6)}` } } else { - afterDecimal += Array(decimalsToKeep).join('0') - formatted = beforeDecimal + '.' + afterDecimal.slice(0, decimalsToKeep) + ' ETH' + formattedBalance = `${beforeDecimal}.${afterDecimal.slice(0, 2)}` } - return formatted + if (decimalsToKeep) { + formattedBalance = `${beforeDecimal}.${afterDecimal.slice(0, decimalsToKeep)}` + } + + formatted = `${formattedBalance} ETH` + + if (formattedBalance === '0.0' || formattedBalance === undefined) { + formatted = 'None' + formattedBalance = 'None' + } + + return {formattedBalance, balance: parsed.join('.'), formatted} } function dataSize (data) {