discourse/app/assets/javascripts/admin/addon/routes/admin-reports-show.js
Linca 22e4014b2f
FEATURE: Show legacy pageview report for sites using legacy pageviews (#33620)
This commit redirects the new site traffic report URL to the legacy one
on sites where `use_legacy_pageviews = true`.

- New URL: /admin/reports/site_traffic
- Legacy URL: /admin/reports/consolidated_page_views
2025-07-17 10:46:22 +08:00

90 lines
2.3 KiB
JavaScript
Vendored

import { action } from "@ember/object";
import { service } from "@ember/service";
import DiscourseRoute from "discourse/routes/discourse";
export default class AdminReportsShowRoute extends DiscourseRoute {
@service router;
queryParams = {
start_date: { refreshModel: true },
end_date: { refreshModel: true },
filters: { refreshModel: true },
chart_grouping: { refreshModel: true },
mode: { refreshModel: true },
};
model(params) {
params.customFilters = params.filters;
delete params.filters;
params.startDate =
params.start_date ||
moment()
.subtract(1, "day")
.subtract(1, "month")
.startOf("day")
.format("YYYY-MM-DD");
delete params.start_date;
params.endDate =
params.end_date || moment().endOf("day").format("YYYY-MM-DD");
delete params.end_date;
params.chartGrouping = params.chart_grouping || "daily";
delete params.chart_grouping;
return params;
}
deserializeQueryParam(value, urlKey, defaultValueType) {
if (urlKey === "filters") {
return JSON.parse(decodeURIComponent(value));
}
return super.deserializeQueryParam(value, urlKey, defaultValueType);
}
serializeQueryParam(value, urlKey, defaultValueType) {
if (urlKey === "filters") {
if (value && Object.keys(value).length > 0) {
return JSON.stringify(value);
} else {
return null;
}
}
return super.serializeQueryParam(value, urlKey, defaultValueType);
}
redirect(params) {
if (
params.type === "site_traffic" &&
this.siteSettings.use_legacy_pageviews
) {
this.router.transitionTo("adminReports.show", "consolidated_page_views", {
queryParams: {
...params,
type: "consolidated_page_views",
},
});
}
}
@action
onParamsChange(params) {
const queryParams = {
type: params.type,
mode: params.mode,
start_date: params.startDate
? params.startDate.toISOString(true).split("T")[0]
: null,
chart_grouping: params.chartGrouping,
filters: params.filters,
end_date: params.endDate
? params.endDate.toISOString(true).split("T")[0]
: null,
};
this.router.transitionTo("adminReports.show", { queryParams });
}
}