add currency filter

This commit is contained in:
MaysWind
2020-11-08 23:16:51 +08:00
parent da4083138c
commit 2dbaabdedd
6 changed files with 54 additions and 0 deletions
+19
View File
@@ -0,0 +1,19 @@
import settings from "../lib/settings.js";
export default function ({ i18n }, value, currencyCode) {
if (!value) {
return value;
}
value = value / 100;
const currencyDisplayMode = settings.getCurrencyDisplayMode();
if (currencyDisplayMode === 'code') {
return `${value} ${currencyCode}`;
} else if (currencyDisplayMode === 'name') {
const name = i18n.t(`currency.${currencyCode}`);
return `${value} ${name}`;
} else {
return value;
}
}
+7
View File
@@ -5,6 +5,7 @@ const serverSettingsCookieKey = 'ACP_SETTINGS';
const defaultSettings = {
lang: 'en',
currencyDisplayMode: 'code', // or 'none' or 'name'
animate: true,
autoDarkMode: true
};
@@ -32,6 +33,10 @@ function getOriginalOption(key) {
return getOriginalSettings()[key];
}
function getOption(key) {
return getFinalSettings()[key];
}
function setOption(key, value) {
if (!Object.prototype.hasOwnProperty.call(defaultSettings, key)) {
return;
@@ -61,6 +66,8 @@ function getServerSetting(key) {
export default {
getLanguage: () => getOriginalOption('lang'),
setLanguage: value => setOption('lang', value),
getCurrencyDisplayMode: () => getOption('currencyDisplayMode'),
setCurrencyDisplayMode: value => setOption('currencyDisplayMode', value),
isEnableAnimate: () => getOriginalOption('animate'),
setEnableAnimate: value => setOption('animate', value),
isEnableAutoDarkMode: () => getOriginalOption('autoDarkMode'),
+4
View File
@@ -229,6 +229,7 @@ export default {
'Cancel': 'Cancel',
'Close': 'Close',
'Update': 'Update',
'None': 'None',
'Done': 'Done',
'Continue': 'Continue',
'Status': 'Status',
@@ -287,6 +288,9 @@ export default {
'Transfer': 'Transfer',
'User Profile': 'User Profile',
'Language': 'Language',
'Currency Display Mode': 'Currency Display Mode',
'Currency Code': 'Currency Code',
'Currency Name': 'Currency Name',
'Enable Animate': 'Enable Animate',
'Enable Auto Dark Mode': 'Enable Auto Dark Mode',
'You have been successfully registered': 'You have been successfully registered',
+4
View File
@@ -229,6 +229,7 @@ export default {
'Cancel': '取消',
'Close': '关闭',
'Update': '更新',
'None': '无',
'Done': '完成',
'Continue': '继续',
'Status': '状态',
@@ -287,6 +288,9 @@ export default {
'Transfer': '转账',
'User Profile': '用户信息',
'Language': '语言',
'Currency Display Mode': '货币显示模式',
'Currency Code': '货币代码',
'Currency Name': '货币名称',
'Enable Animate': '启用动画',
'Enable Auto Dark Mode': '启用自动深色模式',
'You have been successfully registered': '注册成功',
+3
View File
@@ -19,6 +19,7 @@ import settings from './lib/settings.js';
import services from './lib/services.js';
import userstate from './lib/userstate.js';
import utils from './lib/utils.js';
import currencyFilter from './filters/currency.js';
import App from './Mobile.vue';
Vue.use(VueI18n);
@@ -139,6 +140,8 @@ Vue.prototype.$hideLoading = function () {
Vue.prototype.$services = services;
Vue.prototype.$user = userstate;
Vue.filter('currency', (value, currencyCode) => currencyFilter({ i18n }, value, currencyCode));
Vue.prototype.$setLanguage(settings.getLanguage() || getDefaultLanguage());
// refresh token if user is logined
+17
View File
@@ -19,6 +19,15 @@
:value="locale">{{ lang.displayName }}</option>
</select>
</f7-list-item>
<f7-list-item
:title="$t('Currency Display Mode')"
smart-select :smart-select-params="{ openIn: 'sheet', closeOnSelect: true, sheetCloseLinkText: $t('Done') }">
<select v-model="currencyDisplayMode">
<option value="none">{{ $t('None') }}</option>
<option value="code">{{ $t('Currency Code') }}</option>
<option value="name">{{ $t('Currency Name') }}</option>
</select>
</f7-list-item>
<f7-list-item>
<span>{{ $t('Enable Animate') }}</span>
<f7-toggle :checked="isEnableAnimate" @toggle:change="isEnableAnimate = $event"></f7-toggle>
@@ -58,6 +67,14 @@ export default {
this.$setLanguage(value);
}
},
currencyDisplayMode: {
get: function () {
return this.$settings.getCurrencyDisplayMode();
},
set: function (value) {
this.$settings.setCurrencyDisplayMode(value);
}
},
isEnableAnimate: {
get: function () {
return this.$settings.isEnableAnimate();