listview 1.0.0 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/listview.rb +47 -1
- metadata +1 -1
data/lib/listview.rb
CHANGED
@@ -15,10 +15,56 @@ end
|
|
15
15
|
class ListView
|
16
16
|
|
17
17
|
class << self
|
18
|
+
#example use:
|
19
|
+
#
|
20
|
+
#class ObjectThatRespondsToDate
|
21
|
+
# attr_accessor :date
|
22
|
+
#end
|
23
|
+
#
|
24
|
+
#obj1 = ObjectThatRespondsToDate.new
|
25
|
+
#obj1.date = DateTime.now
|
26
|
+
#
|
27
|
+
#
|
28
|
+
#get_events(events: [obj1], events_per_page: 5, page: 0)
|
18
29
|
def get_events vars
|
19
30
|
get_events_that_havent_happened_yet(vars[:events], vars[:events_per_page], (vars[:page].to_i)*vars[:events_per_page])
|
20
31
|
end
|
32
|
+
|
33
|
+
#example use:
|
34
|
+
#
|
35
|
+
#get_events(events: [obj1], events_per_page: 5, page: 0, date_format: "%B, %d")
|
36
|
+
#date_format help: http://ruby-doc.org/stdlib-1.9.3/libdoc/date/rdoc/DateTime.html#method-i-to_date
|
37
|
+
def organization_events_by_day vars
|
38
|
+
vars[:date_format] ||= "%B, %d"
|
39
|
+
organized_events = get_events_that_havent_happened_yet(vars[:events], vars[:events_per_page], (vars[:page].to_i)*vars[:events_per_page])
|
40
|
+
events_organized_by_day = []
|
41
|
+
current_day = DateTime.now
|
42
|
+
def event_date date, date_format
|
43
|
+
if only_date(date) == only_date(DateTime.now)
|
44
|
+
"Today"
|
45
|
+
else
|
46
|
+
date.strftime(date_format)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
organized_events.each_with_index do |event, index|
|
50
|
+
if only_date(event.date) != only_date(current_day)
|
51
|
+
current_day = event.date
|
52
|
+
events_organized_by_day += [date: event_date(event.date, vars[:date_format]), events: [event]]
|
53
|
+
elsif index == 0
|
54
|
+
events_organized_by_day += [date: event_date(event.date, vars[:date_format]), events: [event]]
|
55
|
+
else
|
56
|
+
events_organized_by_day[-1][:events] += [event]
|
57
|
+
end
|
58
|
+
end
|
59
|
+
return events_organized_by_day
|
60
|
+
end
|
61
|
+
|
21
62
|
private
|
63
|
+
|
64
|
+
def only_date date_time
|
65
|
+
date_time.strftime("%d/%m/%Y")
|
66
|
+
end
|
67
|
+
|
22
68
|
def get_events_that_havent_happened_yet events, number_of_events_per_page, offset=0
|
23
69
|
events_that_havent_happened_yet = events
|
24
70
|
events_that_havent_happened_yet.sort_by! {|event| event.date}
|
@@ -47,4 +93,4 @@ class ListView
|
|
47
93
|
end
|
48
94
|
end
|
49
95
|
|
50
|
-
end
|
96
|
+
end
|