class Carendar::CalendarDay
Attributes
day[R]
items[R]
Public Class Methods
new(day, items)
click to toggle source
# File lib/carendar.rb, line 37 def initialize(day, items) @day = day @items = items.map do |item| CalendarItem.new(item[:starts_at], item[:ends_at], item[:options] || {}) end @items.sort_by!(&:start_min) @items.each do |item| item.overlapping_with_earlier = @items.select do |other| other.start_min < item.start_min && other.end_min > item.start_min end item.overlapping_with_later = [] item.offset_right = 0 end @items.each do |item| item.overlapping_with_earlier.each do |overlapper| overlapper.overlapping_with_later << item end end @items.each do |item| item.offset_left = if item.overlapping_with_earlier.any? item.overlapping_with_earlier.last.offset_left + 1 else 0 end end @items.reverse.each do |item| item.offset_right = if item.overlapping_with_later.present? item.overlapping_with_later.first.offset_right + 1 else 0 end end end