app/views/reservations/_server_reservations_table.html.haml
#server_reservations_table
.row
.col-md-12
%h3
Reservation chart for
- starts_at = reservation.starts_at || Time.current
#{I18n.l(starts_at, :format => :datepicker)}
\-
#{I18n.l(starts_at + 7.hours, :format => :time_without_seconds)}
%p.lead Click on a bar to plan a reservation after that one, or click on a server name.
.row
.col-md-12
- servers = Server.includes(:location).active.reservable_by_user(current_user).order('servers.name')
- reservations = {}
- servers.each do |s|
- reservations[s.id] = []
- Reservation.joins(:server).where(:server => servers).order(:starts_at).within_time_range(starts_at, starts_at + 7.hours).uniq.each do |r|
- reservations[r.server_id] << r
.server_reservations
- servers.each do |s|
- s = s.decorate
.row.server
.col-md-2.name.server_name{:data => { :server_id => s.id }}
= s.name
.col-md-10.reservations
- reservations[s.id].each do |r|
- duration = (r.duration / 25.0).round
- minutes_from_starts_at = ((r.starts_at - starts_at) / 25.0).round
- start_time = I18n.l(r.starts_at, :format => :time_without_seconds)
- end_time = I18n.l(r.ends_at, :format => :time_without_seconds)
- time = "#{start_time}-#{end_time}"
- next_start = r.ends_at + 1.minute
- next_end = next_start + 1.hour
- next_start_formatted = I18n.l(next_start, :format => :datepicker)
- next_end_formatted = I18n.l(next_end, :format => :datepicker)
- text = "#{r}"
.progress.gantt{:style => "left: #{minutes_from_starts_at}px; width: #{duration}px", :data => { :container => "body", :toggle => "tooltip", :placement => "top", :next_start => next_start_formatted, :next_end => next_end_formatted, :server_id => r.server_id}, :title => text}
.progress-bar{:role => "progressbar", :style => "width: 100%"}
= time
.row
.col-md-12
%button#toggle_reservations_list{:class => 'btn btn-sm btn-success'}
%i.fa.fa-align-right
Reservation chart