mirror of
https://github.com/mayswind/ezbookkeeping.git
synced 2026-05-14 06:57:35 +08:00
code refactor
This commit is contained in:
@@ -0,0 +1,6 @@
|
||||
import utils from '../lib/utils.js';
|
||||
|
||||
export default function (utcOffsetMinutes) {
|
||||
const utcOffset = utils.getUtcOffsetByUtcOffsetMinutes(utcOffsetMinutes);
|
||||
return `(UTC${utcOffset})`;
|
||||
}
|
||||
+37
-13
@@ -34,6 +34,39 @@ function isBoolean(val) {
|
||||
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) {
|
||||
if (timezone) {
|
||||
return moment().tz(timezone).format('Z');
|
||||
@@ -43,19 +76,8 @@ function getTimezoneOffset(timezone) {
|
||||
}
|
||||
|
||||
function getTimezoneOffsetMinutes(timezone) {
|
||||
const offset = getTimezoneOffset(timezone);
|
||||
|
||||
if (!offset) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
const parts = offset.split(':');
|
||||
|
||||
if (parts.length !== 2) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
return parseInt(parts[0]) * 60 + parseInt(parts[1]);
|
||||
const utcOffset = getTimezoneOffset(timezone);
|
||||
return getUtcOffsetMinutesByUtcOffset(utcOffset);
|
||||
}
|
||||
|
||||
function getCurrentUnixTime() {
|
||||
@@ -590,6 +612,8 @@ export default {
|
||||
isString,
|
||||
isNumber,
|
||||
isBoolean,
|
||||
getUtcOffsetMinutesByUtcOffset,
|
||||
getUtcOffsetByUtcOffsetMinutes,
|
||||
getTimezoneOffset,
|
||||
getTimezoneOffsetMinutes,
|
||||
getCurrentUnixTime,
|
||||
|
||||
@@ -72,6 +72,7 @@ import momentFilter from './filters/moment.js';
|
||||
import percentFilter from './filters/percent.js';
|
||||
import itemFieldContentFilter from './filters/itemFieldContent.js';
|
||||
import currencyFilter from './filters/currency.js';
|
||||
import utcOffsetFilter from './filters/utcOffset.js';
|
||||
import iconFilter from './filters/icon.js';
|
||||
import iconStyleFilter from './filters/iconStyle.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('itemFieldContent', (value, fieldName, defaultValue, translate) => itemFieldContentFilter({ i18n }, value, fieldName, defaultValue, translate));
|
||||
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('iconStyle', (value, iconType, defaultColor, additionalFieldName) => iconStyleFilter(value, iconType, defaultColor, additionalFieldName));
|
||||
Vue.filter('defaultIconColor', (value, defaultColor) => defaultIconColorFilter(value, defaultColor));
|
||||
@@ -188,6 +190,7 @@ Vue.prototype.$webauthn = webauthn;
|
||||
Vue.prototype.$settings = settings;
|
||||
Vue.prototype.$locale = {
|
||||
defaultTimezoneOffset: utils.getTimezoneOffset(),
|
||||
defaultTimezoneOffsetMinutes: utils.getTimezoneOffsetMinutes(),
|
||||
getDefaultLanguage: getDefaultLanguage,
|
||||
getAllLanguages: getAllLanguages,
|
||||
getLanguage: getLanguage,
|
||||
@@ -222,6 +225,7 @@ Vue.prototype.$locale = {
|
||||
allTimezoneInfos.push({
|
||||
name: 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}`)
|
||||
});
|
||||
}
|
||||
@@ -230,6 +234,7 @@ Vue.prototype.$locale = {
|
||||
allTimezoneInfos.push({
|
||||
name: '',
|
||||
utcOffset: this.defaultTimezoneOffset,
|
||||
utcOffsetMinutes: this.defaultTimezoneOffsetMinutes,
|
||||
displayName: i18n.t('System Default')
|
||||
});
|
||||
}
|
||||
|
||||
@@ -871,28 +871,6 @@ export default {
|
||||
applyTimezoneOffset(unixTime, utcOffsetMinutes, currentTimezoneOffsetMinutes) {
|
||||
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) {
|
||||
if (dateRangeType === allDateRanges.All.type) {
|
||||
return defaultName;
|
||||
|
||||
Reference in New Issue
Block a user