From 8dec576a6d58e0a02b1b5c182ba881114a2ea3bd Mon Sep 17 00:00:00 2001 From: Javier Date: Thu, 14 Jul 2016 11:04:12 -0300 Subject: [PATCH] format filter --- src/js/controllers/index.js | 6 +- src/js/controllers/modals/customAmount.js | 2 +- src/js/controllers/modals/txDetails.js | 2 +- src/js/filters/filters.js | 88 ++++++++++------------- 4 files changed, 44 insertions(+), 54 deletions(-) diff --git a/src/js/controllers/index.js b/src/js/controllers/index.js index b16ed5db4..d536eafb9 100644 --- a/src/js/controllers/index.js +++ b/src/js/controllers/index.js @@ -634,9 +634,9 @@ angular.module('copayApp.controllers').controller('indexController', function($r var lockedBalanceAlternative = rateService.toFiat(self.lockedBalanceSat, self.alternativeIsoCode); var alternativeConversionRate = rateService.toFiat(100000000, self.alternativeIsoCode); - self.totalBalanceAlternative = $filter('noFractionNumber')(totalBalanceAlternative, 2); - self.lockedBalanceAlternative = $filter('noFractionNumber')(lockedBalanceAlternative, 2); - self.alternativeConversionRate = $filter('noFractionNumber')(alternativeConversionRate, 2); + self.totalBalanceAlternative = $filter('formatFiatAmount')(totalBalanceAlternative); + self.lockedBalanceAlternative = $filter('formatFiatAmount')(lockedBalanceAlternative); + self.alternativeConversionRate = $filter('formatFiatAmount')(alternativeConversionRate); self.alternativeBalanceAvailable = true; diff --git a/src/js/controllers/modals/customAmount.js b/src/js/controllers/modals/customAmount.js index 48db4d9cf..386ed1073 100644 --- a/src/js/controllers/modals/customAmount.js +++ b/src/js/controllers/modals/customAmount.js @@ -55,7 +55,7 @@ angular.module('copayApp.controllers').controller('customAmountController', func var amountSat = parseInt((amount * $scope.unitToSatoshi).toFixed(0)); $timeout(function() { $scope.customizedAmountUnit = amount + ' ' + $scope.unitName; - $scope.customizedAlternativeUnit = $filter('noFractionNumber')(form.alternative.$modelValue, 2) + ' ' + $scope.alternativeIsoCode; + $scope.customizedAlternativeUnit = $filter('formatFiatAmount')(form.alternative.$modelValue) + ' ' + $scope.alternativeIsoCode; if ($scope.unitName == 'bits') { amount = (amountSat * satToBtc).toFixed(8); } diff --git a/src/js/controllers/modals/txDetails.js b/src/js/controllers/modals/txDetails.js index cb74bfc4d..aac60fd59 100644 --- a/src/js/controllers/modals/txDetails.js +++ b/src/js/controllers/modals/txDetails.js @@ -74,7 +74,7 @@ angular.module('copayApp.controllers').controller('txDetailsController', functio var alternativeAmountBtc = ($scope.btx.amount * satToBtc).toFixed(8); $scope.rateDate = res.fetchedOn; $scope.rateStr = res.rate + ' ' + $scope.alternativeIsoCode; - $scope.alternativeAmountStr = $filter('noFractionNumber')(alternativeAmountBtc * res.rate, 2) + ' ' + $scope.alternativeIsoCode; + $scope.alternativeAmountStr = $filter('formatFiatAmount')(alternativeAmountBtc * res.rate) + ' ' + $scope.alternativeIsoCode; $scope.$apply(); } }); diff --git a/src/js/filters/filters.js b/src/js/filters/filters.js index f5930873e..716ce4102 100644 --- a/src/js/filters/filters.js +++ b/src/js/filters/filters.js @@ -26,59 +26,49 @@ angular.module('copayApp.filters', []) }); } }) + .filter('formatFiatAmount', ['$filter', '$locale', 'configService', + function(filter, locale, configService) { + var numberFilter = filter('number'); + var formats = locale.NUMBER_FORMATS; + var config = configService.getSync().wallet.settings; + return function(amount) { + if (!config) return amount; -.filter('noFractionNumber', ['$filter', '$locale', 'configService', - function(filter, locale, configService) { - var numberFilter = filter('number'); - var formats = locale.NUMBER_FORMATS; - var config = configService.getSync().wallet.settings; - return function(amount, n) { - if (typeof(n) === 'undefined' && !config) return amount; + var fractionSize = 2; + var value = numberFilter(amount, fractionSize); + var sep = value.indexOf(formats.DECIMAL_SEP); + var group = value.indexOf(formats.GROUP_SEP); - 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) { - 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); + if (amount >= 0) { + if (group > 0) { + if (sep < 0) { + return value; } + var intValue = value.substring(0, sep); + var floatValue = parseFloat(value.substring(sep)); + floatValue = floatValue.toFixed(2); floatValue = floatValue.toString().substring(1); + var finalValue = intValue + floatValue; + return finalValue; + } else { + value = parseFloat(value); + return value.toFixed(2); } - var finalValue = intValue + floatValue; - return finalValue; - } else { - value = parseFloat(value); - if (value % 1 === 0) { - value = value.toFixed(0); - } - return value; } - } - return 0; + return 0; + }; + } + ]) + .filter('orderObjectBy', function() { + return function(items, field, reverse) { + var filtered = []; + angular.forEach(items, function(item) { + filtered.push(item); + }); + filtered.sort(function(a, b) { + return (a[field] > b[field] ? 1 : -1); + }); + if (reverse) filtered.reverse(); + return filtered; }; - } -]) -.filter('orderObjectBy', function() { - return function(items, field, reverse) { - var filtered = []; - angular.forEach(items, function(item) { - filtered.push(item); - }); - filtered.sort(function (a, b) { - return (a[field] > b[field] ? 1 : -1); - }); - if(reverse) filtered.reverse(); - return filtered; - }; -}); + });