From 193cc6c70d176ca42569f841db5ad5f77ec0f9b2 Mon Sep 17 00:00:00 2001 From: Ralf Teusner Date: Fri, 29 Mar 2019 15:32:00 +0100 Subject: [PATCH 1/8] 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 From f89d740671e7028532fc29abf504e7fa72ceb286 Mon Sep 17 00:00:00 2001 From: Ralf Teusner Date: Fri, 29 Mar 2019 15:46:42 +0100 Subject: [PATCH 2/8] fix test --- spec/models/exercise_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/models/exercise_spec.rb b/spec/models/exercise_spec.rb index 640efd92..edfbd1cc 100644 --- a/spec/models/exercise_spec.rb +++ b/spec/models/exercise_spec.rb @@ -59,7 +59,7 @@ describe Exercise do it 'returns the average score expressed as a percentage' do maximum_percentages = exercise.submissions.group_by(&:user_id).values.map { |submission| submission.sort_by(&:score).last.score / exercise.maximum_score * 100 } - expect(exercise.average_percentage).to eq(maximum_percentages.average.round) + expect(exercise.average_percentage).to eq(maximum_percentages.average.round(2)) end end end From bdc58215b0f3fb8184a1e5cff5e6ff69fbd27354 Mon Sep 17 00:00:00 2001 From: MrSerth Date: Fri, 29 Mar 2019 15:58:19 +0100 Subject: [PATCH 3/8] Update config/locales/de.yml Co-Authored-By: rteusner --- config/locales/de.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/locales/de.yml b/config/locales/de.yml index 6756719c..fb10e407 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -35,7 +35,7 @@ de: hide_file_tree: Dateibaum verstecken instructions: Anweisungen maximum_score: Erreichbare Punktzahl - number_of_users: "#Users" + number_of_users: "# Nutzer" public: Öffentlich selection: Ausgewählt title: Titel From ad5b24080208fb90052a37fd8b0f6f8b4b9eaf61 Mon Sep 17 00:00:00 2001 From: MrSerth Date: Fri, 29 Mar 2019 15:58:29 +0100 Subject: [PATCH 4/8] Update config/locales/en.yml Co-Authored-By: rteusner --- config/locales/en.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/locales/en.yml b/config/locales/en.yml index b1173a70..a9a7c7a7 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -35,7 +35,7 @@ en: hide_file_tree: Hide File Tree instructions: Instructions maximum_score: Maximum Score - number_of_users: "#Users" + number_of_users: "# Users" public: Public selection: Selected title: Title From baec777e48f904372132585988d66c74809e77d6 Mon Sep 17 00:00:00 2001 From: MrSerth Date: Fri, 29 Mar 2019 15:59:27 +0100 Subject: [PATCH 5/8] Update app/views/exercise_collections/statistics.html.slim Co-Authored-By: rteusner --- app/views/exercise_collections/statistics.html.slim | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/views/exercise_collections/statistics.html.slim b/app/views/exercise_collections/statistics.html.slim index acb0c57f..5e9462df 100644 --- a/app/views/exercise_collections/statistics.html.slim +++ b/app/views/exercise_collections/statistics.html.slim @@ -18,7 +18,7 @@ h1 = @exercise_collection h4.mt-4 = t('activerecord.attributes.exercise_collections.exercises') .table-responsive#exercise-list - table.table + table.table.sortable thead tr th = '#' @@ -38,4 +38,4 @@ h4.mt-4 = t('activerecord.attributes.exercise_collections.exercises') 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 + td = link_to(t('shared.statistics'), statistics_exercise_path(exercise), 'data-turbolinks' => "false") if policy(exercise).statistics? From 5958523fdb8295d5b270daa2277d6b2fd4406747 Mon Sep 17 00:00:00 2001 From: MrSerth Date: Fri, 29 Mar 2019 16:00:58 +0100 Subject: [PATCH 6/8] Update app/models/exercise.rb Co-Authored-By: rteusner --- app/models/exercise.rb | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/app/models/exercise.rb b/app/models/exercise.rb index e5f1a71f..673903b6 100644 --- a/app/models/exercise.rb +++ b/app/models/exercise.rb @@ -49,6 +49,14 @@ class Exercise < ApplicationRecord 0 end end + + def finishers_percentage + if users.distinct.count != 0 + (100.0 / users.distinct.count * finishers.count).round(2) + else + 0 + end + end def average_score if submissions.exists?(cause: 'submit') From fc2a5990822c262593ff520ad0525fa04da5d59d Mon Sep 17 00:00:00 2001 From: MrSerth Date: Fri, 29 Mar 2019 16:01:03 +0100 Subject: [PATCH 7/8] Update app/views/exercise_collections/statistics.html.slim Co-Authored-By: rteusner --- app/views/exercise_collections/statistics.html.slim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/exercise_collections/statistics.html.slim b/app/views/exercise_collections/statistics.html.slim index 5e9462df..8951f326 100644 --- a/app/views/exercise_collections/statistics.html.slim +++ b/app/views/exercise_collections/statistics.html.slim @@ -36,6 +36,6 @@ h4.mt-4 = t('activerecord.attributes.exercise_collections.exercises') 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.finishers_percentage td = exercise.average_percentage td = link_to(t('shared.statistics'), statistics_exercise_path(exercise), 'data-turbolinks' => "false") if policy(exercise).statistics? From 35a32ff92760242c3b09984ffc4d1795fa838a50 Mon Sep 17 00:00:00 2001 From: MrSerth Date: Fri, 29 Mar 2019 16:02:31 +0100 Subject: [PATCH 8/8] Update config/locales/de.yml Co-Authored-By: rteusner --- config/locales/de.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/locales/de.yml b/config/locales/de.yml index fb10e407..b522a023 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -23,7 +23,7 @@ de: testing_framework: Testing-Framework user: Autor exercise: - average_score_percentage: "Durchschnittlicher %Score" + average_score_percentage: "Durchschnittliche Bewertung in Prozent" description: Beschreibung distinct_final_submissions: "Endgültige Abgaben" embedding_parameters: Parameter für LTI-Einbettung