Fixed amount values: decimal is variable, depending of unit in config. Also custom values are allowed
This commit is contained in:
parent
bc5c473752
commit
75b45d2f17
4 changed files with 97 additions and 28 deletions
34
index.html
34
index.html
|
|
@ -38,10 +38,10 @@
|
|||
</span>
|
||||
<span ng-if="!$root.updatingBalance"
|
||||
data-options="disable_for_touch:true"
|
||||
tooltip="{{totalBalanceBTC}} BTC"
|
||||
tooltip="{{totalBalanceBTC || 0 |noFractionNumber:8}} BTC"
|
||||
tooltip-trigger="mouseenter"
|
||||
tooltip-placement="bottom">{{totalBalance || 0
|
||||
|noFractionNumber:4}} {{$root.unitName}}
|
||||
|noFractionNumber}} {{$root.unitName}}
|
||||
</span>
|
||||
</div>
|
||||
<div class="large-4 medium-4 columns">
|
||||
|
|
@ -51,9 +51,9 @@
|
|||
</span>
|
||||
<span ng-show="!$root.updatingBalance"
|
||||
data-options="disable_for_touch:true"
|
||||
tooltip="{{availableBalanceBTC}} BTC"
|
||||
tooltip="{{availableBalanceBTC || 0 |noFractionNumber:8}} BTC"
|
||||
tooltip-trigger="mouseenter"
|
||||
tooltip-placement="bottom">{{availableBalance || 0|noFractionNumber:4}} {{$root.unitName}}
|
||||
tooltip-placement="bottom">{{availableBalance || 0|noFractionNumber}} {{$root.unitName}}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
|
|
@ -422,11 +422,11 @@
|
|||
<i class="fi-bitcoin-circle icon-rotate spinner"></i>
|
||||
</span>
|
||||
<span ng-if="!$root.updatingBalance">
|
||||
{{$root.balanceByAddr[addr.address] || 0|noFractionNumber:4}} {{$root.unitName}}
|
||||
{{$root.balanceByAddr[addr.address] || 0|noFractionNumber}} {{$root.unitName}}
|
||||
</span>
|
||||
</span>
|
||||
<span ng-if="addrWithFund != addr.address">
|
||||
{{addr.balance || 0|noFractionNumber:4}} {{$root.unitName}}
|
||||
{{addr.balance || 0|noFractionNumber}} {{$root.unitName}}
|
||||
</span>
|
||||
</span>
|
||||
</a>
|
||||
|
|
@ -444,12 +444,12 @@
|
|||
<span ng-if="$root.updatingBalance">
|
||||
<i class="fi-bitcoin-circle icon-rotate spinner"></i>
|
||||
</span>
|
||||
<span ng-if="!$root.updatingBalance">{{balanceByAddr[selectedAddr.address] || 0 | noFractionNumber:4}}
|
||||
<span ng-if="!$root.updatingBalance">{{balanceByAddr[selectedAddr.address] || 0 | noFractionNumber}}
|
||||
</span>
|
||||
</span>
|
||||
<span ng-if="addrWithFund != selectedAddr.address" style="word-wrap: break-word;">
|
||||
{{selectedAddr.address}}<br/>
|
||||
{{selectedAddr.balance || 0|noFractionNumber:4}} {{$root.unitName}}
|
||||
{{selectedAddr.balance || 0|noFractionNumber}} {{$root.unitName}}
|
||||
</span>
|
||||
</strong>
|
||||
</p>
|
||||
|
|
@ -481,7 +481,7 @@
|
|||
<div class="large-8 medium-8 small-12 columns">
|
||||
<div class="row" ng-repeat="out in tx.outs">
|
||||
<div class="large-3 medium-3 small-3 columns ellipsis">
|
||||
{{out.value | noFractionNumber:4}} {{$root.unitName}}</div>
|
||||
{{out.value | noFractionNumber}} {{$root.unitName}}</div>
|
||||
<div class="large-1 medium-1 small-2 columns fi-arrow-right size-24"> </div>
|
||||
<div class="large-8 medium-8 small-7 columns ellipsis">
|
||||
<contact address="{{out.address}}" tooltip-popup-delay="500" tooltip tooltip-placement="right"/>
|
||||
|
|
@ -565,7 +565,7 @@
|
|||
<p class="text-gray m5b" ng-show="!tx.finallyRejected && tx.missingSignatures>1">
|
||||
{{tx.missingSignatures}} signatures missing</p>
|
||||
<div class="ellipsis small text-gray">
|
||||
<strong>Fee:</strong> {{tx.fee|noFractionNumber:4}} {{$root.unitName}}
|
||||
<strong>Fee:</strong> {{tx.fee|noFractionNumber}} {{$root.unitName}}
|
||||
<strong>Proposal ID:</strong> {{tx.ntxid}}
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -612,7 +612,7 @@
|
|||
<div class="row">
|
||||
<div class="large-5 medium-5 small-5 columns">
|
||||
<div ng-repeat="vin in btx.vinSimple">
|
||||
<small class="right m5t">{{vin.value| noFractionNumber:4}} {{$root.unitName}}</small>
|
||||
<small class="right m5t">{{vin.value| noFractionNumber}} {{$root.unitName}}</small>
|
||||
<p class="ellipsis text-gray size-12">
|
||||
<contact address="{{vin.addr}}" tooltip-popup-delay="500" tooltip tooltip-placement="right"/>
|
||||
</p>
|
||||
|
|
@ -623,7 +623,7 @@
|
|||
</div>
|
||||
<div class="large-6 medium-6 small-6 columns">
|
||||
<div ng-repeat="vout in btx.voutSimple">
|
||||
<small class="right m5t">{{vout.value| noFractionNumber:4}} {{$root.unitName}}</small>
|
||||
<small class="right m5t">{{vout.value| noFractionNumber}} {{$root.unitName}}</small>
|
||||
<p class="ellipsis text-gray size-12">
|
||||
<contact address="{{vout.addr}}" tooltip-popup-delay="500" tooltip tooltip-placement="right"/>
|
||||
</p>
|
||||
|
|
@ -633,9 +633,9 @@
|
|||
</div>
|
||||
<div class="m10 size-12 text-gray">
|
||||
<div class="row">
|
||||
<div class="large-4 medium-4 small-4 columns">Fees: {{btx.fees | noFractionNumber:4}} {{$root.unitName}}</div>
|
||||
<div class="large-4 medium-4 small-4 columns">Fees: {{btx.fees | noFractionNumber}} {{$root.unitName}}</div>
|
||||
<div class="large-4 medium-4 small-4 columns text-center">Confirmations: {{btx.confirmations || 0}}</div>
|
||||
<div class="large-4 medium-4 small-4 columns text-right">Total: {{btx.valueOut| noFractionNumber:4}} {{$root.unitName}}</div>
|
||||
<div class="large-4 medium-4 small-4 columns text-right">Total: {{btx.valueOut| noFractionNumber}} {{$root.unitName}}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -725,13 +725,13 @@
|
|||
Total amount for this transaction:
|
||||
</small>
|
||||
<div class="totalAmount">
|
||||
<b>{{amount + defaultFee |noFractionNumber:4}}</b> {{$root.unitName}}
|
||||
<b>{{amount + defaultFee |noFractionNumber}}</b> {{$root.unitName}}
|
||||
<small>
|
||||
{{ ((amount + defaultFee) * unitToBtc) |noFractionNumber:4}} BTC
|
||||
{{ ((amount + defaultFee) * unitToBtc)|noFractionNumber:8}} BTC
|
||||
</small>
|
||||
</div>
|
||||
<small>
|
||||
Including fee of {{defaultFee|noFractionNumber:4}} {{$root.unitName}}
|
||||
Including fee of {{defaultFee|noFractionNumber}} {{$root.unitName}}
|
||||
</small>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -36,13 +36,29 @@ angular.module('copayApp.filters', [])
|
|||
function(filter, locale) {
|
||||
var numberFilter = filter('number');
|
||||
var formats = locale.NUMBER_FORMATS;
|
||||
return function(amount, fraction) {
|
||||
var value = numberFilter(amount, fraction);
|
||||
return function(amount, n) {
|
||||
var fractionSize = (typeof(n) != 'undefined') ? n : config.unitToSatoshi.toString().length - 1;
|
||||
var value = numberFilter(amount, fractionSize);
|
||||
var sep = value.indexOf(formats.DECIMAL_SEP);
|
||||
var group = value.indexOf(formats.GROUP_SEP);
|
||||
if(amount >= 0) {
|
||||
if (group > 0) {
|
||||
return value.substring(0, sep);
|
||||
if (sep < 0) {
|
||||
return value;
|
||||
}
|
||||
var intValue = value.substring(0, sep);
|
||||
var floatValue = parseFloat(value.substring(sep));
|
||||
if (floatValue === 0) {
|
||||
floatValue = '';
|
||||
}
|
||||
else {
|
||||
if(floatValue % 1 === 0) {
|
||||
floatValue = floatValue.toFixed(0);
|
||||
}
|
||||
floatValue = floatValue.toString().substring(1);
|
||||
}
|
||||
var finalValue = intValue + floatValue;
|
||||
return finalValue;
|
||||
}
|
||||
else {
|
||||
value = parseFloat(value);
|
||||
|
|
|
|||
|
|
@ -193,9 +193,9 @@ angular.module('copayApp.services')
|
|||
var COIN = bitcore.util.COIN;
|
||||
|
||||
$rootScope.totalBalance = balanceSat * satToUnit;
|
||||
$rootScope.totalBalanceBTC = (balanceSat / COIN).toFixed(4);
|
||||
$rootScope.totalBalanceBTC = (balanceSat / COIN);
|
||||
$rootScope.availableBalance = safeBalanceSat * satToUnit;
|
||||
$rootScope.availableBalanceBTC = (safeBalanceSat / COIN).toFixed(4);
|
||||
$rootScope.availableBalanceBTC = (safeBalanceSat / COIN);
|
||||
var balanceByAddr = {};
|
||||
for (var ii in balanceByAddrSat) {
|
||||
balanceByAddr[ii] = balanceByAddrSat[ii] * satToUnit;
|
||||
|
|
|
|||
|
|
@ -69,14 +69,67 @@ describe('Unit: Testing Filters', function() {
|
|||
}));
|
||||
});
|
||||
|
||||
describe('noFractionNumber', function() {
|
||||
describe('noFractionNumber bits', function() {
|
||||
beforeEach(function() {
|
||||
config.unitToSatoshi = 100;
|
||||
config.unitName = 'bits';
|
||||
});
|
||||
it('should format number to display correctly', inject(function($filter) {
|
||||
var noFraction = $filter('noFractionNumber');
|
||||
var fraction = 4;
|
||||
expect(noFraction(3100, fraction)).to.equal('3,100');
|
||||
expect(noFraction(3100200, fraction)).to.equal('3,100,200');
|
||||
expect(noFraction(3, fraction)).to.equal('3');
|
||||
expect(noFraction(0.3, fraction)).to.equal(0.3);
|
||||
expect(noFraction(3100)).to.equal('3,100');
|
||||
expect(noFraction(3100200)).to.equal('3,100,200');
|
||||
expect(noFraction(3)).to.equal('3');
|
||||
expect(noFraction(0.3)).to.equal(0.3);
|
||||
expect(noFraction(0.30000000)).to.equal(0.3);
|
||||
expect(noFraction(3200.01)).to.equal('3,200.01');
|
||||
expect(noFraction(3200890.010000)).to.equal('3,200,890.01');
|
||||
}));
|
||||
});
|
||||
|
||||
describe('noFractionNumber BTC', function() {
|
||||
beforeEach(function() {
|
||||
config.unitToSatoshi = 100000000;
|
||||
config.unitName = 'BTC';
|
||||
});
|
||||
it('should format number to display correctly', inject(function($filter) {
|
||||
var noFraction = $filter('noFractionNumber');
|
||||
expect(noFraction(0.30000000)).to.equal(0.3);
|
||||
expect(noFraction(0.00302000)).to.equal(0.00302);
|
||||
expect(noFraction(1.00000001)).to.equal(1.00000001);
|
||||
expect(noFraction(3.10000012)).to.equal(3.10000012);
|
||||
expect(noFraction(0.00100000)).to.equal(0.001);
|
||||
expect(noFraction(0.00100009)).to.equal(0.00100009);
|
||||
expect(noFraction(2000.00312011)).to.equal('2,000.00312011');
|
||||
expect(noFraction(2000998.00312011)).to.equal('2,000,998.00312011');
|
||||
}));
|
||||
});
|
||||
|
||||
describe('noFractionNumber mBTC', function() {
|
||||
beforeEach(function() {
|
||||
config.unitToSatoshi = 100000;
|
||||
config.unitName = 'mBTC';
|
||||
});
|
||||
it('should format number to display correctly', inject(function($filter) {
|
||||
var noFraction = $filter('noFractionNumber');
|
||||
expect(noFraction(0.30000)).to.equal(0.3);
|
||||
expect(noFraction(0.00302)).to.equal(0.00302);
|
||||
expect(noFraction(1.00001)).to.equal(1.00001);
|
||||
expect(noFraction(3.10002)).to.equal(3.10002);
|
||||
expect(noFraction(0.00100000)).to.equal(0.001);
|
||||
expect(noFraction(0.00100009)).to.equal(0.001);
|
||||
expect(noFraction(2000.00312)).to.equal('2,000.00312');
|
||||
expect(noFraction(2000998.00312)).to.equal('2,000,998.00312');
|
||||
}));
|
||||
});
|
||||
|
||||
describe('noFractionNumber:custom fractionSize', function() {
|
||||
it('should format number to display correctly', inject(function($filter) {
|
||||
var noFraction = $filter('noFractionNumber');
|
||||
expect(noFraction(0.30000, 0)).to.equal('0');
|
||||
expect(noFraction(1.00001, 0)).to.equal('1');
|
||||
expect(noFraction(3.10002, 0)).to.equal('3');
|
||||
expect(noFraction(2000.00312, 0)).to.equal('2,000');
|
||||
expect(noFraction(2000998.00312, 0)).to.equal('2,000,998');
|
||||
}));
|
||||
});
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue