Module: Workarea::Admin::Reports::GroupByTime
- Defined in:
- app/view_models/workarea/admin/reports/group_by_time.rb
Instance Method Summary collapse
- #day_of_week? ⇒ Boolean
- #get_period_for(id) ⇒ Object
- #group_by_options ⇒ Object
- #results ⇒ Object
- #uneven_day_distribution? ⇒ Boolean
Instance Method Details
#day_of_week? ⇒ Boolean
32 33 34 |
# File 'app/view_models/workarea/admin/reports/group_by_time.rb', line 32 def day_of_week? [:group_by].to_s == 'day_of_week' end |
#get_period_for(id) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 |
# File 'app/view_models/workarea/admin/reports/group_by_time.rb', line 11 def get_period_for(id) if id.key?('day_of_week') Date::DAYNAMES[id['day_of_week'] - 1] elsif id.key?('quarter') "#{id['year']} Q#{id['quarter']}" elsif id.key?('week') Date.strptime("#{id['year']}-#{id['week']}", '%G-%V').strftime('%Y-%-m-%-d') else id.values.join('-') end end |
#group_by_options ⇒ Object
23 24 25 |
# File 'app/view_models/workarea/admin/reports/group_by_time.rb', line 23 def model.group_bys.map { |o| [o.titleize, o] } end |
#results ⇒ Object
5 6 7 8 9 |
# File 'app/view_models/workarea/admin/reports/group_by_time.rb', line 5 def results @results ||= model.results.map do |result| OpenStruct.new({ period: get_period_for(result['_id']) }.merge(result)) end end |
#uneven_day_distribution? ⇒ Boolean
27 28 29 30 |
# File 'app/view_models/workarea/admin/reports/group_by_time.rb', line 27 def uneven_day_distribution? number_of_days = (model.ends_at.to_date - model.starts_at.to_date).to_i (number_of_days % 7) != 0 end |