support set timezone

This commit is contained in:
MaysWind
2021-03-07 23:59:13 +08:00
parent 7c47b3253e
commit fc2023fba2
14 changed files with 127 additions and 27 deletions
+34 -1
View File
@@ -6,7 +6,7 @@ import PincodeInput from 'vue-pincode-input';
import VueMoment from 'vue-moment';
import VueClipboard from 'vue-clipboard2';
import moment from 'moment';
import moment from 'moment-timezone';
import Framework7 from 'framework7/framework7-lite.esm.js';
import Framework7Dialog from 'framework7/components/dialog/dialog';
@@ -186,6 +186,7 @@ Vue.prototype.$logger = logger;
Vue.prototype.$webauthn = webauthn;
Vue.prototype.$settings = settings;
Vue.prototype.$locale = {
defaultTimezoneOffset: utils.getTimezoneOffset(),
getDefaultLanguage: getDefaultLanguage,
getAllLanguages: getAllLanguages,
getLanguage: getLanguage,
@@ -200,6 +201,31 @@ Vue.prototype.$locale = {
document.querySelector('html').setAttribute('lang', locale);
return locale;
},
getTimezone: function () {
return settings.getTimezone();
},
setTimezone: function (timezone) {
if (timezone) {
settings.setTimezone(timezone);
moment.tz.setDefault(timezone);
} else {
settings.setTimezone('');
moment.tz.setDefault();
}
},
getAllTimezones: function () {
const allTimezoneNames = moment.tz.names();
const allTimezoneInfos = [];
for (let i = 0; i < allTimezoneNames.length; i++) {
allTimezoneInfos.push({
name: allTimezoneNames[i],
displayName: `(UTC${utils.getTimezoneOffset(allTimezoneNames[i])}) ${allTimezoneNames[i]}`
});
}
return allTimezoneInfos;
},
getAllCurrencies: function () {
const allCurrencyCodes = currency.all;
const allCurrencies = [];
@@ -229,6 +255,13 @@ Vue.prototype.$locale = {
logger.info(`No language is set, use browser default ${getDefaultLanguage()}`);
this.setLanguage(getDefaultLanguage());
}
if (settings.getTimezone()) {
logger.info(`Current timezone is ${settings.getTimezone()}`);
this.setTimezone(settings.getTimezone());
} else {
logger.info(`No timezone is set, use browser default ${utils.getTimezoneOffset()} (maybe ${moment.tz.guess(true)})`);
}
}
};