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
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
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
= row(label: '.participants', value: @exercise.users.distinct.count)
- [:intermediate, :final].each do |scope|
= row(label: ".#{scope}_submissions") do
= "#{@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
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)
@ -40,4 +46,4 @@ h1 = @exercise
td = link_to_if symbol==:external_users, label, {controller: "exercises", action: "statistics", external_user_id: user.id, id: @exercise.id}
td = us['maximum_score'] or 0
td = us['runs']
td = @exercise.average_working_time_for(user.id) or 0
td = @exercise.average_working_time_for(user.id) or 0

View File

@ -350,7 +350,8 @@ de:
worktime: Arbeitszeit
average_worktime: Durchschnittliche Arbeitszeit
internal_users: Interne Nutzer
external_user: Externe Nutzer
external_users: Externe Nutzer
finishing_rate: Abschlussrate
submit:
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.

View File

@ -351,6 +351,7 @@ en:
average_worktime: Average Working Time
internal_users: Internal Users
external_users: External Users
finishing_rate: Finishing Rate
submit:
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!