Public schedule and all events adapted to the new relations and models to allow having several schedules in the admin shcedule.
59 lines
3.4 KiB
Text
59 lines
3.4 KiB
Text
- intervals = number_columns * 60 / EventType::LENGTH_STEP + 1
|
|
- width = 85 / intervals
|
|
- carousel_number = (@conf_period / number_columns.to_f).ceil
|
|
.carousel.slide{ id: "carousel-#{ date }-#{ number_columns }", |
|
|
"data-ride" => "carousel", |
|
|
"data-wrap" => "false", |
|
|
"data-interval" => "false" }
|
|
/ Wrapper for slides
|
|
.carousel-inner
|
|
- start_time = DateTime.parse("#{date} #{@conf_start}:00")
|
|
- (0..carousel_number-1).each do |number|
|
|
%div{ class: "#{ carousel_item_class(number, carousel_number, number_columns, @hour_column)}" }
|
|
%table.table.table-bordered.schedule-table#schedule
|
|
%tr
|
|
%th
|
|
- td_start_time = start_time
|
|
- (1..intervals).each do |i|
|
|
%th.date
|
|
= (td_start_time).strftime("%H:%M")
|
|
- td_start_time += @step_minutes
|
|
|
|
- start_room_time = start_time
|
|
- @rooms.each do |room|
|
|
- start_room_time = start_time
|
|
- span = 1
|
|
%tr
|
|
%td.room{ style: "height: #{ td_height(@rooms) }px;" }
|
|
.room.elipsis.break-words{ style: "-webkit-line-clamp: #{ room_lines(@rooms) }; height: #{ room_height(@rooms) }px;" }
|
|
= room.name
|
|
- event_schedules = room.event_schedules.select{ |e| (e.schedule_id == @conference.program.selected_schedule) && (e.start_time >= start_time) && (e.start_time < (start_time + number_columns.hour)) }
|
|
- (1..intervals).each do |i|
|
|
- if span > 1
|
|
- span -= 1
|
|
- else
|
|
- event_schedule = event_schedules.find{ |e| e.start_time <= start_room_time and e.end_time > start_room_time }
|
|
- if event_schedule && (event_schedule.event.state == 'canceled' || event_schedule.event.state == 'withdrawn') && !event_schedule.intersecting_events.confirmed.empty?
|
|
- replacement_event = event_schedule.intersecting_events.confirmed.first
|
|
- event_schedule = (replacement_event.start_time <= start_room_time && replacement_event.end_time > start_room_time) ? replacement_event : nil
|
|
|
|
- if event_schedule
|
|
/ There is an event, calculate the span and show it
|
|
- event_span = (event_schedule.end_time.to_i - start_room_time.to_i) / 60 / EventType::LENGTH_STEP
|
|
- span = ((event_span + i - 1 ) > intervals ? intervals + 1 - i : event_span)
|
|
= render partial: 'schedule_item', locals: {event: event_schedule.event, event_schedule: event_schedule, span: span, width: width}
|
|
- else
|
|
/ if span equals 1 show an empty td
|
|
%td.no-padding{ width: "#{ width }%"}
|
|
- start_room_time += @step_minutes
|
|
- start_time = start_room_time - @step_minutes
|
|
|
|
/ Controls
|
|
%a.left.carousel-control{ href: "#carousel-#{ date }-#{ number_columns }", |
|
|
role: "button", |
|
|
"data-slide" => "prev" }
|
|
%span.glyphicon.glyphicon-chevron-left
|
|
%a.right.carousel-control{ href: "#carousel-#{ date }-#{ number_columns }", |
|
|
role: "button", |
|
|
"data-slide" => "next" }
|
|
%span.glyphicon.glyphicon-chevron-right
|