Skip to content

Commit

Permalink
Add more stats on moderation
Browse files Browse the repository at this point in the history
  • Loading branch information
Oumph authored and Bruno Michel committed May 6, 2012
1 parent e0f6239 commit 5dbd084
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 10 deletions.
5 changes: 5 additions & 0 deletions app/models/statistics/moderation.rb
Expand Up @@ -18,6 +18,7 @@ def average_time
SELECT YEAR(CONVERT_TZ(nodes.created_at,'+00:00','Europe/Paris')) AS year, SELECT YEAR(CONVERT_TZ(nodes.created_at,'+00:00','Europe/Paris')) AS year,
COUNT(*) AS cnt, COUNT(*) AS cnt,
SUM(TIMESTAMPDIFF(SECOND,news.created_at,nodes.created_at)) AS duration, SUM(TIMESTAMPDIFF(SECOND,news.created_at,nodes.created_at)) AS duration,
STD(TIMESTAMPDIFF(SECOND,news.created_at,nodes.created_at)) AS std,
MIN(TIMESTAMPDIFF(SECOND,news.created_at,nodes.created_at)) AS min, MIN(TIMESTAMPDIFF(SECOND,news.created_at,nodes.created_at)) AS min,
MAX(TIMESTAMPDIFF(SECOND,news.created_at,nodes.created_at)) AS max MAX(TIMESTAMPDIFF(SECOND,news.created_at,nodes.created_at)) AS max
FROM nodes, news FROM nodes, news
Expand All @@ -29,6 +30,10 @@ def average_time
EOS EOS
end end


def median_time(year, count, percentile)
count("SELECT TIMESTAMPDIFF(SECOND,news.created_at,nodes.created_at) AS duration FROM nodes, news WHERE nodes.content_id = news.id AND nodes.content_type='News' AND YEAR(CONVERT_TZ(nodes.created_at,'+00:00','Europe/Paris'))='#{year}' ORDER BY duration LIMIT #{(count*percentile).to_i},1;", "duration")
end

def top_amr(sql_criterion="") def top_amr(sql_criterion="")
select_all <<-EOS select_all <<-EOS
SELECT login, moderator_id, COUNT(*) AS cnt SELECT login, moderator_id, COUNT(*) AS cnt
Expand Down
32 changes: 22 additions & 10 deletions app/views/statistics/moderation.html.haml
Expand Up @@ -29,18 +29,30 @@
%td %td
.stat.misc(style="width: #{(width_stats * day["cnt"] / maxval).to_i}px;")= day["cnt"] .stat.misc(style="width: #{(width_stats * day["cnt"] / maxval).to_i}px;")= day["cnt"]


%h2 Temps de modération %h2 Temps d'édition et de modération
%p %p
Temps moyen passé entre la création d'une dépêche (temps d'édition compris) et sa modération finale&nbsp;: Temps passé entre la création d'une dépêche (temps d'édition compris) et sa modération finale&nbsp;:
%ul %table{'class'=>'sortable'}
%tr
%th Année
%th Médiane (h)
%th 95e percentile (h)
%th Moyenne (h)
%th Écart-type (h)
%th Minimum (min)
%th Maximum (h)
- @stats.average_time.each do |avg| - @stats.average_time.each do |avg|
%li - if avg["cnt"] > 0
- if avg["cnt"] > 0 %tr
#{avg["year"]}&nbsp;: #{(avg["duration"]/(avg["cnt"]*3600)).to_i} heures (entre #{(avg["min"]/60).to_i}min et #{(avg["max"]/3600).to_i}h) %td{'class'=>'stat'}= avg["year"]
- else %td{'class'=>'stat'}= (@stats.median_time(avg["year"],avg["cnt"],0.50)/3600)
aucune information disponible %td{'class'=>'stat'}= (@stats.median_time(avg["year"],avg["cnt"],0.95)/3600)

%td{'class'=>'stat'}= (avg["duration"]/(avg["cnt"]*3600)).to_i
-# TODO Temps médian... un peu pénible à calculer... %td{'class'=>'stat'}= (avg["std"]/3600).to_i
%td{'class'=>'stat'}= (avg["min"]/60).to_i
%td{'class'=>'stat'}= (avg["max"]/3600).to_i
- else
aucune information disponible


%h2 Équipe de modération %h2 Équipe de modération
%ul %ul
Expand Down

0 comments on commit 5dbd084

Please sign in to comment.