Add the weekly avis answer percentage to Stats

This commit is contained in:
Simon Lehericey 2017-05-10 11:07:38 +02:00 committed by gregoirenovel
parent 068b635b7c
commit 9e6098dc09
3 changed files with 38 additions and 0 deletions

View file

@ -23,6 +23,7 @@ class StatsController < ApplicationController
@avis_usage = avis_usage
@avis_average_answer_time = avis_average_answer_time
@avis_answer_percentages = avis_answer_percentages
end
private
@ -180,4 +181,23 @@ class StatsController < ApplicationController
[min_date.to_i, result]
end
end
def avis_answer_percentages
[3.week.ago, 2.week.ago, 1.week.ago].map do |min_date|
max_date = min_date + 1.week
weekly_avis = Avis.where(created_at: min_date..max_date)
weekly_avis_count = weekly_avis.count
if weekly_avis_count == 0
[min_date.to_i, 0]
else
answered_weekly_avis_count = weekly_avis.with_answer.count
result = ((answered_weekly_avis_count.to_f / weekly_avis_count) * 100).round(2)
[min_date.to_i, result]
end
end
end
end

View file

@ -90,4 +90,8 @@
%span.stat-card-title Temps de réponse moyen par avis
= line_chart @avis_average_answer_time, ytitle: 'jours', xtitle: 'semaines'
.stat-card.stat-card-half.pull-left
%span.stat-card-title Pourcentage d'avis rempli
= line_chart @avis_answer_percentages, ytitle: 'avis avec reponse / total avis', xtitle: 'semaines'
.clearfix

View file

@ -249,4 +249,18 @@ describe StatsController, type: :controller do
it { is_expected.to include [2.week.ago.to_i, 7.33] }
it { is_expected.to include [3.week.ago.to_i, 9.5] }
end
describe '#avis_answer_percentages' do
let!(:avis) { create(:avis, created_at: 2.days.ago) }
let!(:avis2) { create(:avis, answer: 'answer', created_at: 2.days.ago) }
let!(:avis3) { create(:avis, answer: 'answer', created_at: 2.days.ago) }
subject { StatsController.new.send(:avis_answer_percentages) }
before do
Timecop.freeze(Time.now)
end
it { is_expected.to match [[3.week.ago.to_i, 0], [2.week.ago.to_i, 0], [1.week.ago.to_i, 66.67]] }
end
end