From 193cc6c70d176ca42569f841db5ad5f77ec0f9b2 Mon Sep 17 00:00:00 2001 From: Ralf Teusner Date: Fri, 29 Mar 2019 15:32:00 +0100 Subject: [PATCH] enhance exercise_collection_statistics --- app/models/exercise.rb | 2 +- .../exercise_collections/statistics.html.slim | 24 +++++++++++++++++++ config/locales/de.yml | 4 ++++ config/locales/en.yml | 4 ++++ 4 files changed, 33 insertions(+), 1 deletion(-) diff --git a/app/models/exercise.rb b/app/models/exercise.rb index 75ae109e..e5f1a71f 100644 --- a/app/models/exercise.rb +++ b/app/models/exercise.rb @@ -44,7 +44,7 @@ class Exercise < ApplicationRecord def average_percentage if average_score and maximum_score != 0.0 and submissions.exists?(cause: 'submit') - (average_score / maximum_score * 100).round + (average_score / maximum_score * 100).round(2) else 0 end diff --git a/app/views/exercise_collections/statistics.html.slim b/app/views/exercise_collections/statistics.html.slim index 74c9f49d..acb0c57f 100644 --- a/app/views/exercise_collections/statistics.html.slim +++ b/app/views/exercise_collections/statistics.html.slim @@ -15,3 +15,27 @@ h1 = @exercise_collection .legend-entry div(class="box #{klass}") .box-label = label + +h4.mt-4 = t('activerecord.attributes.exercise_collections.exercises') +.table-responsive#exercise-list + table.table + thead + tr + th = '#' + th = t('activerecord.attributes.exercise.title') + th = t('activerecord.attributes.exercise.number_of_users') + th = t('activerecord.attributes.exercise.distinct_final_submissions') + th = t('activerecord.attributes.exercise.finishing_rate') + th = t('activerecord.attributes.exercise.average_score_percentage') + th = t('shared.actions') + tbody + - @exercise_collection.items.sort_by{|item| item.position}.each do |exercise_collection_item| + - exercise = exercise_collection_item.exercise + tr + td = exercise_collection_item.position + td = link_to_if(policy(exercise).show?, exercise.title, exercise) + td = exercise.users.distinct.count + td = exercise.submissions.send(:final).distinct.count(:user_id) + td = finishers_percentage = exercise.users.distinct.count == 0 ? 0 : (100.0 / exercise.users.distinct.count * exercise.finishers.count).round(2) + td = exercise.average_percentage + td = link_to(t('shared.statistics'), statistics_exercise_path(exercise), 'data-turbolinks' => "false") if policy(exercise).statistics? \ No newline at end of file diff --git a/config/locales/de.yml b/config/locales/de.yml index 66f1fbd7..6756719c 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -23,8 +23,11 @@ de: testing_framework: Testing-Framework user: Autor exercise: + average_score_percentage: "Durchschnittlicher %Score" description: Beschreibung + distinct_final_submissions: "Endgültige Abgaben" embedding_parameters: Parameter für LTI-Einbettung + finishing_rate: "Abschlussquote" tags: Tags execution_environment: Ausführungsumgebung execution_environment_id: Ausführungsumgebung @@ -32,6 +35,7 @@ de: hide_file_tree: Dateibaum verstecken instructions: Anweisungen maximum_score: Erreichbare Punktzahl + number_of_users: "#Users" public: Öffentlich selection: Ausgewählt title: Titel diff --git a/config/locales/en.yml b/config/locales/en.yml index 617da065..b1173a70 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -23,8 +23,11 @@ en: testing_framework: Testing Framework user: Author exercise: + average_score_percentage: "Average Score Percentage" description: Description + distinct_final_submissions: "Distinct Final Submissions" embedding_parameters: LTI Embedding Parameters + finishing_rate: "Finishing Rate" tags: Tags execution_environment: Execution Environment execution_environment_id: Execution Environment @@ -32,6 +35,7 @@ en: hide_file_tree: Hide File Tree instructions: Instructions maximum_score: Maximum Score + number_of_users: "#Users" public: Public selection: Selected title: Title