diff --git a/app/assets/javascripts/admin/controllers/admin-reports.js.es6 b/app/assets/javascripts/admin/controllers/admin-reports.js.es6 index 9a8a4555c88..6bb36989b75 100644 --- a/app/assets/javascripts/admin/controllers/admin-reports.js.es6 +++ b/app/assets/javascripts/admin/controllers/admin-reports.js.es6 @@ -2,17 +2,27 @@ export default Ember.ObjectController.extend({ viewMode: 'table', viewingTable: Em.computed.equal('viewMode', 'table'), viewingBarChart: Em.computed.equal('viewMode', 'barChart'), + startDate: null, + endDate: null, + refreshing: false, actions: { - // Changes the current view mode to 'table' + refreshReport: function() { + var self = this; + this.set('refreshing', true); + Discourse.Report.find(this.get('type'), this.get('startDate'), this.get('endDate')).then(function(r) { + self.set('model', r); + }).finally(function() { + self.set('refreshing', false); + }); + }, + viewAsTable: function() { this.set('viewMode', 'table'); }, - // Changes the current view mode to 'barChart' viewAsBarChart: function() { this.set('viewMode', 'barChart'); } } - }); diff --git a/app/assets/javascripts/admin/models/report.js b/app/assets/javascripts/admin/models/report.js index a182d846813..8157adc0b4a 100644 --- a/app/assets/javascripts/admin/models/report.js +++ b/app/assets/javascripts/admin/models/report.js @@ -140,9 +140,12 @@ Discourse.Report = Discourse.Model.extend({ }); Discourse.Report.reopenClass({ - find: function(type) { - var model = Discourse.Report.create({type: type}); - Discourse.ajax("/admin/reports/" + type).then(function (json) { + find: function(type, startDate, endDate) { + + return Discourse.ajax("/admin/reports/" + type, {data: { + start_date: startDate, + end_date: endDate + }}).then(function (json) { // Add a percent field to each tuple var maxY = 0; json.report.data.forEach(function (row) { @@ -153,9 +156,9 @@ Discourse.Report.reopenClass({ row.percentage = Math.round((row.y / maxY) * 100); }); } + var model = Discourse.Report.create({type: type}); model.setProperties(json.report); - model.set('loaded', true); + return model; }); - return(model); } }); diff --git a/app/assets/javascripts/admin/routes/admin_reports_route.js b/app/assets/javascripts/admin/routes/admin_reports_route.js index cdc06720ecd..21b842a9f86 100644 --- a/app/assets/javascripts/admin/routes/admin_reports_route.js +++ b/app/assets/javascripts/admin/routes/admin_reports_route.js @@ -9,5 +9,13 @@ Discourse.AdminReportsRoute = Discourse.Route.extend({ model: function(params) { return Discourse.Report.find(params.type); + }, + + setupController: function(controller, model) { + controller.setProperties({ + model: model, + startDate: moment(model.get('start_date')).format('YYYY-MM-DD'), + endDate: moment(model.get('end_date')).format('YYYY-MM-DD') + }); } }); diff --git a/app/assets/javascripts/admin/templates/reports.hbs b/app/assets/javascripts/admin/templates/reports.hbs index 6fbfeb39ce5..a675a74480d 100644 --- a/app/assets/javascripts/admin/templates/reports.hbs +++ b/app/assets/javascripts/admin/templates/reports.hbs @@ -1,14 +1,28 @@ -{{#if loaded}} -

{{title}}

+

{{title}}

- +
+ {{i18n admin.dashboard.reports.start_date}} {{input type="date" value=startDate}} + {{i18n admin.dashboard.reports.end_date}} {{input type="date" value=endDate}} + +
- +
+ {{#if viewingTable}} + {{i18n admin.dashboard.reports.view_table}} + {{else}} + {{i18n admin.dashboard.reports.view_table}} + {{/if}} + | + {{#if viewingBarChart}} + {{i18n admin.dashboard.reports.view_chart}} + {{else}} + {{i18n admin.dashboard.reports.view_chart}} + {{/if}} +
+{{#if refreshing}} + {{loading-spinner}} +{{else}} @@ -31,7 +45,4 @@ {{/each}}
{{xaxis}}
- -{{else}} - {{i18n loading}} {{/if}} diff --git a/app/assets/stylesheets/common/admin/admin_base.scss b/app/assets/stylesheets/common/admin/admin_base.scss index 79335b2fd01..03b4b108532 100644 --- a/app/assets/stylesheets/common/admin/admin_base.scss +++ b/app/assets/stylesheets/common/admin/admin_base.scss @@ -39,6 +39,9 @@ td.flaggers td { } } + .view-options { + float: right; + } table.report { margin-top: 20px; tr { diff --git a/config/locales/client.en.yml b/config/locales/client.en.yml index 0f0477a97b0..81ac6b1224d 100644 --- a/config/locales/client.en.yml +++ b/config/locales/client.en.yml @@ -1508,8 +1508,11 @@ en: 7_days_ago: "7 Days Ago" 30_days_ago: "30 Days Ago" all: "All" - view_table: "View as Table" - view_chart: "View as Bar Chart" + view_table: "table" + view_chart: "bar chart" + refresh_report: "Refresh Report" + start_date: "Start Date" + end_date: "End Date" commits: latest_changes: "Latest changes: please update often!"