listview 1.0.0 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|