Module: Spree::Report::DateSlicer
- Defined in:
- app/reports/spree/report/date_slicer.rb
Class Method Summary collapse
- .slice_days_into(start_date, end_date, klass) ⇒ Object
- .slice_hours_into(start_date, end_date, klass) ⇒ Object
- .slice_into(start_date, end_date, time_scale, klass) ⇒ Object
- .slice_months_into(start_date, end_date, klass) ⇒ Object
- .slice_years_into(start_date, end_date, klass) ⇒ Object
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 |