From febd3451ad99a07fbabec347e028a461610f38e4 Mon Sep 17 00:00:00 2001 From: AnithaPal Date: Fri, 15 Jul 2016 16:28:03 -0400 Subject: [PATCH] is_current method added to check an event is current and function addded to refresh conference_wide_information --- app/assets/javascripts/application.js | 1 + .../javascripts/refresh_current_events.js | 10 ++++++++ .../admin/conferences_controller.rb | 7 ++++++ app/models/event.rb | 17 +++++++++++++ .../conference/_current_events.html.haml | 9 +++++++ .../conference_wide_screen.html.haml | 6 +++-- .../conference/conference_wide_screen.js.haml | 1 + spec/models/event_spec.rb | 25 +++++++++++++++++++ 8 files changed, 74 insertions(+), 2 deletions(-) create mode 100644 app/assets/javascripts/refresh_current_events.js create mode 100644 app/views/admin/conference/_current_events.html.haml create mode 100644 app/views/admin/conference/conference_wide_screen.js.haml diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index 8853d6e6..d29bc4eb 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -45,6 +45,7 @@ //= require osem-commercials //= require unobtrusive_flash //= require unobtrusive_flash_bootstrap +//= require refresh_current_events $(document).ready(function() { $('a[disabled=disabled]').click(function(event){ diff --git a/app/assets/javascripts/refresh_current_events.js b/app/assets/javascripts/refresh_current_events.js new file mode 100644 index 00000000..eee62bec --- /dev/null +++ b/app/assets/javascripts/refresh_current_events.js @@ -0,0 +1,10 @@ +$(document).ready(function() { + // will call refreshCurrentEvents every 15 minutes + setInterval(refreshCurrentEvents, 900000) + }); + +function refreshCurrentEvents(){ + $.ajax({ + url: "conference_wide_screen.js" + }); +}; diff --git a/app/controllers/admin/conferences_controller.rb b/app/controllers/admin/conferences_controller.rb index 094d1f0b..2957a780 100644 --- a/app/controllers/admin/conferences_controller.rb +++ b/app/controllers/admin/conferences_controller.rb @@ -177,6 +177,13 @@ module Admin #To display sponsors in the conference wide information page @conference = Conference.find_by(short_title: params[:id]) @sponsors = @conference.sponsors + @program = @conference.program + @current_events = @conference.program.events.confirmed.select{ |event| event.is_current?} + + respond_to do |format| + format.html + format.js {render :action=>"conference_wide_screen.js.haml"} + end end private diff --git a/app/models/event.rb b/app/models/event.rb index d2446847..db8338d2 100644 --- a/app/models/event.rb +++ b/app/models/event.rb @@ -41,6 +41,8 @@ class Event < ActiveRecord::Base scope :canceled, -> { where(state: 'canceled') } scope :withdrawn, -> { where(state: 'withdrawn') } scope :highlighted, -> { where(is_highlight: true) } + + state_machine initial: :new do state :new @@ -247,6 +249,13 @@ class Event < ActiveRecord::Base event_schedules.find_by(schedule_id: program.selected_schedule_id).try(:start_time) end + ## + #Compares event start_time, end_with with current time to predict current events + # + def is_current? + Time.current >= self.start_time && Time.current <= end_time + end + private ## @@ -294,4 +303,12 @@ class Event < ActiveRecord::Base def conference_id program.conference_id end + + ## + #Compares event start_time, end_with with current time to predict current events + # + def is_current? + Time.current >= self.start_time && Time.current <= end_time + end + end diff --git a/app/views/admin/conference/_current_events.html.haml b/app/views/admin/conference/_current_events.html.haml new file mode 100644 index 00000000..233365ba --- /dev/null +++ b/app/views/admin/conference/_current_events.html.haml @@ -0,0 +1,9 @@ +.text-center + %h2 Upcoming Events + - @current_events.each do |event| + %div + %h3 + = link_to event.title, conference_program_proposal_path(@conference.short_title, event.id) + %h4 + presented by + = event.speaker_names diff --git a/app/views/admin/conference/conference_wide_screen.html.haml b/app/views/admin/conference/conference_wide_screen.html.haml index 9ced72cb..62d2b7e2 100644 --- a/app/views/admin/conference/conference_wide_screen.html.haml +++ b/app/views/admin/conference/conference_wide_screen.html.haml @@ -1,8 +1,10 @@ .container - if @conference.present? .row - .col-md-12.text-center - %h2 Upcoming Events + .col-md-12 + - if @program.present? + %section#program#current-events + = render 'current_events' .row .col-md-12.text-center %h2 Tweets About Conference diff --git a/app/views/admin/conference/conference_wide_screen.js.haml b/app/views/admin/conference/conference_wide_screen.js.haml new file mode 100644 index 00000000..998342dc --- /dev/null +++ b/app/views/admin/conference/conference_wide_screen.js.haml @@ -0,0 +1 @@ +$('#current-events').html("#{escape_javascript(render 'current_events', data: @current_events)}"); diff --git a/spec/models/event_spec.rb b/spec/models/event_spec.rb index f9c46559..709a3bc1 100644 --- a/spec/models/event_spec.rb +++ b/spec/models/event_spec.rb @@ -327,4 +327,29 @@ describe Event do expect(other_event.week).to eq 48 end end + + + describe 'is_current?' do + let(:past_event) { create(:event, program: conference.program) } + let(:future_event) { create(:event, program: conference.program) } + + before do + event.update_attributes(start_time: "#{Time.current}") + past_event.update_attributes(start_time: "#{Time.current - 2.days}") + future_event.update_attributes(start_time: "#{Time.current + 2.days}") + end + + it 'returns false for a completed event' do + expect(past_event.is_current?).to be_falsey + end + + it 'returns false for a future event' do + expect(future_event.is_current?).to be_falsey + end + + it 'returns true for a current event' do + expect(event.is_current?).to be_truthy + end + end + end