FIX: Don't show category options for reports that can't be scoped to a category.
This commit is contained in:
parent
bda20cc44a
commit
3d76fb9c2c
|
@ -4,7 +4,7 @@ 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"],
|
||||
queryParams: ["mode", "start_date", "end_date", "category_id", "group_id"],
|
||||
viewMode: 'graph',
|
||||
viewingTable: Em.computed.equal('viewMode', 'table'),
|
||||
viewingGraph: Em.computed.equal('viewMode', 'graph'),
|
||||
|
@ -28,7 +28,15 @@ export default Ember.Controller.extend({
|
|||
|
||||
@computed('model.type')
|
||||
showCategoryOptions(modelType) {
|
||||
return !modelType.match(/_private_messages$/) && !modelType.match(/^page_view_/);
|
||||
return [
|
||||
'topics',
|
||||
'posts',
|
||||
'time_to_first_response_total',
|
||||
'topics_with_no_response',
|
||||
'flags',
|
||||
'likes',
|
||||
'bookmarks'
|
||||
].includes(modelType);
|
||||
},
|
||||
|
||||
@computed('model.type')
|
||||
|
@ -42,13 +50,13 @@ export default Ember.Controller.extend({
|
|||
this.set("refreshing", true);
|
||||
|
||||
this.setProperties({
|
||||
'start-date': this.get('startDate'),
|
||||
'end-date': this.get('endDate'),
|
||||
'category-id': this.get('categoryId'),
|
||||
'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'));
|
||||
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"));
|
||||
|
|
|
@ -7,11 +7,11 @@
|
|||
@module Discourse
|
||||
**/
|
||||
export default Discourse.Route.extend({
|
||||
queryParams: { mode: {}, "start-date": {}, "end-date": {}, "category-id": {}, "group-id": {}},
|
||||
queryParams: { mode: {}, "start_date": {}, "end_date": {}, "category_id": {}, "group_id": {} },
|
||||
|
||||
model: function(params) {
|
||||
const Report = require('admin/models/report').default;
|
||||
return Report.find(params.type, params['start-date'], params['end-date'], params['category-id'], params['group-id']);
|
||||
return Report.find(params.type, params['start_date'], params['end_date'], params['category_id'], params['group_id']);
|
||||
},
|
||||
|
||||
setupController: function(controller, model) {
|
||||
|
|
|
@ -9,7 +9,7 @@ class Admin::ReportsController < Admin::AdminController
|
|||
|
||||
start_date = params[:start_date].present? ? Time.parse(params[:start_date]) : 30.days.ago
|
||||
end_date = params[:end_date].present? ? Time.parse(params[:end_date]) : start_date + 30.days
|
||||
|
||||
|
||||
if params.has_key?(:category_id) && params[:category_id].to_i > 0
|
||||
category_id = params[:category_id].to_i
|
||||
else
|
||||
|
|
|
@ -82,7 +82,6 @@ class Report
|
|||
.sum(:count)
|
||||
end
|
||||
|
||||
|
||||
def self.report_visits(report)
|
||||
basic_report_about report, UserVisit, :by_day, report.start_date, report.end_date, report.group_id
|
||||
|
||||
|
|
|
@ -740,7 +740,7 @@ class User < ActiveRecord::Base
|
|||
(tl_badge + other_badges).take(limit)
|
||||
end
|
||||
|
||||
def self.count_by_signup_date(start_date, end_date, group_id=nil)
|
||||
def self.count_by_signup_date(start_date, end_date, group_id = nil)
|
||||
result = where('users.created_at >= ? AND users.created_at <= ?', start_date, end_date)
|
||||
|
||||
if group_id
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
require 'rails_helper'
|
||||
|
||||
describe Admin::ReportsController do
|
||||
|
||||
it "is a subclass of AdminController" do
|
||||
expect(Admin::ReportsController < Admin::AdminController).to eq(true)
|
||||
end
|
||||
|
@ -58,6 +57,46 @@ describe Admin::ReportsController do
|
|||
|
||||
end
|
||||
|
||||
describe 'when report is scoped to a category' do
|
||||
let(:category) { Fabricate(:category) }
|
||||
let(:topic) { Fabricate(:topic, category: category) }
|
||||
let(:other_topic) { Fabricate(:topic) }
|
||||
|
||||
it 'should render the report as JSON' do
|
||||
topic
|
||||
other_topic
|
||||
|
||||
xhr :get, :show, type: 'topics', category_id: category.id
|
||||
|
||||
expect(response).to be_success
|
||||
|
||||
report = JSON.parse(response.body)["report"]
|
||||
|
||||
expect(report["type"]).to eq('topics')
|
||||
expect(report["data"].count).to eq(1)
|
||||
end
|
||||
end
|
||||
|
||||
describe 'when report is scoped to a group' do
|
||||
let(:user) { Fabricate(:user) }
|
||||
let(:other_user) { Fabricate(:user) }
|
||||
let(:group) { Fabricate(:group) }
|
||||
|
||||
it 'should render the report as JSON' do
|
||||
other_user
|
||||
group.add(user)
|
||||
|
||||
xhr :get, :show, type: 'signups', group_id: group.id
|
||||
|
||||
expect(response).to be_success
|
||||
|
||||
report = JSON.parse(response.body)["report"]
|
||||
|
||||
expect(report["type"]).to eq('signups')
|
||||
expect(report["data"].count).to eq(1)
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue