Module: Tricle::Aggregation

Extended by:
ActiveSupport::Concern
Included in:
Metric
Defined in:
lib/tricle/aggregation.rb

Instance Method Summary collapse

Instance Method Details

#days_ago(n) ⇒ Object



7
8
9
10
11
# File 'lib/tricle/aggregation.rb', line 7

def days_ago(n)
  start_at = self.now.beginning_of_day.ago(n.days)
  end_at = start_at + 1.day
  self.size_for_range(start_at, end_at)
end

#last_weekObject



23
24
25
# File 'lib/tricle/aggregation.rb', line 23

def last_week
  self.weeks_ago(1)
end

#week_average_this_quarterObject



38
39
40
# File 'lib/tricle/aggregation.rb', line 38

def week_average_this_quarter
  self.weeks_average(13)
end

#weekly_values(past_num_weeks) ⇒ Object



27
28
29
30
# File 'lib/tricle/aggregation.rb', line 27

def weekly_values(past_num_weeks)
  weeks_range = past_num_weeks.downto(1)
  weeks_range.map{|n| self.weeks_ago(n) }
end

#weeks_ago(n) ⇒ Object



17
18
19
20
21
# File 'lib/tricle/aggregation.rb', line 17

def weeks_ago(n)
  start_at = self.now.beginning_of_week.weeks_ago(n)
  end_at = start_at + 7.days
  self.size_for_range(start_at, end_at)
end

#weeks_average(past_num_weeks) ⇒ Object



32
33
34
35
36
# File 'lib/tricle/aggregation.rb', line 32

def weeks_average(past_num_weeks)
  values = self.weekly_values(past_num_weeks)
  total = values.reduce(0, :+)
  total.to_f / past_num_weeks
end

#yesterdayObject



13
14
15
# File 'lib/tricle/aggregation.rb', line 13

def yesterday
  self.days_ago(1)
end