WIP
This commit is contained in:
parent
818167c565
commit
4c9b45b9c8
6 changed files with 68 additions and 22 deletions
|
|
@ -66,18 +66,7 @@ class AdminsController < ApplicationController
|
|||
end
|
||||
|
||||
def correlations
|
||||
|
||||
|
||||
@correlations = Statistics.generate_correlations(params[:number_of_weeks])
|
||||
|
||||
5.times.inject({}) do |stats, n|
|
||||
week_start = (Time.now - n.weeks).beginning_of_week
|
||||
week_end = week_start - 1.week
|
||||
stats[week_start] = Statistics.new(week_start, week_end).generate_correlations
|
||||
end
|
||||
|
||||
|
||||
|
||||
@post_count_correlation = Statistics.new.post_count_correlation
|
||||
end
|
||||
|
||||
private
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@
|
|||
%li= link_to 'User Search', user_search_path
|
||||
%li= link_to 'Weekly User Stats', weekly_user_stats_path
|
||||
%li= link_to 'Pod Stats', pod_stats_path
|
||||
%li= link_to 'Correlations', correlations_path
|
||||
- if AppConfig[:mount_resque_web]
|
||||
%li= link_to 'Resque Overview', resque_web_path
|
||||
|
||||
|
|
|
|||
11
app/views/admins/correlations.haml
Normal file
11
app/views/admins/correlations.haml
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
.span-24
|
||||
= render :partial => 'admins/admin_bar.haml'
|
||||
%br
|
||||
%br
|
||||
|
||||
.span-24.last
|
||||
%h1
|
||||
= "Correlation between Post Count and Sign In Count"
|
||||
%ul
|
||||
= @post_count_correlation
|
||||
|
|
@ -97,6 +97,7 @@ Diaspora::Application.routes.draw do
|
|||
match :user_search
|
||||
get :admin_inviter
|
||||
get :weekly_user_stats
|
||||
get :correlations
|
||||
get :stats, :as => 'pod_stats'
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -55,15 +55,21 @@ SQL
|
|||
SQL
|
||||
end
|
||||
|
||||
def posts_count_correlation
|
||||
def post_count_correlation
|
||||
|
||||
# [{"id" => 1 , "count" => 123}]
|
||||
post_count_array = User.connection.select_all(self.posts_count_sql)
|
||||
|
||||
post_count_hash = {}
|
||||
post_count_array.each{ |h| post_count_hash[h[id]] = h["count"]}
|
||||
x_array = []
|
||||
y_array = []
|
||||
|
||||
post_count_hash.keys.each do |k|
|
||||
if val = sign_in_count_hash[k]
|
||||
x_array << post_count_hash[k]
|
||||
y_array << val
|
||||
end
|
||||
end
|
||||
|
||||
correlation(x_array, y_array)
|
||||
end
|
||||
|
||||
|
||||
|
|
@ -93,4 +99,23 @@ SQL
|
|||
User.where("username IS NOT NULL").where("created_at > ? and created_at < ?", Time.now - (n+1).weeks, Time.now - n.weeks)
|
||||
end
|
||||
|
||||
def post_count_hash
|
||||
unless @post_count_hash
|
||||
post_count_array = User.connection.select_all(self.posts_count_sql)
|
||||
|
||||
@post_count_hash = {}
|
||||
post_count_array.each{ |h| @post_count_hash[h['id']] = h["count"]}
|
||||
end
|
||||
@post_count_hash
|
||||
end
|
||||
|
||||
def sign_in_count_hash
|
||||
unless @sign_in_count_hash
|
||||
sign_in_count_array = User.connection.select_all(self.sign_in_count_sql)
|
||||
|
||||
@sign_in_count_hash = {}
|
||||
sign_in_count_array.each{ |h| @sign_in_count_hash[h['id']] = h["count"]}
|
||||
end
|
||||
@sign_in_count_hash
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -4,7 +4,8 @@ require 'lib/statistics'
|
|||
describe Statistics do
|
||||
|
||||
before do
|
||||
@stats = Statistics.new(time, time - 1.week)
|
||||
@time = Time.now
|
||||
@stats = Statistics.new#(@time, @time - 1.week)
|
||||
@result = [{"id" => alice.id , "count" => 0 },
|
||||
{"id" => bob.id , "count" => 1 },
|
||||
{"id" => eve.id , "count" => 0 },
|
||||
|
|
@ -59,11 +60,9 @@ describe Statistics do
|
|||
describe "#correlation_hash" do
|
||||
|
||||
it 'it returns a hash of including start and end time' do
|
||||
time = Time.now
|
||||
|
||||
hash = @stats.correlation_hash
|
||||
hash[:starrt_time].should == time
|
||||
hash[:end_time].should == time - 1.week
|
||||
hash[:starrt_time].should == @time
|
||||
hash[:end_time].should == @time - 1.week
|
||||
end
|
||||
|
||||
it 'returns the post count (and sign_in_count) correlation' do
|
||||
|
|
@ -73,6 +72,26 @@ describe Statistics do
|
|||
end
|
||||
end
|
||||
|
||||
describe "#post_count_correlation" do
|
||||
it 'calls correlation with post' do
|
||||
User.connection.should_receive(:select_all).and_return([{"id"=> 1, "count" => 7},
|
||||
{"id" => 2, "count" => 8},
|
||||
{"id" => 3, "count" => 9}],
|
||||
[{"id"=> 1, "count" => 17},
|
||||
{"id" => 3, "count" => 19}]
|
||||
)
|
||||
|
||||
@stats.should_receive(:correlation).with([7,9],[17,19]).and_return(0.5)
|
||||
@stats.posts_count_correlation.should == 0.5
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
context 'todos' do
|
||||
before do
|
||||
pending
|
||||
|
|
|
|||
Loading…
Reference in a new issue