diff --git a/app/assets/javascripts/admin/components/dashboard-mini-chart.js.es6 b/app/assets/javascripts/admin/components/dashboard-mini-chart.js.es6 index bd2087be79b..676917e8c22 100644 --- a/app/assets/javascripts/admin/components/dashboard-mini-chart.js.es6 +++ b/app/assets/javascripts/admin/components/dashboard-mini-chart.js.es6 @@ -5,7 +5,7 @@ import loadScript from 'discourse/lib/load-script'; export default Ember.Component.extend({ classNames: ["dashboard-mini-chart"], - classNameBindings: ["trend", "oneDataPoint"], + classNameBindings: ["trend", "oneDataPoint", "isLoading"], isLoading: false, total: null, @@ -13,11 +13,9 @@ export default Ember.Component.extend({ title: null, chartData: null, oneDataPoint: false, - backgroundColor: "rgba(200,220,240,0.3)", borderColor: "#08C", - didInsertElement() { this._super(); @@ -46,17 +44,9 @@ export default Ember.Component.extend({ } }, - _computeTrend(total, prevTotal) { - const percentChange = ((total - prevTotal) / prevTotal) * 100; - - if (percentChange > 50) return "double-up"; - if (percentChange > 0) return "up"; - if (percentChange === 0) return "stable"; - if (percentChange < 50) return "double-down"; - if (percentChange < 0) return "down"; - }, - fetchReport() { + this.set("isLoading", true); + let payload = {data: {}}; if (this.get("startDate")) { @@ -67,8 +57,6 @@ export default Ember.Component.extend({ payload.data.end_date = this.get("endDate").toISOString(); } - this.set("isLoading", true); - ajax(this.get("dataSource"), payload) .then((response) => { const report = response.report; @@ -94,9 +82,9 @@ export default Ember.Component.extend({ }, drawChart() { - const ctx = this.$(".chart-canvas")[0].getContext("2d"); + const context = this.$(".chart-canvas")[0].getContext("2d"); - let data = { + const data = { labels: this.get("chartData").map(r => r.x), datasets: [{ data: this.get("chartData").map(r => r.y), @@ -105,25 +93,32 @@ export default Ember.Component.extend({ }] }; - const config = { + this._chart = new window.Chart(context, this._buildChartConfig(data)); + }, + + _buildChartConfig(data) { + return { type: "line", - data: data, + data, options: { legend: { display: false }, responsive: true, - layout: { - padding: { left: 0, top: 0, right: 0, bottom: 0 } - }, + layout: { padding: { left: 0, top: 0, right: 0, bottom: 0 } }, scales: { - yAxes: [{ - display: true, - ticks: { suggestedMin: 0 } - }], + yAxes: [{ display: true, ticks: { suggestedMin: 0 } }], xAxes: [{ display: true }], } }, }; + }, - this._chart = new window.Chart(ctx, config); - } + _computeTrend(total, prevTotal) { + const percentChange = ((total - prevTotal) / prevTotal) * 100; + + if (percentChange > 50) return "double-up"; + if (percentChange > 0) return "up"; + if (percentChange === 0) return "stable"; + if (percentChange < 50) return "double-down"; + if (percentChange < 0) return "down"; + }, }); diff --git a/app/assets/javascripts/admin/components/dashboard-mini-table.js.es6 b/app/assets/javascripts/admin/components/dashboard-mini-table.js.es6 index 3ac28b5baed..9b5f96e2f1b 100644 --- a/app/assets/javascripts/admin/components/dashboard-mini-table.js.es6 +++ b/app/assets/javascripts/admin/components/dashboard-mini-table.js.es6 @@ -4,6 +4,8 @@ import computed from 'ember-addons/ember-computed-decorators'; export default Ember.Component.extend({ classNames: ["dashboard-mini-table"], + classNameBindings: ["isLoading"], + total: null, labels: null, title: null, @@ -26,18 +28,20 @@ export default Ember.Component.extend({ fetchReport() { this.set("isLoading", true); - ajax(this.get("dataSource")).then((response) => { - const report = response.report; + ajax(this.get("dataSource")) + .then((response) => { + const report = response.report; + const data = report.data.sort((a, b) => a.x >= b.x); - this.setProperties({ - labels: report.data.map(r => r.x), - dataset: report.data.map(r => r.y), - total: report.total, - title: report.title, - chartData: report.data + this.setProperties({ + labels: data.map(r => r.x), + dataset: data.map(r => r.y), + total: report.total, + title: report.title, + chartData: data + }); + }).finally(() => { + this.set("isLoading", false); }); - }).finally(() => { - this.set("isLoading", false); - }); } }); diff --git a/app/assets/javascripts/admin/controllers/admin-dashboard-next.js.es6 b/app/assets/javascripts/admin/controllers/admin-dashboard-next.js.es6 index 2d009fe285b..8094b042097 100644 --- a/app/assets/javascripts/admin/controllers/admin-dashboard-next.js.es6 +++ b/app/assets/javascripts/admin/controllers/admin-dashboard-next.js.es6 @@ -8,8 +8,6 @@ export default Ember.Controller.extend({ @computed("period") startDate(period) { - if (period === "all") return null; - switch (period) { case "yearly": return moment().subtract(1, "year").startOf("day"); @@ -26,14 +24,14 @@ export default Ember.Controller.extend({ case "daily": return moment().startOf("day"); break; + default: + return null; } }, @computed("period") endDate(period) { - if (period === "all") return null; - - return moment().endOf("day"); + return period === "all" ? null : moment().endOf("day"); }, actions: { diff --git a/app/assets/javascripts/admin/templates/dashboard_next.hbs b/app/assets/javascripts/admin/templates/dashboard_next.hbs index be33186c52d..9a481e4451c 100644 --- a/app/assets/javascripts/admin/templates/dashboard_next.hbs +++ b/app/assets/javascripts/admin/templates/dashboard_next.hbs @@ -3,7 +3,7 @@ {{#conditional-loading-spinner condition=loading}}