VRFS-2916 monthly tweaking
This commit is contained in:
parent
4a0aa25785
commit
a577a6e43e
|
|
@ -13,58 +13,63 @@ ActiveAdmin.register Cohort, :as => 'Cohorts Monthly' do
|
||||||
controller do
|
controller do
|
||||||
def scoped_collection
|
def scoped_collection
|
||||||
objs = super
|
objs = super
|
||||||
alltime = true
|
|
||||||
args = params[:q] || {}
|
args = params[:q] || {}
|
||||||
if args[:monthly_start_eq].nil? || args[:monthly_end_eq].nil?
|
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])
|
mstart, mend = Time.parse(args[:monthly_start_eq]), Time.parse(args[:monthly_end_eq])
|
||||||
# populate monthlys
|
if mstart < mend
|
||||||
Cohort.monthly_cohorts(mstart, mend)
|
Cohort.monthly_cohorts(mstart, mend) # populate monthlys
|
||||||
objs = objs.where(monthly_start: mstart, monthly_end: mend)
|
objs = objs.where(monthly_start: mstart, monthly_end: mend)
|
||||||
alltime = false
|
end
|
||||||
end
|
end
|
||||||
objs = objs.where(all_time: alltime).order('group_start DESC')
|
objs.where(all_time: false).order('group_start DESC')
|
||||||
logger.debug("*** scoped_collection: #{objs.to_sql}")
|
|
||||||
objs
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
index :title => "Monthly Cohorts" do
|
index :title => "Monthly Cohorts" do
|
||||||
column 'Cohort' do |cc| cc.group_start_str end
|
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::MONTHLY_LABELS[:registered_users] do |cc| cc.data_val(:registered_users) end
|
||||||
|
|
||||||
column Cohort::TOTAL_LABELS[:first_downloaded_client_at] do |cc|
|
column Cohort::MONTHLY_LABELS[:first_downloaded_client_at] do |cc|
|
||||||
cc.data_val(:first_downloaded_client_at)
|
cc.data_val(:first_downloaded_client_at)
|
||||||
end
|
end
|
||||||
column '%' do |cc| cc.data_val(:first_downloaded_client_at, true) end
|
column '%' do |cc| cc.data_val(:first_downloaded_client_at, true) end
|
||||||
|
|
||||||
column Cohort::TOTAL_LABELS[:first_certified_gear_at] do |cc|
|
column Cohort::MONTHLY_LABELS[:first_certified_gear_at] do |cc|
|
||||||
cc.data_val(:first_certified_gear_at)
|
cc.data_val(:first_certified_gear_at)
|
||||||
end
|
end
|
||||||
column '%' do |cc| cc.data_val(:first_certified_gear_at, true) end
|
column '%' do |cc| cc.data_val(:first_certified_gear_at, true) end
|
||||||
|
|
||||||
column Cohort::TOTAL_LABELS[:music_sessions_user_history] do |cc|
|
column Cohort::MONTHLY_LABELS[:music_sessions_user_history_1] do |cc|
|
||||||
cc.data_val(:music_sessions_user_history)
|
cc.data_val(:music_sessions_user_history_1)
|
||||||
end
|
end
|
||||||
column '%' do |cc| cc.data_val(:music_sessions_user_history, true) end
|
column '%' do |cc| cc.data_val(:music_sessions_user_history_1, true) end
|
||||||
|
|
||||||
column Cohort::TOTAL_LABELS[:jam_track_rights] do |cc|
|
column Cohort::MONTHLY_LABELS[:music_sessions_user_history_2_5] do |cc|
|
||||||
|
cc.data_val(:music_sessions_user_history_2_5)
|
||||||
|
end
|
||||||
|
column '%' do |cc| cc.data_val(:music_sessions_user_history_2_5, true) end
|
||||||
|
|
||||||
|
column Cohort::MONTHLY_LABELS[:music_sessions_user_history_6_] do |cc|
|
||||||
|
cc.data_val(:music_sessions_user_history_6_)
|
||||||
|
end
|
||||||
|
column '%' do |cc| cc.data_val(:music_sessions_user_history_6_, true) end
|
||||||
|
|
||||||
|
column Cohort::MONTHLY_LABELS[:jam_track_rights] do |cc|
|
||||||
cc.data_val(:jam_track_rights)
|
cc.data_val(:jam_track_rights)
|
||||||
end
|
end
|
||||||
column '%' do |cc| cc.data_val(:jam_track_rights, true) end
|
column '%' do |cc| cc.data_val(:jam_track_rights, true) end
|
||||||
|
|
||||||
column Cohort::TOTAL_LABELS[:recorded_tracks] do |cc|
|
column Cohort::MONTHLY_LABELS[:recorded_tracks] do |cc|
|
||||||
cc.data_val(:recorded_tracks)
|
cc.data_val(:recorded_tracks)
|
||||||
end
|
end
|
||||||
column '%' do |cc| cc.data_val(:recorded_tracks, true) end
|
column '%' do |cc| cc.data_val(:recorded_tracks, true) end
|
||||||
|
|
||||||
column Cohort::TOTAL_LABELS[:friendships] do |cc|
|
column Cohort::MONTHLY_LABELS[:friendships] do |cc|
|
||||||
cc.data_val(:friendships)
|
cc.data_val(:friendships)
|
||||||
end
|
end
|
||||||
column '%' do |cc| cc.data_val(:friendships, true) end
|
column '%' do |cc| cc.data_val(:friendships, true) end
|
||||||
|
|
||||||
column Cohort::TOTAL_LABELS[:invited_users] do |cc|
|
column Cohort::MONTHLY_LABELS[:invited_users] do |cc|
|
||||||
cc.data_val(:invited_users)
|
cc.data_val(:invited_users)
|
||||||
end
|
end
|
||||||
column '%' do |cc| cc.data_val(:invited_users, true) end
|
column '%' do |cc| cc.data_val(:invited_users, true) end
|
||||||
|
|
|
||||||
|
|
@ -54,8 +54,13 @@ class Cohort < ActiveRecord::Base
|
||||||
.map { |d| [d.year,d.mon,d.day].first(prec) }
|
.map { |d| [d.year,d.mon,d.day].first(prec) }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def self.earliest_cohort
|
||||||
|
starting = User.where(admin: false).order(:created_at).first.created_at
|
||||||
|
starting = EARLIEST_DATE if starting < EARLIEST_DATE
|
||||||
|
end
|
||||||
|
|
||||||
def self.cohort_group_ranges(starting=nil, ending=nil)
|
def self.cohort_group_ranges(starting=nil, ending=nil)
|
||||||
starting ||= User.where(admin: false).order(:created_at).first.created_at
|
starting ||= self.earliest_cohort
|
||||||
ending ||= Time.now
|
ending ||= Time.now
|
||||||
dates = self.date_tuples([starting.year, starting.month], [ending.year, ending.month])
|
dates = self.date_tuples([starting.year, starting.month], [ending.year, ending.month])
|
||||||
ranges = []
|
ranges = []
|
||||||
|
|
@ -70,7 +75,7 @@ class Cohort < ActiveRecord::Base
|
||||||
def self.generate_monthly_cohorts(monthly_start, monthly_end)
|
def self.generate_monthly_cohorts(monthly_start, monthly_end)
|
||||||
Cohort.delete_all(['all_time = ?',false])
|
Cohort.delete_all(['all_time = ?',false])
|
||||||
self.cohort_group_ranges.collect do |range|
|
self.cohort_group_ranges.collect do |range|
|
||||||
next if range.first > monthly_start
|
next if range.first > monthly_end
|
||||||
cc = Cohort.new
|
cc = Cohort.new
|
||||||
cc.group_start = range.first
|
cc.group_start = range.first
|
||||||
cc.group_end = range.last
|
cc.group_end = range.last
|
||||||
|
|
@ -240,6 +245,12 @@ SQL
|
||||||
self.all_time ? _all_time! : _monthly!
|
self.all_time ? _all_time! : _monthly!
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def self.alltime_cohorts!
|
||||||
|
Cohort.generate_all_time_cohorts.each do |cc|
|
||||||
|
cc._all_time!
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def self.monthly_cohorts(monthly_start, monthly_end)
|
def self.monthly_cohorts(monthly_start, monthly_end)
|
||||||
self.generate_monthly_cohorts(monthly_start, monthly_end).compact.each do |cc|
|
self.generate_monthly_cohorts(monthly_start, monthly_end).compact.each do |cc|
|
||||||
cc._monthly!
|
cc._monthly!
|
||||||
|
|
@ -263,5 +274,17 @@ SQL
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def self.monthly_starts
|
||||||
|
self.cohort_group_ranges.collect do |rr|
|
||||||
|
rr.first.to_s
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.monthly_ends
|
||||||
|
self.cohort_group_ranges.collect do |rr|
|
||||||
|
rr.last.to_s
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue