discourse/app/models/concerns/reports/daily_engaged_users.rb

35 lines
1.0 KiB
Ruby

# frozen_string_literal: true
module Reports::DailyEngagedUsers
extend ActiveSupport::Concern
class_methods do
def report_daily_engaged_users(report)
report.average = true
report.data = []
data = UserAction.count_daily_engaged_users(report.start_date, report.end_date)
if report.facets.include?(:prev30Days)
prev30DaysData =
UserAction.count_daily_engaged_users(report.start_date - 30.days, report.start_date)
report.prev30Days = prev30DaysData.sum { |k, v| v }
end
report.total = UserAction.count_daily_engaged_users if report.facets.include?(:total)
if report.facets.include?(:prev_period)
prev_data =
UserAction.count_daily_engaged_users(report.prev_start_date, report.prev_end_date)
prev = prev_data.sum { |k, v| v }
prev = prev / ((report.end_date - report.start_date) / 1.day) if prev > 0
report.prev_period = prev
end
data.each { |key, value| report.data << { x: key, y: value } }
end
end
end