| Class | WeeklySeries |
| In: |
app/models/weekly_series.rb
|
| Parent: | Series |
| DAYS_OF_WEEK | = | ['Su', 'M', 'Tu', 'W', 'Th', 'F', 'Sa'] unless defined?(DAYS_OF_WEEK) | TODO Is this duplicated from Ruby core and standard lib? |
0-based. Doesn‘t handle multiple days of the week. Method names here are confusing.
# File app/models/weekly_series.rb, line 7
7: def day_of_week
8: if children.empty?
9: date.wday
10: else
11: children.sort_by(&:date).first.date.wday
12: end
13: end
Array of Integers. Sunday is 0. Ordered. Duplicates removed. Caches result, even if date_range changes, and doesn‘t notice database changes.
# File app/models/weekly_series.rb, line 35
35: def days_of_week(date_range, reload = false)
36: if reload || @days_of_week.nil?
37: @days_of_week = WeeklySeries.connection.select_values(%Q{
38: select distinct (DAYOFWEEK(date) - 1) as day_of_week
39: from events
40: where parent_id=#{self.id} and date between '#{date_range.begin.to_s(:db)}' and '#{date_range.end.to_s(:db)}'
41: order by day_of_week}
42: )
43: @days_of_week.map! { |day| day.to_i }
44: end
45: @days_of_week
46: end
Formatted list. Examples:
# File app/models/weekly_series.rb, line 22
22: def days_of_week_as_string(date_range, reload = false)
23: case days_of_week(date_range, reload).size
24: when 0
25: ''
26: when 1
27: Time::RFC2822_DAY_NAME[days_of_week(false).first]
28: else
29: days_of_week(false).collect { |day| DAYS_OF_WEEK[day] }.join('/')
30: end
31: end