From 673397508f9e6cca7dee566209351ae1f3d813eb Mon Sep 17 00:00:00 2001 From: danielgrippi <danielgrippi@gmail.com> Date: Thu, 11 Aug 2011 18:34:26 -0700 Subject: [PATCH] added segments to stats --- app/controllers/admins_controller.rb | 21 ++++++++++++++----- app/views/admins/stats.html.haml | 31 +++++++++++++++++++++------- 2 files changed, 40 insertions(+), 12 deletions(-) diff --git a/app/controllers/admins_controller.rb b/app/controllers/admins_controller.rb index f65be9ea96..b1226e344f 100644 --- a/app/controllers/admins_controller.rb +++ b/app/controllers/admins_controller.rb @@ -32,8 +32,19 @@ class AdminsController < ApplicationController def stats @popular_tags = ActsAsTaggableOn::Tagging.joins(:tag).limit(15).count(:group => :tag, :order => 'count(taggings.id) DESC') + case params[:range] + when "week" + range = 1.week + when "2weeks" + range = 2.weeks + when "month" + range = 1.month + else + range = 1.day + end + [Post, Comment, AspectMembership, User].each do |model| - create_hash(model) + create_hash(model, :range => range) end @posts_per_day = Post.count(:group => "DATE(created_at)", :conditions => ["created_at >= ?", Date.today - 21.days], :order => "DATE(created_at) ASC") @@ -49,13 +60,13 @@ class AdminsController < ApplicationController sprintf( "%0.02f", ((today-yesterday) / yesterday.to_f)*100).to_f end - def create_hash(model) + def create_hash(model, opts={}) + opts[:range] ||= 1.day plural = model.to_s.underscore.pluralize eval(<<DATA @#{plural} = { - :day_before => #{model}.where(:created_at => ((Time.now.midnight - 2.days)..Time.now.midnight - 1.day)).count, - :yesterday => #{model}.where(:created_at => ((Time.now.midnight - 1.day)..Time.now.midnight)).count, - :today => #{model}.where(:created_at => ((Time.now.midnight)..Time.now)).count + :day_before => #{model}.where(:created_at => ((Time.now.midnight - #{opts[:range]*2})..Time.now.midnight - #{opts[:range]})).count, + :yesterday => #{model}.where(:created_at => ((Time.now.midnight - #{opts[:range]})..Time.now.midnight)).count } @#{plural}[:change] = percent_change(@#{plural}[:yesterday], @#{plural}[:day_before]) DATA diff --git a/app/views/admins/stats.html.haml b/app/views/admins/stats.html.haml index 20bf38b7ed..f0884e8d13 100644 --- a/app/views/admins/stats.html.haml +++ b/app/views/admins/stats.html.haml @@ -13,8 +13,25 @@ .span-24.last + %div{:style => "float:right;"} + = form_tag('/admins/stats', :method => 'get') do + %select{:name => 'range'} + %option{:value => 'daily', :selected => ('selected' if params[:range] == 'daily')} + Daily + %option{:value => 'week', :selected => ('selected' if params[:range] == 'week')} + Week + %option{:value => '2weeks', :selected => ('selected' if params[:range] == '2weeks')} + 2 Weeks + %option{:value => 'month', :selected => ('selected' if params[:range] == 'month')} + Month + + = submit_tag 'go' + %h3 - Yesterday's results + Results from the + %b + = params[:range] + segment - [:posts, :comments, :aspect_memberships, :users].each do |name| - model = eval("@#{name.to_s}") @@ -40,13 +57,13 @@ %br %br - %h3 - Posts over time + /%h3 + / Posts over time - #stats_graph{:style => "text-align:right;position:relative;vertical-align:bottom;background-color:#eee;"} - = @posts_per_day.inspect - /- @posts_per_day.each do |key, val| - / .asdo{:style => "display:inline-block;width:35px;vertical-align:bottom;background-color:#666;height:#{(val/@most_posts_within)*200}px;"} + /#stats_graph{:style => "text-align:right;position:relative;vertical-align:bottom;background-color:#eee;"} + / = @posts_per_day.inspect + / /- @posts_per_day.each do |key, val| + / / .asdo{:style => "display:inline-block;width:35px;vertical-align:bottom;background-color:#666;height:#{(val/@most_posts_within)*200}px;"} %br -- GitLab