1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-12-22 17:33:23 +01:00

Merged latest balance formatting code

This commit is contained in:
Dan Finlay 2016-07-06 18:06:28 -07:00
commit 689bd58d81
6 changed files with 48 additions and 46 deletions

View File

@ -1,6 +1,8 @@
# Changelog # Changelog
## Current Master ## Current Master
- Fix formatting of ETH balance
- Fix formatting of account details. - Fix formatting of account details.
## 2.5.0 2016-06-29 ## 2.5.0 2016-06-29

View File

@ -148,35 +148,22 @@ describe('util', function() {
it('when given nothing', function() { it('when given nothing', function() {
var result = util.formatBalance() 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() { it('should display specified decimal points', function() {
var input = "0x128dfa6a90b28000" var input = "0x128dfa6a90b28000"
var result = util.formatBalance(input, 2) 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 input = "0x128dfa6a90b28000"
var result = util.formatBalance(input) 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() { it('should show 2 significant digits for tiny balances', function() {
var input = "0x1230fa6a90b28" var input = "0x1230fa6a90b28"
var result = util.formatBalance(input) var result = util.formatBalance(input)
assert.equal(result, '0.00032 ETH') assert.equal(result.formatted, '0.00032 ETH')
}) })
}) })

View File

@ -163,6 +163,7 @@ AccountDetailScreen.prototype.render = function () {
h(EtherBalance, { h(EtherBalance, {
value: account && account.balance, value: account && account.balance,
mainBalance: true,
style: { style: {
lineHeight: '7px', lineHeight: '7px',
marginTop: '10px', marginTop: '10px',

View File

@ -2,6 +2,7 @@ const Component = require('react').Component
const h = require('react-hyperscript') const h = require('react-hyperscript')
const inherits = require('util').inherits const inherits = require('util').inherits
const formatBalance = require('../util').formatBalance const formatBalance = require('../util').formatBalance
const Tooltip = require('./tooltip')
module.exports = EthBalanceComponent module.exports = EthBalanceComponent
@ -30,18 +31,21 @@ EthBalanceComponent.prototype.render = function () {
) )
} }
EthBalanceComponent.prototype.renderBalance = function (value) { EthBalanceComponent.prototype.renderBalance = function (value) {
if (value === 'None') return value if (value === 'None') return value
var balance = value.split(' ')[0] var balance = value.formatted.split(' ')[0]
var label = value.split(' ')[1] var label = value.formatted.split(' ')[1]
return ( return (
h(Tooltip, {
title: value.balance,
position: 'bottom',
}, [
h('.flex-column', { h('.flex-column', {
style: { style: {
alignItems: 'flex-end', alignItems: 'flex-end',
lineHeight: '13px', lineHeight: '13px',
fontFamily: 'Montserrat Thin', fontFamily: 'Montserrat Light',
textRendering: 'geometricPrecision', textRendering: 'geometricPrecision',
}, },
}, [ }, [
@ -52,6 +56,7 @@ EthBalanceComponent.prototype.renderBalance = function (value) {
fontSize: '12px', fontSize: '12px',
}, },
}, label), }, label),
]),
]) ])
) )
} }

View File

@ -14,7 +14,7 @@ Tooltip.prototype.render = function () {
const props = this.props const props = this.props
return h(ReactTooltip, { return h(ReactTooltip, {
position: 'left', position: props.position ? props.position : 'left',
title: props.title, title: props.title,
fixed: false, fixed: false,
}, props.children) }, props.children)

View File

@ -109,22 +109,29 @@ function formatBalance (balance, decimalsToKeep) {
var parsed = parseBalance(balance) var parsed = parseBalance(balance)
var beforeDecimal = parsed[0] var beforeDecimal = parsed[0]
var afterDecimal = parsed[1] var afterDecimal = parsed[1]
var formatted = '0 ETH' var formatted, formattedBalance
if (decimalsToKeep === undefined) {
if (beforeDecimal === '0') { if (beforeDecimal === '0') {
if (afterDecimal !== '0') { if (afterDecimal !== '0') {
var sigFigs = afterDecimal.match(/^0*(.{2})/) // default: grabs 2 most significant digits var sigFigs = afterDecimal.match(/^0*(.{2})/) // default: grabs 2 most significant digits
if (sigFigs) { afterDecimal = sigFigs[0] } if (sigFigs) { afterDecimal = sigFigs[0] }
formatted = '0.' + afterDecimal + ' ETH' formattedBalance = `0.${afterDecimal.slice(0, 6)}`
} }
} else { } else {
formatted = beforeDecimal + '.' + afterDecimal.slice(0, 3) + ' ETH' formattedBalance = `${beforeDecimal}.${afterDecimal.slice(0, 2)}`
} }
} else { if (decimalsToKeep) {
afterDecimal += Array(decimalsToKeep).join('0') formattedBalance = `${beforeDecimal}.${afterDecimal.slice(0, decimalsToKeep)}`
formatted = beforeDecimal + '.' + afterDecimal.slice(0, decimalsToKeep) + ' ETH'
} }
return formatted
formatted = `${formattedBalance} ETH`
if (formattedBalance === '0.0' || formattedBalance === undefined) {
formatted = 'None'
formattedBalance = 'None'
}
return {formattedBalance, balance: parsed.join('.'), formatted}
} }
function dataSize (data) { function dataSize (data) {