Merge branch 'wallet/task/537' of https://github.com/Bitcoin-com/Wallet into wallet/task/537
This commit is contained in:
commit
9bdd44a483
1 changed files with 45 additions and 3 deletions
|
|
@ -33,10 +33,15 @@ angular.module('bitcoincom.directives')
|
||||||
'8': ['BCH', 'BTC']
|
'8': ['BCH', 'BTC']
|
||||||
};
|
};
|
||||||
var localizeNumbers = function(x, minimumFractionDigits) {
|
var localizeNumbers = function(x, minimumFractionDigits) {
|
||||||
return parseFloat(x).toLocaleString(uxLanguage.getCurrentLanguage(), {
|
var parsed = parseFloat(x);
|
||||||
|
var opts = {
|
||||||
minimumFractionDigits: minimumFractionDigits,
|
minimumFractionDigits: minimumFractionDigits,
|
||||||
useGrouping: true
|
useGrouping: true
|
||||||
});
|
};
|
||||||
|
var lang = uxLanguage.getCurrentLanguage();
|
||||||
|
var localized = parsed.toLocaleString(lang, opts);
|
||||||
|
var corrected = ensureEnoughFractionalDigits(localized, x, minimumFractionDigits);
|
||||||
|
return corrected;
|
||||||
};
|
};
|
||||||
|
|
||||||
var buildAmount = function(start, middle, end) {
|
var buildAmount = function(start, middle, end) {
|
||||||
|
|
@ -61,7 +66,6 @@ angular.module('bitcoincom.directives')
|
||||||
};
|
};
|
||||||
|
|
||||||
var formatNumbers = function() {
|
var formatNumbers = function() {
|
||||||
|
|
||||||
// During watch, may be changed from having a separate currency value,
|
// During watch, may be changed from having a separate currency value,
|
||||||
// to both being in value. Don't want to use previous currency value.
|
// to both being in value. Don't want to use previous currency value.
|
||||||
// Try to extract currency from value..
|
// Try to extract currency from value..
|
||||||
|
|
@ -128,6 +132,44 @@ angular.module('bitcoincom.directives')
|
||||||
$scope.$watchGroup(['currency', 'value'], function onFormattedAmountWatch() {
|
$scope.$watchGroup(['currency', 'value'], function onFormattedAmountWatch() {
|
||||||
formatNumbers();
|
formatNumbers();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/**
|
||||||
|
* On Android 4.4, toLocaleString() only returns 3 fractional digits when 8 is specified.
|
||||||
|
*/
|
||||||
|
function ensureEnoughFractionalDigits(localizedString, number, desiredFractionDigits) {
|
||||||
|
if (desiredFractionDigits === 0) {
|
||||||
|
// Assume it is OK
|
||||||
|
return localizedString;
|
||||||
|
}
|
||||||
|
var fractionalRe = /^(\d*\D)(\d+)$/;
|
||||||
|
var match = fractionalRe.exec(localizedString);
|
||||||
|
if (match.length !== 3) {
|
||||||
|
// Don't know what's happening, just return what we have
|
||||||
|
return localizedString;
|
||||||
|
}
|
||||||
|
|
||||||
|
var decimals = match[2];
|
||||||
|
var decimalCount = decimals.length;
|
||||||
|
if (decimalCount >= desiredFractionDigits) {
|
||||||
|
// Everything is OK.
|
||||||
|
return localizedString;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof number !== 'number') {
|
||||||
|
number = parseFloat(number);
|
||||||
|
}
|
||||||
|
|
||||||
|
var fixed = number.toFixed(desiredFractionDigits);
|
||||||
|
var fixedMatch = fractionalRe.exec(fixed);
|
||||||
|
if (fixedMatch.length !== 3) {
|
||||||
|
// Don't know what's happening, just return what we have
|
||||||
|
return localizedString;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Keeps locale decimal separator.
|
||||||
|
var enough = match[1] + fixedMatch[2];
|
||||||
|
return enough;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue