53 lines
1.7 KiB
JavaScript
53 lines
1.7 KiB
JavaScript
import currency from '../consts/currency.js';
|
|
import settings from '../lib/settings.js';
|
|
import utils from '../lib/utils.js';
|
|
|
|
export default function ({i18n}, value, currencyCode, notConvertValue) {
|
|
if (!utils.isNumber(value) && !utils.isString(value)) {
|
|
return value;
|
|
}
|
|
|
|
if (utils.isNumber(value)) {
|
|
value = value.toString();
|
|
}
|
|
|
|
if (!notConvertValue) {
|
|
const hasIncompleteFlag = utils.isString(value) && value.charAt(value.length - 1) === '+';
|
|
|
|
if (hasIncompleteFlag) {
|
|
value = value.substr(0, value.length - 1);
|
|
}
|
|
|
|
value = utils.numericCurrencyToString(value);
|
|
|
|
if (hasIncompleteFlag) {
|
|
value = value + '+';
|
|
}
|
|
}
|
|
|
|
const currencyDisplayMode = settings.getCurrencyDisplayMode();
|
|
|
|
if (currencyCode && currencyDisplayMode === currency.allCurrencyDisplayModes.Symbol) {
|
|
const currencyInfo = currency.all[currencyCode];
|
|
let currencySymbol = currency.defaultCurrencySymbol;
|
|
|
|
if (currencyInfo && currencyInfo.symbol) {
|
|
currencySymbol = currencyInfo.symbol;
|
|
} else if (currencyInfo && currencyInfo.code) {
|
|
currencySymbol = currencyInfo.code;
|
|
}
|
|
|
|
return i18n.t('format.currency.symbol', {
|
|
amount: value,
|
|
symbol: currencySymbol
|
|
});
|
|
} else if (currencyCode && currencyDisplayMode === currency.allCurrencyDisplayModes.Code) {
|
|
return `${value} ${currencyCode}`;
|
|
} else if (currencyCode && currencyDisplayMode === currency.allCurrencyDisplayModes.Name) {
|
|
const currencyName = i18n.t(`currency.${currencyCode}`);
|
|
return `${value} ${currencyName}`;
|
|
} else {
|
|
return value;
|
|
}
|
|
}
|