formatted-amount displays "-.--" when it does not have a value.

This commit is contained in:
Brendon Duncan 2018-08-08 13:28:44 +12:00
commit 12aa9a3b18

View file

@ -60,46 +60,68 @@ angular.module('bitcoincom.directives')
if (decimalPlaces['8'].indexOf(currency.toUpperCase()) > -1) return '8'; if (decimalPlaces['8'].indexOf(currency.toUpperCase()) > -1) return '8';
return '2'; return '2';
}; };
var getDecimalSeparator = function() {
var testNum = 1.5;
var testString = testNum.toLocaleString(uxLanguage.getCurrentLanguage());
// Some environments let you set decimal separators that are more than one character
var separator = /^1(.+)5$/.exec(testString)[1]
return separator;
};
var formatNumbers = function(currency, value) { var formatNumbers = function(currency, value) {
if (isNaN(parseFloat($scope.value))) {
buildAmount('', '', '');
return;
}
var parsed = parseFloat(value);
var valueFormatted = '';
var valueProcessing = '';
switch (getDecimalPlaces(currency)) { switch (getDecimalPlaces(currency)) {
case '0': case '0':
var valueFormatted = localizeNumbers(Math.round(parseFloat(value))); if (isNaN(parsed)) {
buildAmount(valueFormatted, '', ''); buildAmount('-', '', '');
} else {
valueFormatted = localizeNumbers(Math.round(parsed));
buildAmount(valueFormatted, '', '');
}
break; break;
case '3': case '3':
var valueProcessing = parseFloat(parseFloat(value).toFixed(3)); if (isNaN(parsed)) {
var valueFormatted = localizeNumbers(valueProcessing, 3); buildAmount('-' + getDecimalSeparator() + '---', '', '');
buildAmount(valueFormatted, '', ''); } else {
valueProcessing = parsed.toFixed(3);
valueFormatted = localizeNumbers(valueProcessing, 3);
buildAmount(valueFormatted, '', '');
}
break; break;
case '8': case '8':
var valueFormatted = parseFloat(value).toFixed(8); if (isNaN(parsed)) {
if (parseFloat(value) == 0) { buildAmount('-' + getDecimalSeparator() + '---', '', '');
} else if (parsed === 0) {
buildAmount('0', '', ''); buildAmount('0', '', '');
} else { } else {
var valueFormatted = localizeNumbers(valueFormatted, 8); valueFormatted = parsed.toFixed(8);
valueFormatted = localizeNumbers(valueFormatted, 8);
var start = valueFormatted.slice(0, -5); var start = valueFormatted.slice(0, -5);
var middle = valueFormatted.slice(-5, -2); var middle = valueFormatted.slice(-5, -2);
var end = valueFormatted.substr(valueFormatted.length - 2); var end = valueFormatted.substr(valueFormatted.length - 2);
buildAmount(start, middle, end); buildAmount(start, middle, end);
} }
break; break;
default: default: // 2
var valueProcessing = parseFloat(parseFloat(value).toFixed(2)); if (isNaN(parsed)) {
var valueFormatted = localizeNumbers(valueProcessing, 2); buildAmount('-' + getDecimalSeparator() + '--', '', '');
buildAmount(valueFormatted, '', ''); } else {
valueProcessing = parseFloat(parsed.toFixed(2));
valueFormatted = localizeNumbers(valueProcessing, 2);
buildAmount(valueFormatted, '', '');
}
break; break;
} }
}; };
formatNumbers($scope.currency, $scope.value); formatNumbers($scope.currency, $scope.value);
$scope.$watchGroup(['currency', 'value'], function() { $scope.$watchGroup(['currency', 'value'], function() {
formatNumbers($scope.currency, $scope.value); formatNumbers($scope.currency, $scope.value);