diff --git a/pkg/api/users.go b/pkg/api/users.go
index 59cc8e58..f84c2c0b 100644
--- a/pkg/api/users.go
+++ b/pkg/api/users.go
@@ -50,6 +50,7 @@ func (a *UsersApi) UserRegisterHandler(c *core.Context) (interface{}, *errs.Erro
Nickname: userRegisterReq.Nickname,
Password: userRegisterReq.Password,
DefaultCurrency: userRegisterReq.DefaultCurrency,
+ FirstDayOfWeek: userRegisterReq.FirstDayOfWeek,
}
err = a.users.CreateUser(user)
@@ -158,6 +159,14 @@ func (a *UsersApi) UserUpdateProfileHandler(c *core.Context) (interface{}, *errs
anythingUpdate = true
}
+ if userUpdateReq.FirstDayOfWeek != nil && *userUpdateReq.FirstDayOfWeek != user.FirstDayOfWeek {
+ user.FirstDayOfWeek = *userUpdateReq.FirstDayOfWeek
+ userNew.FirstDayOfWeek = *userUpdateReq.FirstDayOfWeek
+ anythingUpdate = true
+ } else {
+ userNew.FirstDayOfWeek = models.WEEKDAY_INVALID;
+ }
+
if !anythingUpdate {
return nil, errs.ErrNothingWillBeUpdated
}
diff --git a/pkg/models/user.go b/pkg/models/user.go
index c7415aba..4b557c7a 100644
--- a/pkg/models/user.go
+++ b/pkg/models/user.go
@@ -10,6 +10,21 @@ const (
USER_TYPE_SUPER_ADMIN UserType = 127
)
+// WeekDay represents week day
+type WeekDay byte
+
+// Week days
+const (
+ WEEKDAY_SUNDAY WeekDay = 0
+ WEEKDAY_MONDAY WeekDay = 1
+ WEEKDAY_TUESDAY WeekDay = 2
+ WEEKDAY_WEDNESDAY WeekDay = 3
+ WEEKDAY_THURSDAY WeekDay = 4
+ WEEKDAY_FRIDAY WeekDay = 5
+ WEEKDAY_SATURDAY WeekDay = 6
+ WEEKDAY_INVALID WeekDay = 255
+)
+
// User represents user data stored in database
type User struct {
Uid int64 `xorm:"PK"`
@@ -21,6 +36,7 @@ type User struct {
Rands string `xorm:"VARCHAR(10) NOT NULL"`
Type UserType `xorm:"TINYINT NOT NULL"`
DefaultCurrency string `xorm:"VARCHAR(3) NOT NULL"`
+ FirstDayOfWeek WeekDay `xorm:"TINYINT NOT NULL"`
IsAdmin bool `xorm:"NOT NULL"`
Deleted bool `xorm:"NOT NULL"`
EmailVerified bool `xorm:"NOT NULL"`
@@ -32,10 +48,11 @@ type User struct {
// UserBasicInfo represents a view-object of user basic info
type UserBasicInfo struct {
- Username string `json:"username"`
- Email string `json:"email"`
- Nickname string `json:"nickname"`
- DefaultCurrency string `json:"defaultCurrency"`
+ Username string `json:"username"`
+ Email string `json:"email"`
+ Nickname string `json:"nickname"`
+ DefaultCurrency string `json:"defaultCurrency"`
+ FirstDayOfWeek WeekDay `json:"firstDayOfWeek"`
}
// UserLoginRequest represents all parameters of user login request
@@ -46,20 +63,22 @@ type UserLoginRequest struct {
// UserRegisterRequest represents all parameters of user registering request
type UserRegisterRequest struct {
- Username string `json:"username" binding:"required,notBlank,max=32,validUsername"`
- Email string `json:"email" binding:"required,notBlank,max=100,validEmail"`
- Nickname string `json:"nickname" binding:"required,notBlank,max=64"`
- Password string `json:"password" binding:"required,min=6,max=128"`
- DefaultCurrency string `json:"defaultCurrency" binding:"required,len=3,validCurrency"`
+ Username string `json:"username" binding:"required,notBlank,max=32,validUsername"`
+ Email string `json:"email" binding:"required,notBlank,max=100,validEmail"`
+ Nickname string `json:"nickname" binding:"required,notBlank,max=64"`
+ Password string `json:"password" binding:"required,min=6,max=128"`
+ DefaultCurrency string `json:"defaultCurrency" binding:"required,len=3,validCurrency"`
+ FirstDayOfWeek WeekDay `json:"firstDayOfWeek" binding:"min=0,max=6"`
}
// UserProfileUpdateRequest represents all parameters of user updating profile request
type UserProfileUpdateRequest struct {
- Email string `json:"email" binding:"omitempty,notBlank,max=100,validEmail"`
- Nickname string `json:"nickname" binding:"omitempty,notBlank,max=64"`
- Password string `json:"password" binding:"omitempty,min=6,max=128"`
- OldPassword string `json:"oldPassword" binding:"omitempty,min=6,max=128"`
- DefaultCurrency string `json:"defaultCurrency" binding:"required,len=3,validCurrency"`
+ Email string `json:"email" binding:"omitempty,notBlank,max=100,validEmail"`
+ Nickname string `json:"nickname" binding:"omitempty,notBlank,max=64"`
+ Password string `json:"password" binding:"omitempty,min=6,max=128"`
+ OldPassword string `json:"oldPassword" binding:"omitempty,min=6,max=128"`
+ DefaultCurrency string `json:"defaultCurrency" binding:"omitempty,len=3,validCurrency"`
+ FirstDayOfWeek *WeekDay `json:"firstDayOfWeek" binding:"omitempty,min=0,max=6"`
}
// UserProfileUpdateResponse represents the data returns to frontend after updating profile
@@ -75,6 +94,7 @@ type UserProfileResponse struct {
Nickname string `json:"nickname"`
Type UserType `json:"type"`
DefaultCurrency string `json:"defaultCurrency"`
+ FirstDayOfWeek WeekDay `json:"firstDayOfWeek"`
LastLoginAt int64 `json:"lastLoginAt"`
}
@@ -85,6 +105,7 @@ func (u User) ToUserBasicInfo() *UserBasicInfo {
Email: u.Email,
Nickname: u.Nickname,
DefaultCurrency: u.DefaultCurrency,
+ FirstDayOfWeek: u.FirstDayOfWeek,
}
}
@@ -96,6 +117,7 @@ func (u User) ToUserProfileResponse() *UserProfileResponse {
Nickname: u.Nickname,
Type: u.Type,
DefaultCurrency: u.DefaultCurrency,
+ FirstDayOfWeek: u.FirstDayOfWeek,
LastLoginAt: u.LastLoginUnixTime,
}
}
diff --git a/pkg/services/users.go b/pkg/services/users.go
index f7bab034..6ebbb044 100644
--- a/pkg/services/users.go
+++ b/pkg/services/users.go
@@ -194,6 +194,10 @@ func (s *UserService) UpdateUser(user *models.User) (keyProfileUpdated bool, err
updateCols = append(updateCols, "default_currency")
}
+ if models.WEEKDAY_SUNDAY <= user.FirstDayOfWeek && user.FirstDayOfWeek <= models.WEEKDAY_SATURDAY {
+ updateCols = append(updateCols, "first_day_of_week")
+ }
+
user.UpdatedUnixTime = now
updateCols = append(updateCols, "updated_unix_time")
diff --git a/src/consts/datetime.js b/src/consts/datetime.js
index 2710d600..510bb767 100644
--- a/src/consts/datetime.js
+++ b/src/consts/datetime.js
@@ -1,3 +1,34 @@
+const allWeekDays = {
+ Sunday: {
+ type: 0,
+ name: 'Sunday'
+ },
+ Monday: {
+ type: 1,
+ name: 'Monday'
+ },
+ Tuesday: {
+ type: 2,
+ name: 'Tuesday'
+ },
+ Wednesday: {
+ type: 3,
+ name: 'Wednesday'
+ },
+ Thursday: {
+ type: 4,
+ name: 'Thursday'
+ },
+ Friday: {
+ type: 5,
+ name: 'Friday'
+ },
+ Saturday: {
+ type: 6,
+ name: 'Saturday'
+ }
+};
+
const allDateRanges = {
All: {
type: 0,
@@ -50,5 +81,6 @@ const allDateRanges = {
};
export default {
+ allWeekDays: allWeekDays,
allDateRanges: allDateRanges,
};
diff --git a/src/lib/services.js b/src/lib/services.js
index 4063860c..e79a6bc5 100644
--- a/src/lib/services.js
+++ b/src/lib/services.js
@@ -81,13 +81,14 @@ export default {
}
});
},
- register: ({ username, email, nickname, password, defaultCurrency }) => {
+ register: ({ username, email, nickname, password, defaultCurrency, firstDayOfWeek }) => {
return axios.post('register.json', {
username,
email,
nickname,
password,
- defaultCurrency
+ defaultCurrency,
+ firstDayOfWeek
});
},
logout: () => {
@@ -128,13 +129,14 @@ export default {
getProfile: () => {
return axios.get('v1/users/profile/get.json');
},
- updateProfile: ({ email, nickname, password, oldPassword, defaultCurrency }) => {
+ updateProfile: ({ email, nickname, password, oldPassword, defaultCurrency, firstDayOfWeek }) => {
return axios.post('v1/users/profile/update.json', {
email,
nickname,
password,
oldPassword,
- defaultCurrency
+ defaultCurrency,
+ firstDayOfWeek
});
},
get2FAStatus: () => {
diff --git a/src/lib/utils.js b/src/lib/utils.js
index 2b873270..c74b2b77 100644
--- a/src/lib/utils.js
+++ b/src/lib/utils.js
@@ -110,13 +110,24 @@ function getTodayLastUnixTime() {
return moment.unix(getTodayFirstUnixTime()).add(1, 'days').subtract(1, 'seconds').unix();
}
-function getThisWeekFirstUnixTime() {
+function getThisWeekFirstUnixTime(firstDayOfWeek) {
const today = moment.unix(getTodayFirstUnixTime());
- return today.subtract(today.day(), 'days').unix();
+
+ if (!isNumber(firstDayOfWeek)) {
+ firstDayOfWeek = 0;
+ }
+
+ let dayOfWeek = today.day() - firstDayOfWeek;
+
+ if (dayOfWeek < 0) {
+ dayOfWeek += 7;
+ }
+
+ return today.subtract(dayOfWeek, 'days').unix();
}
-function getThisWeekLastUnixTime() {
- return moment.unix(getThisWeekFirstUnixTime()).add(7, 'days').subtract(1, 'seconds').unix();
+function getThisWeekLastUnixTime(firstDayOfWeek) {
+ return moment.unix(getThisWeekFirstUnixTime(firstDayOfWeek)).add(7, 'days').subtract(1, 'seconds').unix();
}
function getThisMonthFirstUnixTime() {
@@ -163,7 +174,7 @@ function getShiftedDateRange(minTime, maxTime, scale) {
};
}
-function getDateRangeByDateType(dateType) {
+function getDateRangeByDateType(dateType, firstDayOfWeek) {
let maxTime = 0;
let minTime = 0;
@@ -183,11 +194,11 @@ function getDateRangeByDateType(dateType) {
maxTime = getUnixTimeBeforeUnixTime(getTodayLastUnixTime(), 1, 'days');
minTime = getUnixTimeBeforeUnixTime(getTodayFirstUnixTime(), 29, 'days');
} else if (dateType === dateTimeConstants.allDateRanges.ThisWeek.type) { // This week
- maxTime = getThisWeekLastUnixTime();
- minTime = getThisWeekFirstUnixTime();
+ maxTime = getThisWeekLastUnixTime(firstDayOfWeek);
+ minTime = getThisWeekFirstUnixTime(firstDayOfWeek);
} else if (dateType === dateTimeConstants.allDateRanges.LastWeek.type) { // Last week
- maxTime = getUnixTimeBeforeUnixTime(getThisWeekLastUnixTime(), 7, 'days');
- minTime = getUnixTimeBeforeUnixTime(getThisWeekFirstUnixTime(), 7, 'days');
+ maxTime = getUnixTimeBeforeUnixTime(getThisWeekLastUnixTime(firstDayOfWeek), 7, 'days');
+ minTime = getUnixTimeBeforeUnixTime(getThisWeekFirstUnixTime(firstDayOfWeek), 7, 'days');
} else if (dateType === dateTimeConstants.allDateRanges.ThisMonth.type) { // This month
maxTime = getThisMonthLastUnixTime();
minTime = getThisMonthFirstUnixTime();
diff --git a/src/locales/en.js b/src/locales/en.js
index de80c559..ecf3c759 100644
--- a/src/locales/en.js
+++ b/src/locales/en.js
@@ -6,6 +6,7 @@ export default {
},
'default': {
'currency': 'USD',
+ 'firstDayOfWeek': 'Sunday'
},
'format': {
'date': {
@@ -35,25 +36,32 @@ export default {
},
'datetime': {
'Monday': {
- 'short': 'Mon'
+ 'short': 'Mon',
+ 'long': 'Monday'
},
'Tuesday': {
- 'short': 'Tue'
+ 'short': 'Tue',
+ 'long': 'Tuesday'
},
'Wednesday': {
- 'short': 'Wed'
+ 'short': 'Wed',
+ 'long': 'Wednesday'
},
'Thursday': {
- 'short': 'Thu'
+ 'short': 'Thu',
+ 'long': 'Thursday'
},
'Friday': {
- 'short': 'Fri'
+ 'short': 'Fri',
+ 'long': 'Friday'
},
'Saturday': {
- 'short': 'Sat'
+ 'short': 'Sat',
+ 'long': 'Saturday'
},
'Sunday': {
- 'short': 'Sun'
+ 'short': 'Sun',
+ 'long': 'Sunday'
},
'January': {
'long': 'January'
@@ -420,6 +428,7 @@ export default {
'nickname': 'Nickname',
'oldPassword': 'Current Password',
'defaultCurrency': 'Default Currency',
+ 'firstDayOfWeek': 'First Day of Week',
'name': 'Name',
'category': 'Category',
'type': 'Type',
@@ -520,6 +529,7 @@ export default {
'Nickname': 'Nickname',
'Your nickname': 'Your nickname',
'Default Currency': 'Default Currency',
+ 'First Day of Week': 'First Day of Week',
'Log In': 'Log In',
'Don\'t have an account?': 'Don\'t have an account?',
'Create an account': 'Create an account',
diff --git a/src/locales/zh_Hans.js b/src/locales/zh_Hans.js
index b6d61f1a..8784c332 100644
--- a/src/locales/zh_Hans.js
+++ b/src/locales/zh_Hans.js
@@ -6,6 +6,7 @@ export default {
},
'default': {
'currency': 'CNY',
+ 'firstDayOfWeek': 'Monday'
},
'format': {
'date': {
@@ -35,25 +36,32 @@ export default {
},
'datetime': {
'Monday': {
- 'short': '周一'
+ 'short': '周一',
+ 'long': '星期一'
},
'Tuesday': {
- 'short': '周二'
+ 'short': '周二',
+ 'long': '星期二'
},
'Wednesday': {
- 'short': '周三'
+ 'short': '周三',
+ 'long': '星期三'
},
'Thursday': {
- 'short': '周四'
+ 'short': '周四',
+ 'long': '星期四'
},
'Friday': {
- 'short': '周五'
+ 'short': '周五',
+ 'long': '星期五'
},
'Saturday': {
- 'short': '周六'
+ 'short': '周六',
+ 'long': '星期六'
},
'Sunday': {
- 'short': '周日'
+ 'short': '周日',
+ 'long': '星期日'
},
'January': {
'long': '1月'
@@ -420,6 +428,7 @@ export default {
'nickname': '昵称',
'oldPassword': '当前密码',
'defaultCurrency': '默认货币',
+ 'firstDayOfWeek': '每周第一天',
'name': '名称',
'category': '分类',
'type': '类型',
@@ -520,6 +529,7 @@ export default {
'Nickname': '昵称',
'Your nickname': '你的昵称',
'Default Currency': '默认货币',
+ 'First Day of Week': '每周第一天',
'Log In': '登录',
'Don\'t have an account?': '还没有账号?',
'Create an account': '创建新账号',
diff --git a/src/store/index.js b/src/store/index.js
index c013cf0f..f816e25b 100644
--- a/src/store/index.js
+++ b/src/store/index.js
@@ -64,6 +64,7 @@ import {
resetState,
currentUserNickname,
currentUserDefaultCurrency,
+ currentUserFirstDayOfWeek,
} from './user.js';
import {
@@ -191,6 +192,7 @@ const stores = {
// user
currentUserNickname,
currentUserDefaultCurrency,
+ currentUserFirstDayOfWeek,
// exchange rates
exchangeRatesLastUpdateDate,
diff --git a/src/store/user.js b/src/store/user.js
index e059c738..4618c53a 100644
--- a/src/store/user.js
+++ b/src/store/user.js
@@ -133,7 +133,8 @@ export function register(context, { user }) {
password: user.password,
email: user.email,
nickname: user.nickname,
- defaultCurrency: user.defaultCurrency
+ defaultCurrency: user.defaultCurrency,
+ firstDayOfWeek: user.firstDayOfWeek
}).then(response => {
const data = response.data;
@@ -234,7 +235,8 @@ export function updateUserProfile(context, { profile, currentPassword }) {
oldPassword: currentPassword,
email: profile.email,
nickname: profile.nickname,
- defaultCurrency: profile.defaultCurrency
+ defaultCurrency: profile.defaultCurrency,
+ firstDayOfWeek: profile.firstDayOfWeek
}).then(response => {
const data = response.data;
@@ -342,3 +344,8 @@ export function currentUserDefaultCurrency(state) {
const userInfo = state.currentUserInfo || {};
return userInfo.defaultCurrency || null;
}
+
+export function currentUserFirstDayOfWeek(state) {
+ const userInfo = state.currentUserInfo || {};
+ return utils.isNumber(userInfo.firstDayOfWeek) ? userInfo.firstDayOfWeek : null;
+}
diff --git a/src/views/mobile/Home.vue b/src/views/mobile/Home.vue
index 35603f91..676e4ecc 100644
--- a/src/views/mobile/Home.vue
+++ b/src/views/mobile/Home.vue
@@ -173,9 +173,10 @@ export default {
const self = this;
return {
- dateRange: self.getCurrentDateRange(),
loading: true,
- showAmountInHomePage: this.$settings.isShowAmountInHomePage()
+ todayFirstUnixTime: self.$utilities.getTodayFirstUnixTime(),
+ todayLastUnixTime: self.$utilities.getTodayLastUnixTime(),
+ showAmountInHomePage: self.$settings.isShowAmountInHomePage()
};
},
computed: {
@@ -185,6 +186,39 @@ export default {
defaultCurrency() {
return this.$store.getters.currentUserDefaultCurrency || this.$t('default.currency');
},
+ firstDayOfWeek() {
+ if (this.$utilities.isNumber(this.$store.getters.currentUserFirstDayOfWeek)) {
+ return this.$store.getters.currentUserFirstDayOfWeek;
+ }
+
+ if (this.$constants.datetime.allWeekDays[this.$t('default.firstDayOfWeek')]) {
+ return this.$constants.datetime.allWeekDays[this.$t('default.firstDayOfWeek')].type;
+ }
+
+ return 0;
+ },
+ dateRange() {
+ const self = this;
+
+ return {
+ today: {
+ startTime: self.todayFirstUnixTime,
+ endTime: self.todayLastUnixTime
+ },
+ thisWeek: {
+ startTime: self.$utilities.getThisWeekFirstUnixTime(self.firstDayOfWeek),
+ endTime: self.$utilities.getThisWeekLastUnixTime(self.firstDayOfWeek)
+ },
+ thisMonth: {
+ startTime: self.$utilities.getThisMonthFirstUnixTime(),
+ endTime: self.$utilities.getThisMonthLastUnixTime()
+ },
+ thisYear: {
+ startTime: self.$utilities.getThisYearFirstUnixTime(),
+ endTime: self.$utilities.getThisYearLastUnixTime()
+ }
+ };
+ },
thisMonthAmount() {
if (!this.$store.state.transactionOverview || !this.$store.state.transactionOverview.thisMonth) {
return {
@@ -221,14 +255,16 @@ export default {
onPageAfterIn() {
this.showAmountInHomePage = this.$settings.isShowAmountInHomePage();
- const newDateRange = this.getCurrentDateRange();
+ let dateChanged = false;
- if (newDateRange.today.startTime !== this.dateRange.today.startTime ||
- newDateRange.today.endTime !== this.dateRange.today.endTime) {
- this.dateRange = newDateRange;
+ if (this.todayFirstUnixTime !== this.$utilities.getTodayFirstUnixTime()) {
+ dateChanged = true;
+
+ this.todayFirstUnixTime = this.$utilities.getTodayFirstUnixTime();
+ this.todayLastUnixTime = this.$utilities.getTodayLastUnixTime();
}
- if (this.$store.state.transactionOverviewStateInvalid && !this.loading) {
+ if ((dateChanged || this.$store.state.transactionOverviewStateInvalid) && !this.loading) {
this.reload(null);
}
},
@@ -256,28 +292,6 @@ export default {
toggleShowAmountInHomePage() {
this.showAmountInHomePage = !this.showAmountInHomePage;
this.$settings.setShowAmountInHomePage(this.showAmountInHomePage);
- },
- getCurrentDateRange() {
- const self = this;
-
- return {
- today: {
- startTime: self.$utilities.getTodayFirstUnixTime(),
- endTime: self.$utilities.getTodayLastUnixTime()
- },
- thisWeek: {
- startTime: self.$utilities.getThisWeekFirstUnixTime(),
- endTime: self.$utilities.getThisWeekLastUnixTime()
- },
- thisMonth: {
- startTime: self.$utilities.getThisMonthFirstUnixTime(),
- endTime: self.$utilities.getThisMonthLastUnixTime()
- },
- thisYear: {
- startTime: self.$utilities.getThisYearFirstUnixTime(),
- endTime: self.$utilities.getThisYearLastUnixTime()
- }
- };
}
},
filters: {
diff --git a/src/views/mobile/Signup.vue b/src/views/mobile/Signup.vue
index d02c81d5..278c5a44 100644
--- a/src/views/mobile/Signup.vue
+++ b/src/views/mobile/Signup.vue
@@ -92,6 +92,18 @@
:value="currency.code">{{ currency.displayName }}
+
+
+
+
@@ -185,7 +197,8 @@ export default {
confirmPassword: '',
email: '',
nickname: '',
- defaultCurrency: self.$t('default.currency')
+ defaultCurrency: self.$t('default.currency'),
+ firstDayOfWeek: self.$constants.datetime.allWeekDays[self.$t('default.firstDayOfWeek')] ? self.$constants.datetime.allWeekDays[self.$t('default.firstDayOfWeek')].type : 0
},
submitting: false,
presetCategories: {
@@ -206,6 +219,9 @@ export default {
allCurrencies() {
return this.$locale.getAllCurrencies();
},
+ allWeekDays() {
+ return this.$constants.datetime.allWeekDays;
+ },
currentLocale: {
get: function () {
return this.$i18n.locale;
diff --git a/src/views/mobile/statistics/Transaction.vue b/src/views/mobile/statistics/Transaction.vue
index 66f1db9a..c7048e69 100644
--- a/src/views/mobile/statistics/Transaction.vue
+++ b/src/views/mobile/statistics/Transaction.vue
@@ -233,6 +233,17 @@ export default {
return this.$store.getters.currentUserDefaultCurrency || this.$t('default.currency');
},
+ firstDayOfWeek() {
+ if (this.$utilities.isNumber(this.$store.getters.currentUserFirstDayOfWeek)) {
+ return this.$store.getters.currentUserFirstDayOfWeek;
+ }
+
+ if (this.$constants.datetime.allWeekDays[this.$t('default.firstDayOfWeek')]) {
+ return this.$constants.datetime.allWeekDays[this.$t('default.firstDayOfWeek')].type;
+ }
+
+ return 0;
+ },
query() {
return this.$store.state.transactionStatisticsFilter;
},
@@ -389,7 +400,7 @@ export default {
const self = this;
const router = self.$f7router;
- const dateRange = self.$utilities.getDateRangeByDateType(self.query.dateType);
+ const dateRange = self.$utilities.getDateRangeByDateType(self.query.dateType, self.firstDayOfWeek);
self.$store.dispatch('initTransactionStatisticsFilter', {
dateType: dateRange ? dateRange.dateType : undefined,
@@ -455,7 +466,7 @@ export default {
return;
}
- const dateRange = this.$utilities.getDateRangeByDateType(dateType);
+ const dateRange = this.$utilities.getDateRangeByDateType(dateType, this.firstDayOfWeek);
if (!dateRange) {
return;
@@ -499,7 +510,7 @@ export default {
}
const dateRangeType = this.$constants.datetime.allDateRanges[dateRangeField];
- const dateRange = this.$utilities.getDateRangeByDateType(dateRangeType.type);
+ const dateRange = this.$utilities.getDateRangeByDateType(dateRangeType.type, this.firstDayOfWeek);
if (dateRange && dateRange.minTime === newDateRange.minTime && dateRange.maxTime === newDateRange.maxTime) {
newDateType = dateRangeType.type;
diff --git a/src/views/mobile/transactions/List.vue b/src/views/mobile/transactions/List.vue
index 5aea1ff1..b3fd6a60 100644
--- a/src/views/mobile/transactions/List.vue
+++ b/src/views/mobile/transactions/List.vue
@@ -392,6 +392,17 @@ export default {
return this.$store.getters.currentUserDefaultCurrency || this.$t('default.currency');
},
+ firstDayOfWeek() {
+ if (this.$utilities.isNumber(this.$store.getters.currentUserFirstDayOfWeek)) {
+ return this.$store.getters.currentUserFirstDayOfWeek;
+ }
+
+ if (this.$constants.datetime.allWeekDays[this.$t('default.firstDayOfWeek')]) {
+ return this.$constants.datetime.allWeekDays[this.$t('default.firstDayOfWeek')].type;
+ }
+
+ return 0;
+ },
query() {
return this.$store.state.transactionsFilter;
},
@@ -425,7 +436,7 @@ export default {
const self = this;
const query = self.$f7route.query;
- let dateRange = self.$utilities.getDateRangeByDateType(query.dateType ? parseInt(query.dateType) : undefined);
+ let dateRange = self.$utilities.getDateRangeByDateType(query.dateType ? parseInt(query.dateType) : undefined, self.firstDayOfWeek);
if (!dateRange &&
query.dateType === self.$constants.datetime.allDateRanges.Custom.type.toString() &&
@@ -535,7 +546,7 @@ export default {
return;
}
- const dateRange = this.$utilities.getDateRangeByDateType(dateType);
+ const dateRange = this.$utilities.getDateRangeByDateType(dateType, this.firstDayOfWeek);
if (!dateRange) {
return;
diff --git a/src/views/mobile/users/UserProfile.vue b/src/views/mobile/users/UserProfile.vue
index b19748b6..1107f903 100644
--- a/src/views/mobile/users/UserProfile.vue
+++ b/src/views/mobile/users/UserProfile.vue
@@ -16,6 +16,7 @@
+
@@ -74,6 +75,17 @@
+
+
+
+
@@ -99,12 +111,14 @@ export default {
confirmPassword: '',
email: '',
nickname: '',
- defaultCurrency: ''
+ defaultCurrency: '',
+ firstDayOfWeek: 0
},
oldProfile: {
email: '',
nickname: '',
- defaultCurrency: ''
+ defaultCurrency: '',
+ firstDayOfWeek: 0
},
currentPassword: '',
loading: true,
@@ -116,6 +130,9 @@ export default {
allCurrencies() {
return this.$locale.getAllCurrencies();
},
+ allWeekDays() {
+ return this.$constants.datetime.allWeekDays;
+ },
inputIsNotChanged() {
return !!this.inputIsNotChangedProblemMessage;
},
@@ -128,7 +145,8 @@ export default {
} else if (!this.newProfile.password && !this.newProfile.confirmPassword &&
this.newProfile.email === this.oldProfile.email &&
this.newProfile.nickname === this.oldProfile.nickname &&
- this.newProfile.defaultCurrency === this.oldProfile.defaultCurrency) {
+ this.newProfile.defaultCurrency === this.oldProfile.defaultCurrency &&
+ this.newProfile.firstDayOfWeek === this.oldProfile.firstDayOfWeek) {
return 'Nothing has been modified';
} else if (!this.newProfile.password && this.newProfile.confirmPassword) {
return 'Password cannot be empty';
@@ -162,10 +180,12 @@ export default {
self.oldProfile.email = profile.email;
self.oldProfile.nickname = profile.nickname;
self.oldProfile.defaultCurrency = profile.defaultCurrency;
+ self.oldProfile.firstDayOfWeek = profile.firstDayOfWeek;
self.newProfile.email = self.oldProfile.email
self.newProfile.nickname = self.oldProfile.nickname;
self.newProfile.defaultCurrency = self.oldProfile.defaultCurrency;
+ self.newProfile.firstDayOfWeek = self.oldProfile.firstDayOfWeek;
self.loading = false;
}).catch(error => {