47 lines
1.4 KiB
QML
47 lines
1.4 KiB
QML
pragma Singleton
|
|
|
|
import QtQml 2.14
|
|
|
|
QtObject {
|
|
|
|
function fractionalPartLength(num) {
|
|
if (Number.isInteger(num))
|
|
return 0
|
|
|
|
return num.toString().split('.')[1].length
|
|
}
|
|
|
|
function stripTrailingZeroes(numStr, locale) {
|
|
let regEx = locale.decimalPoint == "." ? /(\.[0-9]*[1-9])0+$|\.0*$/ : /(\,[0-9]*[1-9])0+$|\,0*$/
|
|
return numStr.replace(regEx, '$1')
|
|
}
|
|
|
|
function numberToLocaleString(num, precision = -1, locale = null) {
|
|
locale = locale || Qt.locale()
|
|
|
|
if (precision === -1)
|
|
precision = fractionalPartLength(num)
|
|
|
|
return num.toLocaleString(locale, 'f', precision)
|
|
}
|
|
|
|
function currencyAmountToLocaleString(currencyAmount, locale) {
|
|
if (!locale) {
|
|
console.log("Unspecified locale for: " + JSON.stringify(currencyAmount))
|
|
locale = Qt.locale()
|
|
}
|
|
if (typeof(currencyAmount) !== "object") {
|
|
console.log("Wrong type for currencyAmount: " + JSON.stringify(currencyAmount))
|
|
return NaN
|
|
}
|
|
var amountStr = numberToLocaleString(currencyAmount.amount, currencyAmount.displayDecimals, locale)
|
|
if (currencyAmount.stripTrailingZeroes) {
|
|
amountStr = stripTrailingZeroes(amountStr, locale)
|
|
}
|
|
if (currencyAmount.symbol) {
|
|
amountStr = "%1 %2".arg(amountStr).arg(currencyAmount.symbol)
|
|
}
|
|
return amountStr
|
|
}
|
|
}
|