diff --git a/admin/app/admin/cohort_data.rb b/admin/app/admin/cohorts.rb similarity index 80% rename from admin/app/admin/cohort_data.rb rename to admin/app/admin/cohorts.rb index 99263e5af..fac1fa5a3 100644 --- a/admin/app/admin/cohort_data.rb +++ b/admin/app/admin/cohorts.rb @@ -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 diff --git a/admin/app/admin/cohorts_monthly.rb b/admin/app/admin/cohorts_monthly.rb new file mode 100644 index 000000000..dc6351704 --- /dev/null +++ b/admin/app/admin/cohorts_monthly.rb @@ -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