Class: ListView

Inherits:
Object
  • Object
show all
Defined in:
lib/listview.rb

Class Method Summary collapse

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

parameters: vars, vars, vars, vars



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

parameters: vars, vars, vars, vars, vars



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

parameters: vars, vars



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

.rightmost_page(vars) ⇒ Object

parameters: vars, vars vars



88
89
90
91
92
93
94
# File 'lib/listview.rb', line 88

def rightmost_page vars
  if vars[:events] <= vars[:next_event]
    return 0
  else
    ((vars[:events] - vars[:next_event]) / vars[:events_per_page].to_f).ceil - 1
  end
end