Add the weekly avis answer percentage to Stats
This commit is contained in:
parent
068b635b7c
commit
9e6098dc09
3 changed files with 38 additions and 0 deletions
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue