0
0
Fork 0
mirror of https://github.com/discourse/discourse.git synced 2026-08-08 17:53:55 +08:00
discourse/app/models/concerns/reports/visits.rb
Alan Guo Xiang Tan d2aa6131fb
DEV: Remove reporting_improvements upcoming change (#41259)
This PR promotes the `reporting_improvements` upcoming change to the
default for all admins and removes the flag.
2026-07-01 07:52:02 +08:00

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