From 69043e1549dbae8631c62e76a5318e15e7042638 Mon Sep 17 00:00:00 2001 From: Ana Date: Fri, 10 Jun 2016 22:39:06 +0200 Subject: [PATCH] All events grouped by date and time The events are ordered by date and time in the all events section of the schedule. The event schdule definition in program has been changed to order the events. --- app/assets/stylesheets/osem-schedule.css.scss | 32 +++++++++++++ app/controllers/conference_controller.rb | 2 + app/models/event.rb | 2 +- app/models/program.rb | 2 +- app/views/conference/_all_events.html.erb | 46 +++++++++++-------- app/views/conference/_event.html.haml | 33 +++++++++++++ 6 files changed, 97 insertions(+), 20 deletions(-) create mode 100644 app/views/conference/_event.html.haml diff --git a/app/assets/stylesheets/osem-schedule.css.scss b/app/assets/stylesheets/osem-schedule.css.scss index cc48da5d..61959a67 100644 --- a/app/assets/stylesheets/osem-schedule.css.scss +++ b/app/assets/stylesheets/osem-schedule.css.scss @@ -149,6 +149,38 @@ td.no-padding{ padding:0px !important; } +.all-events-title{ + margin-top: 40px; + border-bottom: 1px solid #848484; +} + +.date-title{ + font-size: 23px; + font-weight: bold; + padding-bottom: 2px; + display:inline-block; +} + +.start-time{ + font-size: 16px; + padding-left: 30px; + margin-top: 32px; +} + +.new-time-event{ + margin-top: 20px; +} + + +.all-speaker-pic{ + padding: 20px 10px 20px 10px; +} + +.track{ + padding: 0px 5px 0px 5px; + display: inline-block; + } + /* Small devices (tablets, 768px and up) */ @media (min-width: 768px) { .room, .event-title{ diff --git a/app/controllers/conference_controller.rb b/app/controllers/conference_controller.rb index da98b944..b2f1670f 100644 --- a/app/controllers/conference_controller.rb +++ b/app/controllers/conference_controller.rb @@ -21,6 +21,8 @@ class ConferenceController < ApplicationController conf_end = 20 @conf_period = conf_end - @conf_start + @scheduled_events = @conference.program.events.scheduled + if @dates == Date.current @today = Date.current.strftime('%Y-%m-%d') else diff --git a/app/models/event.rb b/app/models/event.rb index 157446ac..1f6c7dfb 100644 --- a/app/models/event.rb +++ b/app/models/event.rb @@ -73,7 +73,7 @@ class Event < ActiveRecord::Base # ====Returns # * +true+ or +false+ def scheduled? - room && start_time ? true : false + room.present? && start_time.present? end def registration_possible? diff --git a/app/models/program.rb b/app/models/program.rb index eba1d4b0..246084a4 100644 --- a/app/models/program.rb +++ b/app/models/program.rb @@ -27,7 +27,7 @@ class Program < ActiveRecord::Base end def scheduled - where.not(start_time: nil).where.not(room: nil) + where.not(start_time: nil).where.not(room: nil).order(start_time: :asc) end def highlights diff --git a/app/views/conference/_all_events.html.erb b/app/views/conference/_all_events.html.erb index f7fd7fc0..deb7c7a7 100644 --- a/app/views/conference/_all_events.html.erb +++ b/app/views/conference/_all_events.html.erb @@ -1,19 +1,29 @@

Program for <%= @conference.title %>

-<% @conference.program.events.confirmed.each do |event| %> -
-

- <%= link_to event.title, conference_program_proposal_path(@conference.short_title, event.id) %> -
- - <%= event.subtitle %> - -

-

- presented by <%= event.speaker_names %> -

-

- <%= truncate(event.abstract, :length => 400) -%> - <%= link_to 'more', conference_program_proposal_path(@conference.short_title, @conference.program.id, event.id) if event.abstract.length > 400 %> -

-
-<% end %> +
+ <% date = nil %> + <% time = nil %> + <% @scheduled_events.each do |event| %> + <% unless event.start_time.strftime('%Y-%m-%d').eql?(date) %> +
+ '> + <%= date = event.start_time.strftime('%Y-%m-%d') %> + + + + +
+ <% end %> + <% unless event.start_time.strftime('%H:%M').eql?(time) %> +
+ <%= time = event.start_time.strftime('%H:%M') %> +
+
+ <%= render partial: 'event', locals: {event: event} %> +
+ <% else %> +
+ <%= render partial: 'event', locals: {event: event} %> +
+ <% end %> + <% end %> +
diff --git a/app/views/conference/_event.html.haml b/app/views/conference/_event.html.haml new file mode 100644 index 00000000..c556a9f1 --- /dev/null +++ b/app/views/conference/_event.html.haml @@ -0,0 +1,33 @@ +%a.unstyled-link{href: url_for(conference_program_proposal_path(@conference.short_title, event.id))} + .panel.panel-default + .panel-body + - if speaker = event.speakers.first + = image_tag speaker.gravatar_url, :class => "img-circle pull-right all-speaker-pic", | + :alt => speaker.name, | + :title => speaker.name | + %span.h3 + = event.title + %br + %small + = event.subtitle + %h4 + presented by #{event.speaker_names} + %p + = truncate(event.abstract, :length => 400) + = link_to 'more', conference_program_proposal_path(@conference.short_title, event.id) if event.abstract.length > 400 + - if event.scheduled? + %span.track + %span.fa.fa-clock-o + %span.label{ style: "background-color: grey" } + = event.start_time.strftime('%H:%M') + \- + = event.end_time.strftime('%H:%M') + %span.track + %span.fa.fa-map-marker + %span.label{ style: "background-color: grey" } + = event.room.name + - if event.track + %span.track + %span.fa.fa-road + %span.label{ style: "background-color: #{event.track.color}" } + = event.track.name