Skip to content

Commit ec0fe62

Browse files
authored
Merge pull request #2504 from mroderick/feature/homepage-events-limit
feat(homepage): limit upcoming events to 5, preserve 3 dates
2 parents 7b264ff + 1bcf5ee commit ec0fe62

2 files changed

Lines changed: 26 additions & 1 deletion

File tree

app/controllers/dashboard_controller.rb

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ class DashboardController < ApplicationController
33
skip_before_action :accept_terms, except: %i[dashboard show]
44

55
DEFAULT_UPCOMING_EVENTS = 5
6+
MAX_WORKSHOP_QUERY = 10
67

78
helper_method :year_param
89

@@ -12,6 +13,7 @@ def show
1213
@upcoming_workshops = upcoming_events.map.each_with_object({}) do |(key, value), hash|
1314
hash[key] = EventPresenter.decorate_collection(value)
1415
end
16+
@has_more_events = total_upcoming_events_count > DEFAULT_UPCOMING_EVENTS
1517

1618
@testimonials = Testimonial.order(Arel.sql('RANDOM()')).limit(5).includes(:member)
1719
end
@@ -56,7 +58,27 @@ def top_coach_query
5658

5759
def upcoming_events
5860
workshops = Workshop.upcoming.includes(:chapter, :sponsors, :organisers)
59-
all_events(workshops).sort_by(&:date_and_time).group_by(&:date)
61+
.limit(MAX_WORKSHOP_QUERY)
62+
sorted_events = all_events(workshops).sort_by(&:date_and_time)
63+
64+
limited_events = []
65+
dates_shown = 0
66+
prev_date = nil
67+
68+
sorted_events.each do |event|
69+
dates_shown += 1 if event.date != prev_date
70+
prev_date = event.date
71+
break if dates_shown > 3 || limited_events.size >= DEFAULT_UPCOMING_EVENTS
72+
73+
limited_events << event
74+
end
75+
76+
limited_events.group_by(&:date)
77+
end
78+
79+
def total_upcoming_events_count
80+
workshops = Workshop.upcoming.includes(:chapter, :sponsors, :organisers)
81+
all_events(workshops).count
6082
end
6183

6284
def upcoming_events_for_user

app/views/dashboard/show.html.haml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,9 @@
7373
%h3.h5= date
7474
= render workshops
7575

76+
- if @has_more_events
77+
= link_to 'Explore all events →', events_path, class: 'btn btn-outline-primary mt-3'
78+
7679
.col-lg-4.pl-lg-5
7780
%h3
7881
= t('homepage.chapters.title')

0 commit comments

Comments
 (0)