use and add day param in url
This commit is contained in:
parent
0f5b880138
commit
df9b266c84
4 changed files with 45 additions and 38 deletions
|
|
@ -11,7 +11,7 @@ class DayLogsController < ApplicationController
|
||||||
|
|
||||||
if @day_log.save
|
if @day_log.save
|
||||||
handle_mood(@day_log.day, params[:day_log][:mode_id])
|
handle_mood(@day_log.day, params[:day_log][:mode_id])
|
||||||
redirect_to root_path
|
redirect_to dashboard_path(day: @day_log.day)
|
||||||
else
|
else
|
||||||
render :new, status: :unprocessable_content
|
render :new, status: :unprocessable_content
|
||||||
end
|
end
|
||||||
|
|
@ -20,7 +20,7 @@ class DayLogsController < ApplicationController
|
||||||
def update
|
def update
|
||||||
if @day_log.update(day_log_params)
|
if @day_log.update(day_log_params)
|
||||||
handle_mood(@day_log.day, params[:day_log][:mode_id])
|
handle_mood(@day_log.day, params[:day_log][:mode_id])
|
||||||
redirect_to dashboard_path
|
redirect_to dashboard_path(day: @day_log.day)
|
||||||
else
|
else
|
||||||
render :edit, status: :unprocessable_content
|
render :edit, status: :unprocessable_content
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -3,17 +3,37 @@ import { Controller } from '@hotwired/stimulus'
|
||||||
export default class extends Controller {
|
export default class extends Controller {
|
||||||
static targets = [ "image", "modeDay", "dayLogLink", "dayLogInfo" ];
|
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) {
|
updateDayInfo(event) {
|
||||||
const image = this.imageTarget;
|
const image = this.imageTarget;
|
||||||
const modeDay = this.modeDayTarget;
|
const modeDay = this.modeDayTarget;
|
||||||
const day = event.target.dataset.day;
|
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;
|
image.src = event.target.dataset.image;
|
||||||
modeDay.textContent = modeDayContent;
|
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;
|
event.target.className = "selected-day " + event.target.dataset.mode;
|
||||||
|
|
||||||
this.dayLogInfoTarget.textContent = event.target.dataset.info || '';
|
history.pushState({}, '', `?day=${day}`);
|
||||||
this.dayLogLinkTarget.href = `/day_logs/edit?day=${day}`
|
|
||||||
|
|
||||||
if (this.lastTarget) {
|
if (this.lastTarget) {
|
||||||
this.lastTarget.className = "day " + this.lastTarget.dataset.mode;
|
this.lastTarget.className = "day " + this.lastTarget.dataset.mode;
|
||||||
|
|
@ -21,22 +41,4 @@ export default class extends Controller {
|
||||||
|
|
||||||
this.lastTarget = event.target;
|
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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,20 +1,25 @@
|
||||||
= form_with model: day_log do |f|
|
= form_with model: day_log do |f|
|
||||||
- @day_log.errors.full_messages.each do |msg|
|
- @day_log.errors.full_messages.each do |msg|
|
||||||
%p= msg
|
.notification.is-danger= msg
|
||||||
|
|
||||||
.field
|
.field
|
||||||
= f.label :day
|
= f.label :info, "Journal", class: "label"
|
||||||
= f.date_field :day
|
.control
|
||||||
|
= f.text_area :info, class: "textarea", rows: 5
|
||||||
|
|
||||||
.field
|
.field
|
||||||
= f.label :info
|
= label_tag :mode_id, "Mode", class: "label"
|
||||||
= f.text_area :info
|
.control
|
||||||
|
.select.is-fullwidth
|
||||||
.field
|
|
||||||
= label_tag :mode_id, "Mode"
|
|
||||||
= select_tag "day_log[mode_id]",
|
= select_tag "day_log[mode_id]",
|
||||||
options_from_collection_for_select(Current.user.modes, :id, :label, @mood&.mode_id),
|
options_from_collection_for_select(Current.user.modes, :id, :label, @mood&.mode_id),
|
||||||
include_blank: true
|
include_blank: true
|
||||||
|
|
||||||
= f.submit
|
.field.is-hidden
|
||||||
|
= f.date_field :day
|
||||||
|
|
||||||
|
.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"
|
||||||
|
|
|
||||||
|
|
@ -43,7 +43,7 @@
|
||||||
<% mode = mode_for(mood, @user) %>
|
<% mode = mode_for(mood, @user) %>
|
||||||
<div data-image="<%= mode.image_url %>"
|
<div data-image="<%= mode.image_url %>"
|
||||||
data-mode="<%= mode.label %>"
|
data-mode="<%= mode.label %>"
|
||||||
data-day="<%= l mood[:recorded_at].to_date %>"
|
data-day="<%= mood[:recorded_at].to_date.iso8601 %>"
|
||||||
data-info="<%= mood[:day_log]&.info %>"
|
data-info="<%= mood[:day_log]&.info %>"
|
||||||
data-action="click->mood#updateDayInfo"
|
data-action="click->mood#updateDayInfo"
|
||||||
title="<%= l(mood[:recorded_at].to_date) %> : <%= mode.label %>"
|
title="<%= l(mood[:recorded_at].to_date) %> : <%= mode.label %>"
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue