show next 5 months if few moods recorded

This commit is contained in:
Christophe Robillard 2026-02-18 10:52:54 +01:00
parent 86f8b877d8
commit 56fd287b0f

View file

@ -6,16 +6,21 @@ class MoodCalendarService
.pluck(:mode, :recorded_at) .pluck(:mode, :recorded_at)
.map { |mode, recorded_at| { mode: mode, recorded_at: recorded_at } } .map { |mode, recorded_at| { mode: mode, recorded_at: recorded_at } }
return [] if data.empty?
# Définir start_date par défaut comme le recorded_at du premier mood if data.empty?
start_date ||= data.first[:recorded_at].to_date start_date = Date.current
else
# Convertir en Date si ce sont des DateTime ou Time start_date ||= data.first[:recorded_at].to_date
start_date = start_date.to_date
end_date = end_date.to_date
end end
if end_date < (start_date + 5.months)
end_date = start_date + 5.months
end
# Convertir en Date si ce sont des DateTime ou Time
start_date = start_date.to_date
end_date = end_date&.to_date
# Grouper par jour et garder le plus récent pour chaque jour # Grouper par jour et garder le plus récent pour chaque jour
data_by_date = data.group_by { |d| d[:recorded_at].to_date } data_by_date = data.group_by { |d| d[:recorded_at].to_date }
.transform_values { |entries| entries.max_by { |e| e[:recorded_at] } } .transform_values { |entries| entries.max_by { |e| e[:recorded_at] } }