From 929b8eb774247174af9bde581ba7f5f2ccb2985c Mon Sep 17 00:00:00 2001 From: Florian Dupret Date: Mon, 5 Apr 2021 10:37:12 +0200 Subject: [PATCH] Make first day of the week customizable New settings section 'Locale settings' New setting 'First day of week' New date picker reusable UI that uses the new setting Meal planner now uses this new date picker --- .../Admin/General/HomePageSettings.vue | 56 ++++++++++++++++++- .../src/components/MealPlan/MealPlanNew.vue | 6 +- frontend/src/components/UI/DatePicker.vue | 30 ++++++++++ frontend/src/locales/messages/en.json | 13 ++++- frontend/src/locales/messages/fr.json | 13 ++++- frontend/src/store/modules/siteSettings.js | 1 + mealie/db/models/settings.py | 3 + mealie/schema/settings.py | 2 + 8 files changed, 115 insertions(+), 9 deletions(-) create mode 100644 frontend/src/components/UI/DatePicker.vue diff --git a/frontend/src/components/Admin/General/HomePageSettings.vue b/frontend/src/components/Admin/General/HomePageSettings.vue index b31c6b609..f7563e680 100644 --- a/frontend/src/components/Admin/General/HomePageSettings.vue +++ b/frontend/src/components/Admin/General/HomePageSettings.vue @@ -3,9 +3,6 @@

{{ $t("settings.homepage.home-page") }}

- - -
+ +

{{$t('settings.locale-settings')}}

+ + + + + + + + +
@@ -145,6 +161,7 @@ export default { return { settings: { language: "en", + firstDayOfWeek: 0, showRecent: null, cardsPerSection: null, categories: [], @@ -158,6 +175,38 @@ export default { allCategories() { return this.$store.getters.getAllCategories; }, + allDays() { + return [ + { + name: this.$t('general.sunday'), + value: 0, + }, + { + name: this.$t('general.monday'), + value: 1, + }, + { + name: this.$t('general.tuesday'), + value: 2, + }, + { + name: this.$t('general.wednesday'), + value: 3, + }, + { + name: this.$t('general.thursday'), + value: 4, + }, + { + name: this.$t('general.friday'), + value: 5, + }, + { + name: this.$t('general.saturday'), + value: 6, + } + ]; + }, }, methods: { @@ -175,6 +224,7 @@ export default { }, async saveSettings() { await api.siteSettings.update(this.settings); + this.$store.commit("setLang", this.settings.language); this.getOptions(); }, }, diff --git a/frontend/src/components/MealPlan/MealPlanNew.vue b/frontend/src/components/MealPlan/MealPlanNew.vue index 278efd3fc..50322dc8a 100644 --- a/frontend/src/components/MealPlan/MealPlanNew.vue +++ b/frontend/src/components/MealPlan/MealPlanNew.vue @@ -31,11 +31,11 @@ v-on="on" > - + /> @@ -87,12 +87,14 @@ + + \ No newline at end of file diff --git a/frontend/src/locales/messages/en.json b/frontend/src/locales/messages/en.json index 3bd654f27..99704da96 100644 --- a/frontend/src/locales/messages/en.json +++ b/frontend/src/locales/messages/en.json @@ -48,7 +48,14 @@ "apply": "Apply", "current-parenthesis": "(Current)", "users": "Users", - "groups": "Groups" + "groups": "Groups", + "sunday": "Sunday", + "monday": "Monday", + "tuesday": "Tuesday", + "wednesday": "Wednesday", + "thursday": "Thursday", + "friday": "Friday", + "saturday": "Saturday" }, "page": { "home-page": "Home Page", @@ -215,7 +222,9 @@ "site-settings": "Site Settings", "manage-users": "Manage Users", "migrations": "Migrations", - "profile": "Profile" + "profile": "Profile", + "locale-settings": "Locale settings", + "first-day-of-week": "First day of the week" }, "migration": { "recipe-migration": "Recipe Migration", diff --git a/frontend/src/locales/messages/fr.json b/frontend/src/locales/messages/fr.json index a92e4d9af..8f68effc2 100644 --- a/frontend/src/locales/messages/fr.json +++ b/frontend/src/locales/messages/fr.json @@ -46,7 +46,14 @@ "token": "Jeton", "field-required": "Champ obligatoire", "apply": "Appliquer", - "current-parenthesis": "(Actuel)" + "current-parenthesis": "(Actuel)", + "friday": "Vendredi", + "monday": "Lundi", + "saturday": "Samedi", + "sunday": "Dimanche", + "thursday": "Jeudi", + "tuesday": "Mardi", + "wednesday": "Mercredi" }, "page": { "home-page": "Accueil", @@ -213,7 +220,9 @@ "manage-users": "Utilisateurs", "migrations": "Migrations", "profile": "Profil", - "site-settings": "Paramètres site" + "site-settings": "Paramètres site", + "locale-settings": "Paramètres de langue", + "first-day-of-week": "Premier jour de la semaine" }, "migration": { "recipe-migration": "Migrer les recettes", diff --git a/frontend/src/store/modules/siteSettings.js b/frontend/src/store/modules/siteSettings.js index f521f4eb5..9b526275a 100644 --- a/frontend/src/store/modules/siteSettings.js +++ b/frontend/src/store/modules/siteSettings.js @@ -3,6 +3,7 @@ import { api } from "@/api"; const state = { siteSettings: { language: "en", + firstDayOfWeek: 0, showRecent: true, cardsPerSection: 9, categories: [], diff --git a/mealie/db/models/settings.py b/mealie/db/models/settings.py index cc40dd787..fbebdcd06 100644 --- a/mealie/db/models/settings.py +++ b/mealie/db/models/settings.py @@ -9,6 +9,7 @@ class SiteSettings(SqlAlchemyBase, BaseMixins): __tablename__ = "site_settings" id = sa.Column(sa.Integer, primary_key=True) language = sa.Column(sa.String) + first_day_of_week = sa.Column(sa.Integer) categories = orm.relationship( "Category", secondary=site_settings2categories, @@ -21,12 +22,14 @@ class SiteSettings(SqlAlchemyBase, BaseMixins): self, session: Session = None, language="en", + first_day_of_week: int = 0, categories: list = [], show_recent=True, cards_per_section: int = 9, ) -> None: session.commit() self.language = language + self.first_day_of_week = first_day_of_week self.cards_per_section = cards_per_section self.show_recent = show_recent self.categories = [Category.get_ref(session=session, slug=cat.get("slug")) for cat in categories] diff --git a/mealie/schema/settings.py b/mealie/schema/settings.py index 9f147d16a..b275cf60c 100644 --- a/mealie/schema/settings.py +++ b/mealie/schema/settings.py @@ -8,6 +8,7 @@ from slugify import slugify class SiteSettings(CamelModel): language: str = "en" + first_day_of_week: int = 0 show_recent: bool = True cards_per_section: int = 9 categories: Optional[list[CategoryBase]] = [] @@ -18,6 +19,7 @@ class SiteSettings(CamelModel): schema_extra = { "example": { "language": "en", + "firstDayOfWeek": 0, "showRecent": True, "categories": [ {"id": 1, "name": "thanksgiving", "slug": "thanksgiving"},