From 1184ea8cf8b65fbeac0b222b5d4582fc63166753 Mon Sep 17 00:00:00 2001 From: Kevin McConnell Date: Mon, 27 Jan 2025 15:36:29 +0000 Subject: [PATCH] Smoosh empty days together --- app/controllers/events_controller.rb | 14 +++++++++++--- app/helpers/events_helper.rb | 5 ++++- app/views/events/_day.html.erb | 27 +++++++++++++++------------ app/views/events/_empty_days.html.erb | 15 +++++++++++++++ 4 files changed, 45 insertions(+), 16 deletions(-) create mode 100644 app/views/events/_empty_days.html.erb diff --git a/app/controllers/events_controller.rb b/app/controllers/events_controller.rb index 717948ce1..3288fd662 100644 --- a/app/controllers/events_controller.rb +++ b/app/controllers/events_controller.rb @@ -3,7 +3,7 @@ class EventsController < ApplicationController def index @events = unique_events_by_hour_and_column - @next_day = @activity_day.yesterday.strftime("%Y-%m-%d") + @next_day = latest_event_before_today&.created_at end private @@ -12,11 +12,19 @@ class EventsController < ApplicationController end def events_by_hour_and_column - user_events.group_by { |event| [ event.created_at.hour, helpers.event_column(event) ] } + todays_events.group_by { |event| [ event.created_at.hour, helpers.event_column(event) ] } + end + + def todays_events + user_events.where(created_at: @activity_day.all_day) + end + + def latest_event_before_today + user_events.where(created_at: ...@activity_day.beginning_of_day).chronologically.last end def user_events - Event.where(bubble: user_bubbles).where(created_at: @activity_day.all_day) + Event.where(bubble: user_bubbles) end def user_bubbles diff --git a/app/helpers/events_helper.rb b/app/helpers/events_helper.rb index 6a191b795..df3b36965 100644 --- a/app/helpers/events_helper.rb +++ b/app/helpers/events_helper.rb @@ -29,7 +29,10 @@ module EventsHelper end def event_next_page_link(next_day) - tag.div id: "next_page", data: { controller: "fetch-on-visible", fetch_on_visible_url_value: events_path(day: next_day) } + if next_day + tag.div id: "next_page", + data: { controller: "fetch-on-visible", fetch_on_visible_url_value: events_path(day: next_day.strftime("%Y-%m-%d")) } + end end def render_event_grid_cells(day, columns: 4, rows: 24) diff --git a/app/views/events/_day.html.erb b/app/views/events/_day.html.erb index 97e165062..9bbfb115b 100644 --- a/app/views/events/_day.html.erb +++ b/app/views/events/_day.html.erb @@ -1,18 +1,21 @@
-

<%= event_day_title(activity_day) %>

+ <% if events.any? %> +

<%= event_day_title(activity_day) %>

-
- <%= render_column_headers %> - <%= render_event_grid_cells(activity_day) %> - <%= render_time_labels(activity_day) %> +
+ <%= render_column_headers %> + <%= render_event_grid_cells(activity_day) %> + <%= render_time_labels(activity_day) %> - <% events.each do | hour_column, cluster| %> - <%= event_cluster_tag(*hour_column) do %> - <%= render cluster %> + <% events.each do | hour_column, cluster| %> + <%= event_cluster_tag(*hour_column) do %> + <%= render cluster %> + <% end %> <% end %> - <% end %> +
-
- -

No activity for this day.

+ <%= render "events/empty_days", earliest: next_day&.tomorrow&.beginning_of_day, latest: activity_day.yesterday.beginning_of_day %> + <% else %> + <%= render "events/empty_days", earliest: next_day&.tomorrow&.beginning_of_day, latest: activity_day.beginning_of_day %> + <% end %>
diff --git a/app/views/events/_empty_days.html.erb b/app/views/events/_empty_days.html.erb new file mode 100644 index 000000000..9a18741e0 --- /dev/null +++ b/app/views/events/_empty_days.html.erb @@ -0,0 +1,15 @@ +<% if earliest.present? %> + <% if earliest == latest %> +
+

<%= event_day_title(earliest) %>

+

No activity

+
+ <% elsif earliest < latest %> +
+

<%= event_day_title(earliest) %> - <%= event_day_title(latest) %>

+

No activity for <%= (latest - earliest).seconds.in_days.round + 1 %> days

+
+ <% end %> +<% else %> +

No more activity.

+<% end %>