Module: Workarea::Admin::Reports::GroupByTime

Included in:
AverageOrderValueViewModel, FirstTimeVsReturningSalesViewModel, SalesOverTimeViewModel
Defined in:
app/view_models/workarea/admin/reports/group_by_time.rb

Instance Method Summary collapse

Instance Method Details

#day_of_week?Boolean

Returns:

  • (Boolean)


32
33
34
# File 'app/view_models/workarea/admin/reports/group_by_time.rb', line 32

def day_of_week?
  options[: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_optionsObject



23
24
25
# File 'app/view_models/workarea/admin/reports/group_by_time.rb', line 23

def group_by_options
  model.group_bys.map { |o| [o.titleize, o] }
end

#resultsObject



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

Returns:

  • (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