Class: Workarea::Admin::Reports::TimelineViewModel

Inherits:
ApplicationViewModel
  • Object
show all
Includes:
GroupByTime
Defined in:
app/view_models/workarea/admin/reports/timeline_view_model.rb

Defined Under Namespace

Classes: Event

Instance Method Summary collapse

Methods included from GroupByTime

#day_of_week?, #get_period_for, #group_by_options, #results, #uneven_day_distribution?

Instance Method Details

#eventsObject



67
68
69
70
71
72
73
74
75
# File 'app/view_models/workarea/admin/reports/timeline_view_model.rb', line 67

def events
  @events ||= begin
    Event
      .build(releases, custom_events)
      .each_with_object({}) do |(date, events), group|
        group[date] = events.sort_by(&:occurred_at)
      end
  end
end

#graph_dataObject



51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'app/view_models/workarea/admin/reports/timeline_view_model.rb', line 51

def graph_data
  {
    labels: grouped_data.keys.reverse,
    datasets: {
      # Note: Order is important. Chart.js layers chart data from the
      # top down.
      releases: transform(graph_data_for('releases')),
      custom_events: transform(graph_data_for('custom_events')),
      revenue: transform(graph_data_for('revenue')),
      orders: transform(graph_data_for('orders')),
      units_sold: transform(graph_data_for('units_sold')),
      customers: transform(graph_data_for('customers'))
    }
  }
end

#summaryObject



40
41
42
43
44
45
46
47
48
49
# File 'app/view_models/workarea/admin/reports/timeline_view_model.rb', line 40

def summary
  {
    revenue: summarize(graph_data_for('revenue')),
    orders: summarize(graph_data_for('orders')),
    units_sold: summarize(graph_data_for('units_sold')),
    customers: summarize(graph_data_for('customers')),
    releases: summarize(graph_data_for('releases')),
    custom_events: summarize(graph_data_for('custom_events'))
  }
end