Module: Spree::Report::DateSlicer

Defined in:
app/reports/spree/report/date_slicer.rb

Class Method Summary collapse

Class Method Details

.slice_days_into(start_date, end_date, klass) ⇒ Object



30
31
32
33
34
35
36
37
38
39
40
# File 'app/reports/spree/report/date_slicer.rb', line 30

def self.slice_days_into(start_date, end_date, klass)
  current_date = start_date
  slices = []
  while current_date < end_date
    obj = klass.new
    obj.date = current_date
    slices << obj
    current_date = current_date.next_day
  end
  slices
end

.slice_hours_into(start_date, end_date, klass) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'app/reports/spree/report/date_slicer.rb', line 15

def self.slice_hours_into(start_date, end_date, klass)
  current_date = start_date
  slices = []
  while current_date < end_date
    slices << (0..23).collect do |hour|
      obj = klass.new
      obj.date = current_date
      obj.hour = hour
      obj
    end
    current_date = current_date.next_day
  end
  slices.flatten
end

.slice_into(start_date, end_date, time_scale, klass) ⇒ Object



2
3
4
5
6
7
8
9
10
11
12
13
# File 'app/reports/spree/report/date_slicer.rb', line 2

def self.slice_into(start_date, end_date, time_scale, klass)
  case time_scale
  when :hourly
    slice_hours_into(start_date, end_date, klass)
  when :daily
    slice_days_into(start_date, end_date, klass)
  when :monthly
    slice_months_into(start_date, end_date, klass)
  when :yearly
    slice_years_into(start_date, end_date, klass)
  end
end

.slice_months_into(start_date, end_date, klass) ⇒ Object



42
43
44
45
46
47
48
49
50
51
52
# File 'app/reports/spree/report/date_slicer.rb', line 42

def self.slice_months_into(start_date, end_date, klass)
  current_date = start_date
  slices = []
  while current_date < end_date
    obj = klass.new
    obj.date = current_date
    slices << obj
    current_date = current_date.end_of_month.next_day
  end
  slices
end

.slice_years_into(start_date, end_date, klass) ⇒ Object



54
55
56
57
58
59
60
# File 'app/reports/spree/report/date_slicer.rb', line 54

def self.slice_years_into(start_date, end_date, klass)
  (start_date.year..end_date.year).collect do |year|
    obj = klass.new
    obj.date = Date.new(year).end_of_year
    obj
  end
end