2015-09-15 16:45:01 -04:00
|
|
|
import { exportEntity } from 'discourse/lib/export-csv';
|
|
|
|
import { outputExportResult } from 'discourse/lib/export-result';
|
2016-01-20 07:11:21 -05:00
|
|
|
import Report from 'admin/models/report';
|
2016-02-02 21:29:51 -05:00
|
|
|
import computed from 'ember-addons/ember-computed-decorators';
|
2015-09-15 16:45:01 -04:00
|
|
|
|
2015-08-11 12:27:07 -04:00
|
|
|
export default Ember.Controller.extend({
|
2017-04-13 05:10:55 -04:00
|
|
|
queryParams: ["mode", "start_date", "end_date", "category_id", "group_id"],
|
2016-04-14 01:46:01 -04:00
|
|
|
viewMode: 'graph',
|
2013-05-29 13:33:54 -04:00
|
|
|
viewingTable: Em.computed.equal('viewMode', 'table'),
|
2016-04-14 01:46:01 -04:00
|
|
|
viewingGraph: Em.computed.equal('viewMode', 'graph'),
|
2014-11-05 14:46:27 -05:00
|
|
|
startDate: null,
|
|
|
|
endDate: null,
|
2015-06-24 09:19:39 -04:00
|
|
|
categoryId: null,
|
2016-02-02 21:29:51 -05:00
|
|
|
groupId: null,
|
2014-11-05 14:46:27 -05:00
|
|
|
refreshing: false,
|
2013-03-17 15:02:36 -04:00
|
|
|
|
2016-02-02 21:29:51 -05:00
|
|
|
@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']};}));
|
|
|
|
},
|
|
|
|
|
2016-04-21 03:33:23 -04:00
|
|
|
@computed('model.type')
|
2016-04-21 05:22:41 -04:00
|
|
|
showCategoryOptions(modelType) {
|
2017-04-13 05:10:55 -04:00
|
|
|
return [
|
|
|
|
'topics',
|
|
|
|
'posts',
|
|
|
|
'time_to_first_response_total',
|
|
|
|
'topics_with_no_response',
|
|
|
|
'flags',
|
|
|
|
'likes',
|
|
|
|
'bookmarks'
|
|
|
|
].includes(modelType);
|
2016-04-21 03:33:23 -04:00
|
|
|
},
|
|
|
|
|
2016-02-02 21:29:51 -05:00
|
|
|
@computed('model.type')
|
|
|
|
showGroupOptions(modelType) {
|
|
|
|
return modelType === "visits" || modelType === "signups" || modelType === "profile_views";
|
|
|
|
},
|
2015-07-03 12:58:13 -04:00
|
|
|
|
2013-09-16 14:08:55 -04:00
|
|
|
actions: {
|
2015-06-24 09:19:39 -04:00
|
|
|
refreshReport() {
|
2015-07-03 12:58:13 -04:00
|
|
|
var q;
|
2015-06-24 09:19:39 -04:00
|
|
|
this.set("refreshing", true);
|
2016-02-02 21:29:51 -05:00
|
|
|
|
2016-04-14 01:46:01 -04:00
|
|
|
this.setProperties({
|
2017-04-13 05:10:55 -04:00
|
|
|
'start_date': this.get('startDate'),
|
|
|
|
'end_date': this.get('endDate'),
|
|
|
|
'category_id': this.get('categoryId'),
|
2016-04-14 01:46:01 -04:00
|
|
|
});
|
|
|
|
|
|
|
|
if (this.get('groupId')){
|
2017-04-13 05:10:55 -04:00
|
|
|
this.set('group_id', this.get('groupId'));
|
2016-04-14 01:46:01 -04:00
|
|
|
}
|
|
|
|
|
2016-02-02 21:29:51 -05:00
|
|
|
q = Report.find(this.get("model.type"), this.get("startDate"), this.get("endDate"), this.get("categoryId"), this.get("groupId"));
|
2015-07-03 12:58:13 -04:00
|
|
|
q.then(m => this.set("model", m)).finally(() => this.set("refreshing", false));
|
2014-11-05 14:46:27 -05:00
|
|
|
},
|
|
|
|
|
2015-06-24 09:19:39 -04:00
|
|
|
viewAsTable() {
|
2013-09-16 14:08:55 -04:00
|
|
|
this.set('viewMode', 'table');
|
|
|
|
},
|
2013-03-17 15:02:36 -04:00
|
|
|
|
2016-04-14 01:46:01 -04:00
|
|
|
viewAsGraph() {
|
|
|
|
this.set('viewMode', 'graph');
|
2015-09-15 16:45:01 -04:00
|
|
|
},
|
|
|
|
|
|
|
|
exportCsv() {
|
|
|
|
exportEntity('report', {
|
|
|
|
name: this.get("model.type"),
|
|
|
|
start_date: this.get('startDate'),
|
|
|
|
end_date: this.get('endDate'),
|
2016-02-02 21:29:51 -05:00
|
|
|
category_id: this.get('categoryId') === 'all' ? undefined : this.get('categoryId'),
|
|
|
|
group_id: this.get('groupId') === 'all' ? undefined : this.get('groupId')
|
2015-09-15 16:45:01 -04:00
|
|
|
}).then(outputExportResult);
|
2013-09-16 14:08:55 -04:00
|
|
|
}
|
2013-03-17 15:02:36 -04:00
|
|
|
}
|
2014-06-10 11:54:38 -04:00
|
|
|
});
|