From 5ee47844170194756fb0f7cf950d1f08bd76a74d Mon Sep 17 00:00:00 2001 From: Jonathan Kolyer Date: Tue, 17 Mar 2015 01:34:04 +0000 Subject: [PATCH] VRFS-2916 admin index --- admin/Gemfile | 2 +- admin/app/admin/cohort_data.rb | 50 +++++++++++++++++++++++++++++++++- admin/app/models/cohort.rb | 22 ++++++++++++++- 3 files changed, 71 insertions(+), 3 deletions(-) diff --git a/admin/Gemfile b/admin/Gemfile index 6f5c0b21e..e71c00a03 100644 --- a/admin/Gemfile +++ b/admin/Gemfile @@ -41,7 +41,7 @@ gem 'uuidtools', '2.1.2' gem 'jquery-rails' # , '2.3.0' # pinned because jquery-ui-rails was split from jquery-rails, but activeadmin doesn't support this gem yet gem 'jquery-ui-rails', '4.2.1' gem 'rails3-jquery-autocomplete' -gem 'activeadmin', '0.6.2' +gem 'activeadmin', github: 'activeadmin', branch: '0-6-stable' gem 'mime-types', '1.25' gem 'meta_search' gem 'fog', "~> 1.18.0" diff --git a/admin/app/admin/cohort_data.rb b/admin/app/admin/cohort_data.rb index 25a4a7303..99263e5af 100644 --- a/admin/app/admin/cohort_data.rb +++ b/admin/app/admin/cohort_data.rb @@ -2,7 +2,55 @@ ActiveAdmin.register Cohort, :as => 'Cohort Data' do menu :label => 'Cohorts', :parent => 'Analytics' - index do + config.sort_order = 'group_start DESC' + config.batch_actions = false + config.clear_action_items! + config.filters = false + + controller do + def scoped_collection + obj = super.where(all_time: true).order('group_start DESC') + end + end + + 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 + + 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 diff --git a/admin/app/models/cohort.rb b/admin/app/models/cohort.rb index 84bb23dde..fd4e831cf 100644 --- a/admin/app/models/cohort.rb +++ b/admin/app/models/cohort.rb @@ -2,6 +2,8 @@ require 'date' class Cohort < ActiveRecord::Base + EARLIEST_DATE = Time.parse('2014-03-01') + KEY_SET_TOTAL = [:registered_users, :first_downloaded_client_at, :first_certified_gear_at, :music_sessions_user_history, 'play_jamtr', :jam_track_rights, :recorded_tracks, :friendships, :invited_users] TOTAL_LABELS = { @@ -95,7 +97,8 @@ class Cohort < ActiveRecord::Base def _put_data_set(key, count, num_user) self.data_set[key.to_s] = count - self.data_set["#{key}%"] = 100.0 * (count.to_f / num_user.to_f) + xx = (count.to_f / num_user.to_f) + self.data_set["#{key}%"] = 100.0 * xx.round(2) end def self.cohort_users(cohort) @@ -243,5 +246,22 @@ SQL end end + def group_start_str + self.group_start.strftime('%Y-%m-%d') + end + + def group_end_str + self.group_end.strftime('%Y-%m-%d') + end + + def data_val(col, percent=false) + if percent + val = self.data_set["#{col}%"] + val ? '%0.f' % val : '' + else + self.data_set[col.to_s] + end + end + end