VRFS-2916 monthly filter

This commit is contained in:
Jonathan Kolyer 2015-03-17 05:04:13 +00:00
parent 5ee4784417
commit 4a0aa25785
2 changed files with 85 additions and 5 deletions

View File

@ -1,19 +1,26 @@
ActiveAdmin.register Cohort, :as => 'Cohort Data' do
ActiveAdmin.register Cohort, :as => 'Cohorts' do
menu :label => 'Cohorts', :parent => 'Analytics'
config.sort_order = 'group_start DESC'
config.sort_order = 'group_start_desc'
config.batch_actions = false
config.clear_action_items!
config.filters = false
config.per_page = 50
controller do
def scoped_collection
obj = super.where(all_time: true).order('group_start DESC')
objs = super
Cohort.alltime_cohorts! if 0 == Cohort.where(all_time: true).count
objs = objs.where(all_time: true).order('group_start DESC')
logger.debug("*** scoped_collection: #{objs.to_sql}")
objs
end
end
index :title => "All-time Cohorts" do
index :title => "All-Time Cohorts" do
column 'Cohort' do |cc| cc.group_start_str end
column Cohort::TOTAL_LABELS[:registered_users] do |cc| cc.data_val(:registered_users) end
@ -51,6 +58,6 @@ ActiveAdmin.register Cohort, :as => 'Cohort Data' do
cc.data_val(:invited_users)
end
column '%' do |cc| cc.data_val(:invited_users, true) end
end
end

View File

@ -0,0 +1,73 @@
ActiveAdmin.register Cohort, :as => 'Cohorts Monthly' do
menu :label => 'Cohorts Monthly', :parent => 'Analytics'
config.sort_order = 'group_start_desc'
config.batch_actions = false
config.clear_action_items!
config.per_page = 50
filter(:monthly_start, as: :select, collection: Cohort.monthly_starts)
filter(:monthly_end, as: :select, collection: Cohort.monthly_ends)
controller do
def scoped_collection
objs = super
alltime = true
args = params[:q] || {}
if args[:monthly_start_eq].nil? || args[:monthly_end_eq].nil?
Cohort.alltime_cohorts! if 0 == Cohort.where(all_time: true).count
else
mstart, mend = Time.parse(args[:monthly_start_eq]), Time.parse(args[:monthly_end_eq])
# populate monthlys
Cohort.monthly_cohorts(mstart, mend)
objs = objs.where(monthly_start: mstart, monthly_end: mend)
alltime = false
end
objs = objs.where(all_time: alltime).order('group_start DESC')
logger.debug("*** scoped_collection: #{objs.to_sql}")
objs
end
end
index :title => "Monthly Cohorts" do
column 'Cohort' do |cc| cc.group_start_str end
column Cohort::TOTAL_LABELS[:registered_users] do |cc| cc.data_val(:registered_users) end
column Cohort::TOTAL_LABELS[:first_downloaded_client_at] do |cc|
cc.data_val(:first_downloaded_client_at)
end
column '%' do |cc| cc.data_val(:first_downloaded_client_at, true) end
column Cohort::TOTAL_LABELS[:first_certified_gear_at] do |cc|
cc.data_val(:first_certified_gear_at)
end
column '%' do |cc| cc.data_val(:first_certified_gear_at, true) end
column Cohort::TOTAL_LABELS[:music_sessions_user_history] do |cc|
cc.data_val(:music_sessions_user_history)
end
column '%' do |cc| cc.data_val(:music_sessions_user_history, true) end
column Cohort::TOTAL_LABELS[:jam_track_rights] do |cc|
cc.data_val(:jam_track_rights)
end
column '%' do |cc| cc.data_val(:jam_track_rights, true) end
column Cohort::TOTAL_LABELS[:recorded_tracks] do |cc|
cc.data_val(:recorded_tracks)
end
column '%' do |cc| cc.data_val(:recorded_tracks, true) end
column Cohort::TOTAL_LABELS[:friendships] do |cc|
cc.data_val(:friendships)
end
column '%' do |cc| cc.data_val(:friendships, true) end
column Cohort::TOTAL_LABELS[:invited_users] do |cc|
cc.data_val(:invited_users)
end
column '%' do |cc| cc.data_val(:invited_users, true) end
end
end