Class: ListView
- Inherits:
-
Object
- Object
- ListView
- Defined in:
- lib/listview.rb
Class Method Summary collapse
- .get_event_closed_to_today(events, the_date = nil) ⇒ Object
- .get_events(vars) ⇒ Object
- .get_events_and_page_info(vars) ⇒ Object
- .leftmost_page(vars) ⇒ Object
- .rightmost_page(vars) ⇒ Object
Class Method Details
.get_event_closed_to_today(events, the_date = nil) ⇒ Object
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/listview.rb', line 57 def get_event_closed_to_today events, the_date=nil the_date ||= DateTime.now closest_to_today = nil sorted_events = events.sort{ |x,y| x.date <=> y.date } sorted_events.each_with_index do |event, index| if event.date.to_i > the_date.to_i if closest_to_today == nil closest_to_today = index else if event.date.to_i - the_date.to_i < sorted_events[closest_to_today].date.to_i - the_date.to_i closest_to_today = index end end end end return closest_to_today || events.length end |
.get_events(vars) ⇒ Object
46 47 48 49 50 51 52 53 54 55 |
# File 'lib/listview.rb', line 46 def get_events vars vars[:date] ||= DateTime.now events_closed_to_today = get_event_closed_to_today(vars[:events], vars[:date]) sorted_events = vars[:events].sort{ |x,y| x.date <=> y.date } left_most_index = events_closed_to_today + (vars[:page].to_i * vars[:events_per_page].to_i) if left_most_index < 0 return sorted_events[0, vars[:events_per_page].to_i + left_most_index] || [] end sorted_events[left_most_index, vars[:events_per_page].to_i] || [] end |
.get_events_and_page_info(vars) ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/listview.rb', line 21 def get_events_and_page_info vars if vars[:events] == [] return { events: [], rightmost_page: 0, leftmost_page: 0, } end vars[:date] ||= DateTime.now event_closed_to_today = get_event_closed_to_today(vars[:events], vars[:date]) next_event = event_closed_to_today + (vars[:page].to_i * vars[:events_per_page].to_i) events = get_events(events: vars[:events], date: vars[:date], page: vars[:page], events_per_page: vars[:events_per_page]) rightmost_page = rightmost_page(events: vars[:events].length, next_event: next_event, events_per_page: vars[:events_per_page]) leftmost_page = leftmost_page(next_event: next_event, events_per_page: vars[:events_per_page]) return { events: events, rightmost_page: rightmost_page, leftmost_page: leftmost_page, } end |
.leftmost_page(vars) ⇒ Object
76 77 78 79 80 81 82 |
# File 'lib/listview.rb', line 76 def leftmost_page vars if vars[:next_event] <= 0 || vars[:events_per_page] == 0 return 0 else -(vars[:next_event] / vars[:events_per_page].to_f).ceil end end |