From 19ab2a59dd592d8f8ae3a02d4faf98efd21dbdc0 Mon Sep 17 00:00:00 2001 From: Akhil Gupta Date: Wed, 14 Jul 2021 06:47:16 +0530 Subject: [PATCH] customize date formats --- README.md | 2 +- server/controllers/masters.go | 2 +- server/db/clarkson.go | 1 + server/db/dbModels.go | 1 + server/models/misc.go | 1 + server/service/miscService.go | 3 ++- server/service/userService.go | 1 + ui/src/router/views/createExpense.vue | 14 +++++++++++++- ui/src/router/views/createFillup.vue | 15 ++++++++++++++- ui/src/router/views/settings.vue | 19 ++++++++++++++----- 10 files changed, 49 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index c0f70a5..9202783 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ -->

Hammond

-

Current Version - 2021.06.27

+

Current Version - 2021.07.14

A self-hosted vehicle expense tracking system with support for multiple users. diff --git a/server/controllers/masters.go b/server/controllers/masters.go index e1785c6..edf30d6 100644 --- a/server/controllers/masters.go +++ b/server/controllers/masters.go @@ -51,7 +51,7 @@ func udpateSettings(c *gin.Context) { func udpateMySettings(c *gin.Context) { var model models.UpdateSettingModel if err := c.ShouldBind(&model); err == nil { - err := service.UpdateUserSettings(c.MustGet("userId").(string), model.Currency, *model.DistanceUnit) + err := service.UpdateUserSettings(c.MustGet("userId").(string), model.Currency, *model.DistanceUnit, model.DateFormat) if err != nil { c.JSON(http.StatusUnprocessableEntity, common.NewError("udpateMySettings", err)) return diff --git a/server/db/clarkson.go b/server/db/clarkson.go index a4a25c7..7423ded 100644 --- a/server/db/clarkson.go +++ b/server/db/clarkson.go @@ -138,6 +138,7 @@ func MigrateClarkson(connectionString string) (bool, error) { DistanceUnit: distanceUnitMap[v.DistanceUnit], Role: role, Name: v.Username, + DateFormat: "MM/dd/yyyy", } user.SetPassword("hammond") err = CreateUser(&user) diff --git a/server/db/dbModels.go b/server/db/dbModels.go index e3861d5..2d09a08 100644 --- a/server/db/dbModels.go +++ b/server/db/dbModels.go @@ -14,6 +14,7 @@ type User struct { Password string `json:"-"` Currency string `json:"currency"` DistanceUnit DistanceUnit `json:"distanceUnit"` + DateFormat string `json:"dateFormat"` Role Role `json:"role"` Name string `json:"name"` Vehicles []Vehicle `gorm:"many2many:user_vehicles;" json:"vehicles"` diff --git a/server/models/misc.go b/server/models/misc.go index c0b7f44..7f29dce 100644 --- a/server/models/misc.go +++ b/server/models/misc.go @@ -4,6 +4,7 @@ import "github.com/akhilrex/hammond/db" type UpdateSettingModel struct { Currency string `json:"currency" form:"currency" query:"currency"` + DateFormat string `json:"dateFormat" form:"dateFormat" query:"dateFormat"` DistanceUnit *db.DistanceUnit `json:"distanceUnit" form:"distanceUnit" query:"distanceUnit" ` } diff --git a/server/service/miscService.go b/server/service/miscService.go index 19da8b6..d56fd2c 100644 --- a/server/service/miscService.go +++ b/server/service/miscService.go @@ -14,7 +14,7 @@ func UpdateSettings(currency string, distanceUnit db.DistanceUnit) error { setting.DistanceUnit = distanceUnit return db.UpdateSettings(setting) } -func UpdateUserSettings(userId, currency string, distanceUnit db.DistanceUnit) error { +func UpdateUserSettings(userId, currency string, distanceUnit db.DistanceUnit, dateFormat string) error { user, err := db.GetUserById(userId) if err != nil { return err @@ -22,6 +22,7 @@ func UpdateUserSettings(userId, currency string, distanceUnit db.DistanceUnit) e user.Currency = currency user.DistanceUnit = distanceUnit + user.DateFormat = dateFormat return db.UpdateUser(user) } diff --git a/server/service/userService.go b/server/service/userService.go index 6799afa..bdd568f 100644 --- a/server/service/userService.go +++ b/server/service/userService.go @@ -13,6 +13,7 @@ func CreateUser(userModel *models.RegisterRequest, role db.Role) error { Role: role, Currency: setting.Currency, DistanceUnit: setting.DistanceUnit, + DateFormat: "MM/dd/yyyy", } toCreate.SetPassword(userModel.Password) diff --git a/ui/src/router/views/createExpense.vue b/ui/src/router/views/createExpense.vue index e3e17dd..cfc59e6 100644 --- a/ui/src/router/views/createExpense.vue +++ b/ui/src/router/views/createExpense.vue @@ -4,6 +4,7 @@ import QuickEntryDisplay from '@components/quickEntryDisplay.vue' import { mapState } from 'vuex' import axios from 'axios' import store from '@state/store' +import { format } from 'date-fns' export default { page: { @@ -61,6 +62,10 @@ export default { } }, methods: { + formatDate(date) { + const finalFormat = this.me.dateFormat ? this.me.dateFormat : 'MM/dd/yyyy' + return format(date, finalFormat) + }, getEmptyExpense() { return { vehicleId: this.selectedVehicle.id, @@ -172,7 +177,14 @@ export default { - + + diff --git a/ui/src/router/views/createFillup.vue b/ui/src/router/views/createFillup.vue index de14865..d2280e6 100644 --- a/ui/src/router/views/createFillup.vue +++ b/ui/src/router/views/createFillup.vue @@ -6,6 +6,7 @@ import store from '@state/store' import { mapState } from 'vuex' import axios from 'axios' import { round } from 'lodash' +import { format } from 'date-fns' export default { page: { @@ -69,6 +70,10 @@ export default { } }, methods: { + formatDate(date) { + const finalFormat = this.me.dateFormat ? this.me.dateFormat : 'MM/dd/yyyy' + return format(date, finalFormat) + }, fetchVehicleUsers() { store .dispatch('vehicles/fetchUsersByVehicleId', { vehicleId: this.selectedVehicle.id }) @@ -186,7 +191,15 @@ export default { - + + diff --git a/ui/src/router/views/settings.vue b/ui/src/router/views/settings.vue index 24f06e7..d3bd10d 100644 --- a/ui/src/router/views/settings.vue +++ b/ui/src/router/views/settings.vue @@ -24,6 +24,7 @@ export default { settingsModel: { currency: this.me.currency, distanceUnit: this.me.distanceUnit, + dateFormat: this.me.dateFormat, }, tryingToSave: false, changePassModel: { @@ -31,6 +32,7 @@ export default { new: '', renew: '', }, + dateFormatMasters: ['dd/MM/yyyy', 'MM/dd/yyyy', 'yyyy/MM/dd'], } }, computed: { @@ -69,9 +71,9 @@ export default { .catch((err) => console.log('error:', err)) }) .catch((ex) => { - let errorMessage= ex.message; - if(ex.response && ex.response.data?.errors?.changePassword){ - errorMessage=ex.response.data?.errors?.changePassword + let errorMessage = ex.message + if (ex.response && ex.response.data?.errors?.changePassword) { + errorMessage = ex.response.data?.errors?.changePassword } this.$buefy.toast.open({ duration: 5000, @@ -134,6 +136,13 @@ export default { + + + + +
@@ -172,7 +181,7 @@ export default { - + @@ -202,7 +211,7 @@ export default { - +
Current Version2021.06.272021.07.14
Website
Support the developerSupport hereBuy him a beer!