code refactor

This commit is contained in:
MaysWind
2021-03-14 01:16:06 +08:00
parent 6820ccfa55
commit 386bfa0db4
4 changed files with 48 additions and 35 deletions
+6
View File
@@ -0,0 +1,6 @@
import utils from '../lib/utils.js';
export default function (utcOffsetMinutes) {
const utcOffset = utils.getUtcOffsetByUtcOffsetMinutes(utcOffsetMinutes);
return `(UTC${utcOffset})`;
}
+37 -13
View File
@@ -34,6 +34,39 @@ function isBoolean(val) {
return typeof(val) === 'boolean'; return typeof(val) === 'boolean';
} }
function getUtcOffsetMinutesByUtcOffset(utcOffset) {
if (!utcOffset) {
return 0;
}
const parts = utcOffset.split(':');
if (parts.length !== 2) {
return 0;
}
return parseInt(parts[0]) * 60 + parseInt(parts[1]);
}
function getUtcOffsetByUtcOffsetMinutes(utcOffsetMinutes) {
let offsetHours = parseInt(Math.abs(utcOffsetMinutes) / 60);
let offsetMinutes = Math.abs(utcOffsetMinutes) - offsetHours * 60;
if (offsetHours < 10) {
offsetHours = '0' + offsetHours;
}
if (offsetMinutes < 10) {
offsetMinutes = '0' + offsetMinutes;
}
if (utcOffsetMinutes >= 0) {
return `+${offsetHours}:${offsetMinutes}`;
} else if (utcOffsetMinutes < 0) {
return `-${offsetHours}:${offsetMinutes}`;
}
}
function getTimezoneOffset(timezone) { function getTimezoneOffset(timezone) {
if (timezone) { if (timezone) {
return moment().tz(timezone).format('Z'); return moment().tz(timezone).format('Z');
@@ -43,19 +76,8 @@ function getTimezoneOffset(timezone) {
} }
function getTimezoneOffsetMinutes(timezone) { function getTimezoneOffsetMinutes(timezone) {
const offset = getTimezoneOffset(timezone); const utcOffset = getTimezoneOffset(timezone);
return getUtcOffsetMinutesByUtcOffset(utcOffset);
if (!offset) {
return 0;
}
const parts = offset.split(':');
if (parts.length !== 2) {
return 0;
}
return parseInt(parts[0]) * 60 + parseInt(parts[1]);
} }
function getCurrentUnixTime() { function getCurrentUnixTime() {
@@ -590,6 +612,8 @@ export default {
isString, isString,
isNumber, isNumber,
isBoolean, isBoolean,
getUtcOffsetMinutesByUtcOffset,
getUtcOffsetByUtcOffsetMinutes,
getTimezoneOffset, getTimezoneOffset,
getTimezoneOffsetMinutes, getTimezoneOffsetMinutes,
getCurrentUnixTime, getCurrentUnixTime,
+5
View File
@@ -72,6 +72,7 @@ import momentFilter from './filters/moment.js';
import percentFilter from './filters/percent.js'; import percentFilter from './filters/percent.js';
import itemFieldContentFilter from './filters/itemFieldContent.js'; import itemFieldContentFilter from './filters/itemFieldContent.js';
import currencyFilter from './filters/currency.js'; import currencyFilter from './filters/currency.js';
import utcOffsetFilter from './filters/utcOffset.js';
import iconFilter from './filters/icon.js'; import iconFilter from './filters/icon.js';
import iconStyleFilter from './filters/iconStyle.js'; import iconStyleFilter from './filters/iconStyle.js';
import defaultIconColorFilter from './filters/defaultIconColor.js'; import defaultIconColorFilter from './filters/defaultIconColor.js';
@@ -153,6 +154,7 @@ Vue.filter('moment', (value, format) => momentFilter(value, format));
Vue.filter('percent', (value, precision, lowPrecisionValue) => percentFilter(value, precision, lowPrecisionValue)); Vue.filter('percent', (value, precision, lowPrecisionValue) => percentFilter(value, precision, lowPrecisionValue));
Vue.filter('itemFieldContent', (value, fieldName, defaultValue, translate) => itemFieldContentFilter({ i18n }, value, fieldName, defaultValue, translate)); Vue.filter('itemFieldContent', (value, fieldName, defaultValue, translate) => itemFieldContentFilter({ i18n }, value, fieldName, defaultValue, translate));
Vue.filter('currency', (value, currencyCode) => currencyFilter({ i18n }, value, currencyCode)); Vue.filter('currency', (value, currencyCode) => currencyFilter({ i18n }, value, currencyCode));
Vue.filter('utcOffset', (value) => utcOffsetFilter(value));
Vue.filter('icon', (value, iconType) => iconFilter(value, iconType)); Vue.filter('icon', (value, iconType) => iconFilter(value, iconType));
Vue.filter('iconStyle', (value, iconType, defaultColor, additionalFieldName) => iconStyleFilter(value, iconType, defaultColor, additionalFieldName)); Vue.filter('iconStyle', (value, iconType, defaultColor, additionalFieldName) => iconStyleFilter(value, iconType, defaultColor, additionalFieldName));
Vue.filter('defaultIconColor', (value, defaultColor) => defaultIconColorFilter(value, defaultColor)); Vue.filter('defaultIconColor', (value, defaultColor) => defaultIconColorFilter(value, defaultColor));
@@ -188,6 +190,7 @@ Vue.prototype.$webauthn = webauthn;
Vue.prototype.$settings = settings; Vue.prototype.$settings = settings;
Vue.prototype.$locale = { Vue.prototype.$locale = {
defaultTimezoneOffset: utils.getTimezoneOffset(), defaultTimezoneOffset: utils.getTimezoneOffset(),
defaultTimezoneOffsetMinutes: utils.getTimezoneOffsetMinutes(),
getDefaultLanguage: getDefaultLanguage, getDefaultLanguage: getDefaultLanguage,
getAllLanguages: getAllLanguages, getAllLanguages: getAllLanguages,
getLanguage: getLanguage, getLanguage: getLanguage,
@@ -222,6 +225,7 @@ Vue.prototype.$locale = {
allTimezoneInfos.push({ allTimezoneInfos.push({
name: allTimezones[i].timezoneName, name: allTimezones[i].timezoneName,
utcOffset: (allTimezones[i].timezoneName !== 'Etc/GMT' ? utils.getTimezoneOffset(allTimezones[i].timezoneName) : ''), utcOffset: (allTimezones[i].timezoneName !== 'Etc/GMT' ? utils.getTimezoneOffset(allTimezones[i].timezoneName) : ''),
utcOffsetMinutes: utils.getTimezoneOffsetMinutes(allTimezones[i].timezoneName),
displayName: i18n.t(`timezone.${allTimezones[i].displayName}`) displayName: i18n.t(`timezone.${allTimezones[i].displayName}`)
}); });
} }
@@ -230,6 +234,7 @@ Vue.prototype.$locale = {
allTimezoneInfos.push({ allTimezoneInfos.push({
name: '', name: '',
utcOffset: this.defaultTimezoneOffset, utcOffset: this.defaultTimezoneOffset,
utcOffsetMinutes: this.defaultTimezoneOffsetMinutes,
displayName: i18n.t('System Default') displayName: i18n.t('System Default')
}); });
} }
-22
View File
@@ -871,28 +871,6 @@ export default {
applyTimezoneOffset(unixTime, utcOffsetMinutes, currentTimezoneOffsetMinutes) { applyTimezoneOffset(unixTime, utcOffsetMinutes, currentTimezoneOffsetMinutes) {
return unixTime + (utcOffsetMinutes - currentTimezoneOffsetMinutes) * 60; return unixTime + (utcOffsetMinutes - currentTimezoneOffsetMinutes) * 60;
}, },
utcOffset(utcOffsetMinutes) {
let offsetHours = parseInt(Math.abs(utcOffsetMinutes) / 60);
let offsetMinutes = Math.abs(utcOffsetMinutes) - offsetHours * 60;
if (offsetHours < 10) {
offsetHours = '0' + offsetHours;
}
if (offsetMinutes < 10) {
offsetMinutes = '0' + offsetMinutes;
}
let utcOffset = '';
if (utcOffsetMinutes > 0) {
utcOffset = `+${offsetHours}:${offsetMinutes}`;
} else if (utcOffsetMinutes < 0) {
utcOffset = `-${offsetHours}:${offsetMinutes}`;
}
return `(UTC${utcOffset})`;
},
dateRangeName(dateRangeType, allDateRanges, defaultName) { dateRangeName(dateRangeType, allDateRanges, defaultName) {
if (dateRangeType === allDateRanges.All.type) { if (dateRangeType === allDateRanges.All.type) {
return defaultName; return defaultName;