[feat]Splashpage will display happening next event if no event is happening now
This commit is contained in:
parent
25bc05b20c
commit
6e045061e7
7 changed files with 48 additions and 8 deletions
|
|
@ -61,11 +61,7 @@ class ConferencesController < ApplicationController
|
||||||
@booths = @conference.confirmed_booths.order('title')
|
@booths = @conference.confirmed_booths.order('title')
|
||||||
end
|
end
|
||||||
if splashpage.include_happening_now
|
if splashpage.include_happening_now
|
||||||
events_schedules_list = get_happening_now_events_schedules(@conference)
|
load_happening_now
|
||||||
@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
|
||||||
end
|
end
|
||||||
if splashpage.include_registrations || splashpage.include_tickets
|
if splashpage.include_registrations || splashpage.include_tickets
|
||||||
|
|
@ -151,4 +147,17 @@ class ConferencesController < ApplicationController
|
||||||
def current_user_has_unpaid_tickets?
|
def current_user_has_unpaid_tickets?
|
||||||
current_user && current_user_tickets.unpaid.any?
|
current_user && current_user_tickets.unpaid.any?
|
||||||
end
|
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
|
end
|
||||||
|
|
|
||||||
|
|
@ -85,4 +85,20 @@ module ConferenceHelper
|
||||||
events_schedules ||= []
|
events_schedules ||= []
|
||||||
events_schedules
|
events_schedules
|
||||||
end
|
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
|
end
|
||||||
|
|
|
||||||
|
|
@ -70,6 +70,14 @@ class EventSchedule < ApplicationRecord
|
||||||
event_time_range.overlaps?(now_range)
|
event_time_range.overlaps?(now_range)
|
||||||
end
|
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)
|
def self.withdrawn_or_canceled_event_schedules(schedule_ids)
|
||||||
EventSchedule
|
EventSchedule
|
||||||
.unscoped
|
.unscoped
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,8 @@
|
||||||
= render 'happening_now', conference: conference,
|
= render 'happening_now', conference: conference,
|
||||||
events_schedules: events_schedules, pagy: pagy,
|
events_schedules: events_schedules, pagy: pagy,
|
||||||
events_schedules_length: events_schedules_length,
|
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
|
= content_for :about do
|
||||||
#about
|
#about
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,11 @@
|
||||||
- if conference.splashpage.include_program && conference.splashpage.include_happening_now
|
- if conference.splashpage.include_program && conference.splashpage.include_happening_now
|
||||||
- if events_schedules.any?
|
- if events_schedules.any?
|
||||||
.row
|
.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|
|
- events_schedules.each do |event_schedule|
|
||||||
= render 'schedules/event', conference: conference, event_schedule: event_schedule, event: event_schedule.event, is_brief: true
|
= render 'schedules/event', conference: conference, event_schedule: event_schedule, event: event_schedule.event, is_brief: true
|
||||||
- if events_schedules_length > events_schedules_limit
|
- if events_schedules_length > events_schedules_limit
|
||||||
|
|
|
||||||
|
|
@ -49,7 +49,8 @@
|
||||||
= render 'about_and_happening_now', conference: @conference,
|
= render 'about_and_happening_now', conference: @conference,
|
||||||
events_schedules: @events_schedules, pagy: @pagy,
|
events_schedules: @events_schedules, pagy: @pagy,
|
||||||
events_schedules_length: @events_schedules_length,
|
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
|
-# calls for content, or program
|
||||||
- if @conference.splashpage.include_cfp
|
- if @conference.splashpage.include_cfp
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
require 'webmock'
|
require 'webmock'
|
||||||
|
|
||||||
namespace :data do
|
namespace :data do
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue