mirror of
https://github.com/discourse/discourse.git
synced 2024-11-28 17:05:16 +08:00
109 lines
2.7 KiB
JavaScript
109 lines
2.7 KiB
JavaScript
import { exportEntity } from "discourse/lib/export-csv";
|
|
import { outputExportResult } from "discourse/lib/export-result";
|
|
import Report from "admin/models/report";
|
|
import computed from "ember-addons/ember-computed-decorators";
|
|
|
|
export default Ember.Controller.extend({
|
|
queryParams: ["mode", "start_date", "end_date", "category_id", "group_id"],
|
|
viewMode: "graph",
|
|
viewingTable: Em.computed.equal("viewMode", "table"),
|
|
viewingGraph: Em.computed.equal("viewMode", "graph"),
|
|
startDate: null,
|
|
endDate: null,
|
|
categoryId: null,
|
|
groupId: null,
|
|
refreshing: false,
|
|
|
|
@computed()
|
|
categoryOptions() {
|
|
const arr = [{ name: I18n.t("category.all"), value: "all" }];
|
|
return arr.concat(
|
|
Discourse.Site.currentProp("sortedCategories").map(i => {
|
|
return { name: i.get("name"), value: i.get("id") };
|
|
})
|
|
);
|
|
},
|
|
|
|
@computed()
|
|
groupOptions() {
|
|
const arr = [
|
|
{ name: I18n.t("admin.dashboard.reports.groups"), value: "all" }
|
|
];
|
|
return arr.concat(
|
|
this.site.groups.map(i => {
|
|
return { name: i["name"], value: i["id"] };
|
|
})
|
|
);
|
|
},
|
|
|
|
@computed("model.type")
|
|
showCategoryOptions(modelType) {
|
|
return [
|
|
"topics",
|
|
"posts",
|
|
"time_to_first_response_total",
|
|
"topics_with_no_response",
|
|
"flags",
|
|
"likes",
|
|
"bookmarks"
|
|
].includes(modelType);
|
|
},
|
|
|
|
@computed("model.type")
|
|
showGroupOptions(modelType) {
|
|
return (
|
|
modelType === "visits" ||
|
|
modelType === "signups" ||
|
|
modelType === "profile_views"
|
|
);
|
|
},
|
|
|
|
actions: {
|
|
refreshReport() {
|
|
var q;
|
|
this.set("refreshing", true);
|
|
|
|
this.setProperties({
|
|
start_date: this.get("startDate"),
|
|
end_date: this.get("endDate"),
|
|
category_id: this.get("categoryId")
|
|
});
|
|
|
|
if (this.get("groupId")) {
|
|
this.set("group_id", this.get("groupId"));
|
|
}
|
|
|
|
q = Report.find(
|
|
this.get("model.type"),
|
|
this.get("startDate"),
|
|
this.get("endDate"),
|
|
this.get("categoryId"),
|
|
this.get("groupId")
|
|
);
|
|
q.then(m => this.set("model", m)).finally(() =>
|
|
this.set("refreshing", false)
|
|
);
|
|
},
|
|
|
|
viewAsTable() {
|
|
this.set("viewMode", "table");
|
|
},
|
|
|
|
viewAsGraph() {
|
|
this.set("viewMode", "graph");
|
|
},
|
|
|
|
exportCsv() {
|
|
exportEntity("report", {
|
|
name: this.get("model.type"),
|
|
start_date: this.get("startDate"),
|
|
end_date: this.get("endDate"),
|
|
category_id:
|
|
this.get("categoryId") === "all" ? undefined : this.get("categoryId"),
|
|
group_id:
|
|
this.get("groupId") === "all" ? undefined : this.get("groupId")
|
|
}).then(outputExportResult);
|
|
}
|
|
}
|
|
});
|