Add finishing rate to exercise statistics

This commit is contained in:
Maximilian Grundke
2018-05-15 12:47:54 +02:00
parent 5a2394f1b9
commit 2541451d4b
4 changed files with 15 additions and 3 deletions

View File

@ -352,7 +352,11 @@ class Exercise < ActiveRecord::Base
end end
def has_user_solved(user) def has_user_solved(user)
return maximum_score(user).to_i == maximum_score.to_i maximum_score(user).to_i == maximum_score.to_i
end
def finishers
ExternalUser.joins(:submissions).where(submissions: {exercise_id: id, score: maximum_score, cause: %w(submit assess)}).distinct
end end
def set_default_values def set_default_values

View File

@ -2,9 +2,15 @@ script src="http://labratrevenge.com/d3-tip/javascripts/d3.tip.v0.6.3.js"
h1 = @exercise h1 = @exercise
= row(label: '.participants', value: @exercise.users.distinct.count) = row(label: '.participants', value: @exercise.users.distinct.count)
- [:intermediate, :final].each do |scope| - [:intermediate, :final].each do |scope|
= row(label: ".#{scope}_submissions") do = row(label: ".#{scope}_submissions") do
= "#{@exercise.submissions.send(scope).count} (#{t('.users', count: @exercise.submissions.send(scope).distinct.count(:user_id))})" = "#{@exercise.submissions.send(scope).count} (#{t('.users', count: @exercise.submissions.send(scope).distinct.count(:user_id))})"
= row(label: '.finishing_rate') do
p == @exercise.finishers.count ? "#{t('shared.out_of', maximum_value: @exercise.users.distinct.count, value: @exercise.finishers.count)} #{t('exercises.statistics.external_users')}" : empty
p = progress_bar((100.0 / @exercise.users.distinct.count * @exercise.finishers.count).round(2))
= row(label: '.average_score') do = row(label: '.average_score') do
p == @exercise.average_score ? t('shared.out_of', maximum_value: @exercise.maximum_score, value: @exercise.average_score.round(2)) : empty p == @exercise.average_score ? t('shared.out_of', maximum_value: @exercise.maximum_score, value: @exercise.average_score.round(2)) : empty
p = progress_bar(@exercise.average_percentage) p = progress_bar(@exercise.average_percentage)

View File

@ -350,7 +350,8 @@ de:
worktime: Arbeitszeit worktime: Arbeitszeit
average_worktime: Durchschnittliche Arbeitszeit average_worktime: Durchschnittliche Arbeitszeit
internal_users: Interne Nutzer internal_users: Interne Nutzer
external_user: Externe Nutzer external_users: Externe Nutzer
finishing_rate: Abschlussrate
submit: submit:
failure: Beim Übermitteln Ihrer Punktzahl ist ein Fehler aufgetreten. Bitte versuchen Sie es später erneut. failure: Beim Übermitteln Ihrer Punktzahl ist ein Fehler aufgetreten. Bitte versuchen Sie es später erneut.
full_score_redirect_to_rfc: Herzlichen Glückwunsch! Sie haben die maximale Punktzahl für diese Aufgabe an den Kurs übertragen. Ein anderer Teilnehmer hat eine Frage zu der von Ihnen gelösten Aufgabe. Er würde sich sicherlich sehr über ihre Hilfe und Kommentare freuen. full_score_redirect_to_rfc: Herzlichen Glückwunsch! Sie haben die maximale Punktzahl für diese Aufgabe an den Kurs übertragen. Ein anderer Teilnehmer hat eine Frage zu der von Ihnen gelösten Aufgabe. Er würde sich sicherlich sehr über ihre Hilfe und Kommentare freuen.

View File

@ -351,6 +351,7 @@ en:
average_worktime: Average Working Time average_worktime: Average Working Time
internal_users: Internal Users internal_users: Internal Users
external_users: External Users external_users: External Users
finishing_rate: Finishing Rate
submit: submit:
failure: An error occured while transmitting your score. Please try again later. failure: An error occured while transmitting your score. Please try again later.
full_score_redirect_to_rfc: Congratulations! You achieved and submitted the highest possible score for this exercise. Another participant has a question concerning the exercise you just solved. Your help and comments will be greatly appreciated! full_score_redirect_to_rfc: Congratulations! You achieved and submitted the highest possible score for this exercise. Another participant has a question concerning the exercise you just solved. Your help and comments will be greatly appreciated!