[feat]Splashpage will display happening next event if no event is happening now
This commit is contained in:
parent
19af4e4f12
commit
2f8cee3c4f
7 changed files with 48 additions and 8 deletions
|
|
@ -61,11 +61,7 @@ class ConferencesController < ApplicationController
|
|||
@booths = @conference.confirmed_booths.order('title')
|
||||
end
|
||||
if splashpage.include_happening_now
|
||||
events_schedules_list = get_happening_now_events_schedules(@conference)
|
||||
@events_schedules_limit = EVENTS_PER_PAGE
|
||||
@events_schedules_length = events_schedules_list.length
|
||||
@pagy, @events_schedules = pagy_array(events_schedules_list, items: @events_schedules_limit, link_extra: 'data-remote="true"')
|
||||
@happening_now_url = happening_now_conference_schedule_path(conference_id: @conference.short_title, format: :json)
|
||||
load_happening_now
|
||||
end
|
||||
end
|
||||
if splashpage.include_registrations || splashpage.include_tickets
|
||||
|
|
@ -151,4 +147,17 @@ class ConferencesController < ApplicationController
|
|||
def current_user_has_unpaid_tickets?
|
||||
current_user && current_user_tickets.unpaid.any?
|
||||
end
|
||||
|
||||
def load_happening_now
|
||||
events_schedules_list = get_happening_now_events_schedules(@conference)
|
||||
@is_happening_next = false
|
||||
if events_schedules_list.empty?
|
||||
events_schedules_list = get_happening_next_events_schedules(@conference)
|
||||
@is_happening_next = true
|
||||
end
|
||||
@events_schedules_limit = EVENTS_PER_PAGE
|
||||
@events_schedules_length = events_schedules_list.length
|
||||
@pagy, @events_schedules = pagy_array(events_schedules_list, items: @events_schedules_limit, link_extra: 'data-remote="true"')
|
||||
@happening_now_url = happening_now_conference_schedule_path(conference_id: @conference.short_title, format: :json)
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -85,4 +85,20 @@ module ConferenceHelper
|
|||
events_schedules ||= []
|
||||
events_schedules
|
||||
end
|
||||
|
||||
def get_happening_next_events_schedules(conference)
|
||||
events_schedules = conference.program.selected_event_schedules(
|
||||
includes: [:room, { event: %i[track event_type speakers submitter] }]
|
||||
).select(&:happening_next?)
|
||||
|
||||
if events_schedules.empty?
|
||||
return []
|
||||
end
|
||||
|
||||
# events_schedules have been sorted by start_time in selected_event_schedules
|
||||
happening_next_time = events_schedules[0].start_time
|
||||
events_schedules = events_schedules.select { |s| s.start_time == happening_next_time }
|
||||
|
||||
events_schedules
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -70,6 +70,14 @@ class EventSchedule < ApplicationRecord
|
|||
event_time_range.overlaps?(now_range)
|
||||
end
|
||||
|
||||
def happening_next?
|
||||
# TODO: Save start_time with local timezone info when making an event schedule
|
||||
in_tz_start = start_time.in_time_zone(timezone)
|
||||
in_tz_start -= in_tz_start.utc_offset
|
||||
|
||||
in_tz_start >= Time.now
|
||||
end
|
||||
|
||||
def self.withdrawn_or_canceled_event_schedules(schedule_ids)
|
||||
EventSchedule
|
||||
.unscoped
|
||||
|
|
|
|||
|
|
@ -3,7 +3,8 @@
|
|||
= render 'happening_now', conference: conference,
|
||||
events_schedules: events_schedules, pagy: pagy,
|
||||
events_schedules_length: events_schedules_length,
|
||||
events_schedules_limit: events_schedules_limit
|
||||
events_schedules_limit: events_schedules_limit,
|
||||
is_happening_next: is_happening_next
|
||||
|
||||
= content_for :about do
|
||||
#about
|
||||
|
|
|
|||
|
|
@ -1,7 +1,11 @@
|
|||
- if conference.splashpage.include_program && conference.splashpage.include_happening_now
|
||||
- if events_schedules.any?
|
||||
.row
|
||||
%h2.text-center{ style: 'margin-bottom:30px' } Happening Now
|
||||
%h2.text-center{ style: 'margin-bottom:30px' }
|
||||
- if is_happening_next
|
||||
Happening Next
|
||||
- else
|
||||
Happening Now
|
||||
- events_schedules.each do |event_schedule|
|
||||
= render 'schedules/event', conference: conference, event_schedule: event_schedule, event: event_schedule.event, is_brief: true
|
||||
- if events_schedules_length > events_schedules_limit
|
||||
|
|
|
|||
|
|
@ -49,7 +49,8 @@
|
|||
= render 'about_and_happening_now', conference: @conference,
|
||||
events_schedules: @events_schedules, pagy: @pagy,
|
||||
events_schedules_length: @events_schedules_length,
|
||||
events_schedules_limit: @events_schedules_limit
|
||||
events_schedules_limit: @events_schedules_limit,
|
||||
is_happening_next: @is_happening_next
|
||||
|
||||
-# calls for content, or program
|
||||
- if @conference.splashpage.include_cfp
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
require 'webmock'
|
||||
|
||||
namespace :data do
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue