From b3c88e09f3ea34c7b78c5d2b228b59256f3e3823 Mon Sep 17 00:00:00 2001 From: Roger Saner Date: Tue, 21 Apr 2026 19:02:41 +0200 Subject: [PATCH] Feature: remember value of chart period selector (#1528) * feat: remember chart period by last selection not user preferences * feat: schema update * fix: revert unnecessary parts of schema.rb update * fix: check period key is valid before setting it * revert: no database changes and keep the UI setting * refactor: don't store the default period in the session, just use the user * fix: migration The migration uses the User model directly, which loads all current enums including ui_layout which doesn't exist yet at that point in migration history. Fix it with raw SQL. * revert: not relevant to this PR --- app/controllers/concerns/periodable.rb | 7 ++++++- app/models/period.rb | 4 ++++ app/views/settings/preferences/show.html.erb | 4 ---- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/app/controllers/concerns/periodable.rb b/app/controllers/concerns/periodable.rb index 88be0f05c..bac475253 100644 --- a/app/controllers/concerns/periodable.rb +++ b/app/controllers/concerns/periodable.rb @@ -7,7 +7,12 @@ module Periodable private def set_period - period_key = params[:period] || Current.user&.default_period + if params[:period].present? + period_key = params[:period] + Current.user&.update!(default_period: period_key) if Period.valid_key?(period_key) + else + period_key = Current.user&.default_period + end @period = if period_key == "current_month" Period.current_month_for(Current.family) diff --git a/app/models/period.rb b/app/models/period.rb index fd1de6d1c..2f4e8afdf 100644 --- a/app/models/period.rb +++ b/app/models/period.rb @@ -95,6 +95,10 @@ class Period } class << self + def valid_key?(key) + PERIODS.key?(key) + end + def from_key(key) unless PERIODS.key?(key) raise InvalidKeyError, "Invalid period key: #{key}" diff --git a/app/views/settings/preferences/show.html.erb b/app/views/settings/preferences/show.html.erb index 8dd2c5053..2e8fa01b7 100644 --- a/app/views/settings/preferences/show.html.erb +++ b/app/views/settings/preferences/show.html.erb @@ -16,10 +16,6 @@ Family::DATE_FORMATS, { label: t(".date_format") }, { data: { auto_submit_form_target: "auto" } } %> - <%= form.select :default_period, - Period.all.map { |period| [ period.label, period.key ] }, - { label: t(".default_period") }, - { data: { auto_submit_form_target: "auto" } } %> <%= form.select :default_account_order, AccountOrder.all.map { |order| [ order.label, order.key ] }, { label: t(".default_account_order") },