Module: Spree::Admin::AnalyticsConcern

Extended by:
ActiveSupport::Concern
Included in:
DashboardController
Defined in:
app/controllers/concerns/spree/admin/analytics_concern.rb

Instance Method Summary collapse

Instance Method Details

#analytics_time_rangeObject



26
27
28
# File 'app/controllers/concerns/spree/admin/analytics_concern.rb', line 26

def analytics_time_range
  @analytics_time_range ||= (params[:date_from].to_time.beginning_of_day)..(params[:date_to].to_time.end_of_day)
end

#calc_growth_rate(current_amount, previous_amount) ⇒ Object



40
41
42
43
44
45
46
47
48
# File 'app/controllers/concerns/spree/admin/analytics_concern.rb', line 40

def calc_growth_rate(current_amount, previous_amount)
  if previous_amount.zero? && current_amount.positive?
    100
  elsif current_amount.zero? && previous_amount.zero?
    0
  else
    ((current_amount.to_f / previous_amount) * 100) - 100
  end
end

#previous_analytics_time_rangeObject



30
31
32
33
34
# File 'app/controllers/concerns/spree/admin/analytics_concern.rb', line 30

def previous_analytics_time_range
  duration = analytics_time_range.last - analytics_time_range.first

  @previous_analytics_time_range ||= analytics_time_range.first.ago(duration)..analytics_time_range.last.ago(duration).end_of_day
end

#same_day?Boolean

Returns:

  • (Boolean)


36
37
38
# File 'app/controllers/concerns/spree/admin/analytics_concern.rb', line 36

def same_day?
  analytics_time_range.first.to_date == analytics_time_range.last.to_date
end

#set_analytics_defaultsObject



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'app/controllers/concerns/spree/admin/analytics_concern.rb', line 10

def set_analytics_defaults
  params[:analytics_currency] ||= current_currency

  params[:date_from] = if params[:date_from].present?
                        params[:date_from].to_date&.in_time_zone(current_timezone)
                      else
                        1.month.ago.end_of_day.to_date.in_time_zone(current_timezone)
                      end

  params[:date_to] = if params[:date_to].present?
                      params[:date_to].to_date&.in_time_zone(current_timezone)
                    else
                      Time.zone.now.beginning_of_day.to_date.in_time_zone(current_timezone)
                    end
end