From df9b266c84281a782b202a6c07d747d47c9a79ba Mon Sep 17 00:00:00 2001 From: Christophe Robillard Date: Sun, 22 Mar 2026 22:14:40 +0100 Subject: [PATCH] use and add day param in url --- app/controllers/day_logs_controller.rb | 4 +- app/javascript/controllers/mood_controller.js | 44 ++++++++++--------- app/views/day_logs/_form.html.haml | 33 ++++++++------ app/views/moods/index.html.erb | 2 +- 4 files changed, 45 insertions(+), 38 deletions(-) diff --git a/app/controllers/day_logs_controller.rb b/app/controllers/day_logs_controller.rb index 0bf495d..84897e0 100644 --- a/app/controllers/day_logs_controller.rb +++ b/app/controllers/day_logs_controller.rb @@ -11,7 +11,7 @@ class DayLogsController < ApplicationController if @day_log.save handle_mood(@day_log.day, params[:day_log][:mode_id]) - redirect_to root_path + redirect_to dashboard_path(day: @day_log.day) else render :new, status: :unprocessable_content end @@ -20,7 +20,7 @@ class DayLogsController < ApplicationController def update if @day_log.update(day_log_params) handle_mood(@day_log.day, params[:day_log][:mode_id]) - redirect_to dashboard_path + redirect_to dashboard_path(day: @day_log.day) else render :edit, status: :unprocessable_content end diff --git a/app/javascript/controllers/mood_controller.js b/app/javascript/controllers/mood_controller.js index aa474ce..daf6820 100644 --- a/app/javascript/controllers/mood_controller.js +++ b/app/javascript/controllers/mood_controller.js @@ -3,17 +3,37 @@ import { Controller } from '@hotwired/stimulus' export default class extends Controller { static targets = [ "image", "modeDay", "dayLogLink", "dayLogInfo" ]; + connect() { + this.lastTarget = null; + + const params = new URLSearchParams(window.location.search); + const selectedDay = params.get("day"); + + if (selectedDay) { + const dayEl = document.querySelector(`[data-day="${selectedDay}"]`); + if (dayEl) { + dayEl.click(); + dayEl.scrollIntoView({ block: "center" }); + } + } else { + const logs = document.querySelector(".logs"); + if (logs) logs.scrollTop = logs.scrollHeight; + } + } + updateDayInfo(event) { const image = this.imageTarget; const modeDay = this.modeDayTarget; const day = event.target.dataset.day; - const modeDayContent = day + ' : ' + event.target.dataset.mode; + const formattedDay = new Date(day).toLocaleDateString('fr-FR'); + const modeDayContent = formattedDay + ' : ' + event.target.dataset.mode; image.src = event.target.dataset.image; modeDay.textContent = modeDayContent; + this.dayLogLinkTarget.href = `/day_logs/edit?day=${day}`; + this.dayLogInfoTarget.textContent = event.target.dataset.info || ''; event.target.className = "selected-day " + event.target.dataset.mode; - this.dayLogInfoTarget.textContent = event.target.dataset.info || ''; - this.dayLogLinkTarget.href = `/day_logs/edit?day=${day}` + history.pushState({}, '', `?day=${day}`); if (this.lastTarget) { this.lastTarget.className = "day " + this.lastTarget.dataset.mode; @@ -21,22 +41,4 @@ export default class extends Controller { this.lastTarget = event.target; } - - connect() { - this.lastTarget = null; - const logs = document.querySelector(".logs"); - if (!logs) return; - - document.addEventListener("turbo:before-visit", () => { - sessionStorage.setItem("logsScrollTop", logs.scrollTop); - }); - - const savedScroll = sessionStorage.getItem("logsScrollTop"); - if (savedScroll) { - logs.scrollTop = parseInt(savedScroll); - sessionStorage.removeItem("logsScrollTop"); - } else { - logs.scrollTop = logs.scrollHeight; - } - } } diff --git a/app/views/day_logs/_form.html.haml b/app/views/day_logs/_form.html.haml index 9934fbc..784c537 100644 --- a/app/views/day_logs/_form.html.haml +++ b/app/views/day_logs/_form.html.haml @@ -1,20 +1,25 @@ = form_with model: day_log do |f| - @day_log.errors.full_messages.each do |msg| - %p= msg + .notification.is-danger= msg .field - = f.label :day + = f.label :info, "Journal", class: "label" + .control + = f.text_area :info, class: "textarea", rows: 5 + + .field + = label_tag :mode_id, "Mode", class: "label" + .control + .select.is-fullwidth + = select_tag "day_log[mode_id]", + options_from_collection_for_select(Current.user.modes, :id, :label, @mood&.mode_id), + include_blank: true + + .field.is-hidden = f.date_field :day - .field - = f.label :info - = f.text_area :info - - .field - = label_tag :mode_id, "Mode" - = select_tag "day_log[mode_id]", - options_from_collection_for_select(Current.user.modes, :id, :label, @mood&.mode_id), - include_blank: true - - = f.submit - + .field.is-grouped + .control + = f.submit "Enregistrer", class: "button is-primary" + .control + = link_to "Annuler", dashboard_path(day: @day_log.day), class: "button is-light" diff --git a/app/views/moods/index.html.erb b/app/views/moods/index.html.erb index 4934a1d..ab0116e 100644 --- a/app/views/moods/index.html.erb +++ b/app/views/moods/index.html.erb @@ -43,7 +43,7 @@ <% mode = mode_for(mood, @user) %>