mirror of
https://github.com/discourse/discourse.git
synced 2026-08-08 17:53:55 +08:00
This PR promotes the `reporting_improvements` upcoming change to the default for all admins and removes the flag.
72 lines
1.7 KiB
Ruby
Vendored
72 lines
1.7 KiB
Ruby
Vendored
# frozen_string_literal: true
|
|
|
|
module Reports::Visits
|
|
extend ActiveSupport::Concern
|
|
|
|
class_methods do
|
|
def report_visits(report)
|
|
group_filter = report.filters.dig(:group)
|
|
report.add_filter("group", type: "group", default: group_filter)
|
|
|
|
report.icon = "user"
|
|
|
|
report_visits_stacked(report, group_filter)
|
|
end
|
|
|
|
private
|
|
|
|
def report_visits_stacked(report, group_filter)
|
|
report.modes = [Report::MODES[:stacked_chart]]
|
|
report.default_group_by = "weekly"
|
|
|
|
results =
|
|
UserVisit.counts_by_day_and_mobile(
|
|
report.start_date,
|
|
report.end_date,
|
|
group_id: group_filter,
|
|
)
|
|
|
|
desktop_data = []
|
|
mobile_data = []
|
|
|
|
results.each do |row|
|
|
if row.mobile
|
|
mobile_data << { x: row.visited_at.to_s, y: row.visit_count }
|
|
else
|
|
desktop_data << { x: row.visited_at.to_s, y: row.visit_count }
|
|
end
|
|
end
|
|
|
|
report.data =
|
|
if results.empty?
|
|
[]
|
|
else
|
|
[
|
|
{
|
|
req: "desktop",
|
|
label: I18n.t("reports.visits.xaxis.desktop"),
|
|
color: report.colors[:turquoise],
|
|
data: desktop_data,
|
|
},
|
|
{
|
|
req: "mobile",
|
|
label: I18n.t("reports.visits.xaxis.mobile"),
|
|
color: report.colors[:lime],
|
|
data: mobile_data,
|
|
},
|
|
]
|
|
end
|
|
|
|
report.total = results.first&.total || 0
|
|
|
|
if report.facets.include?(:prev30Days)
|
|
report.prev30Days =
|
|
UserVisit.where(
|
|
"visited_at >= ? AND visited_at < ?",
|
|
report.start_date - 30.days,
|
|
report.start_date,
|
|
).count
|
|
end
|
|
end
|
|
end
|
|
end
|