From 2dcaf9d155c0cfc65d9579cf4cb01c8931aebd0a Mon Sep 17 00:00:00 2001 From: Maximilian Grundke Date: Mon, 20 Nov 2017 14:45:42 +0100 Subject: [PATCH 1/7] Show feedback creation date alongside username --- app/assets/stylesheets/exercises.css.scss | 11 +++++++++++ app/views/exercises/feedback.html.slim | 7 ++++--- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/app/assets/stylesheets/exercises.css.scss b/app/assets/stylesheets/exercises.css.scss index e46d59af..1b3aca62 100644 --- a/app/assets/stylesheets/exercises.css.scss +++ b/app/assets/stylesheets/exercises.css.scss @@ -95,6 +95,17 @@ a.file-heading { left: 0; } +.feedback-header { + display: flex; + + .username { + flex-grow: 1; + font-weight: bold; + } + + .date {} +} + .feedback { .text { margin-bottom: 10px; diff --git a/app/views/exercises/feedback.html.slim b/app/views/exercises/feedback.html.slim index 07b88167..7fcadc02 100644 --- a/app/views/exercises/feedback.html.slim +++ b/app/views/exercises/feedback.html.slim @@ -1,11 +1,12 @@ h1 = @exercise -ul.list-unstyled.panel-group#files +ul.list-unstyled.panel-group - @feedbacks.each do |feedback| li.panel.panel-default .panel-heading role="tab" id="heading" - div.clearfix - span = feedback.user.name + div.clearfix.feedback-header + span.username = feedback.user.name + span.date = feedback.created_at .panel-collapse role="tabpanel" .panel-body.feedback .text = feedback.feedback_text From 762a8233abae68b8de81d6f54ac2a6ec2e2cfd15 Mon Sep 17 00:00:00 2001 From: Maximilian Grundke Date: Mon, 20 Nov 2017 14:48:13 +0100 Subject: [PATCH 2/7] Link to exercise and show exercise description --- app/views/exercises/feedback.html.slim | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/views/exercises/feedback.html.slim b/app/views/exercises/feedback.html.slim index 7fcadc02..bd795872 100644 --- a/app/views/exercises/feedback.html.slim +++ b/app/views/exercises/feedback.html.slim @@ -1,4 +1,5 @@ -h1 = @exercise +h1 = link_to(@exercise) += row(label: 'exercise.description', value: render_markdown(@exercise.description)) ul.list-unstyled.panel-group - @feedbacks.each do |feedback| From a9439a4df5d0f6fb1fc8c645b5bba2152d51cbd6 Mon Sep 17 00:00:00 2001 From: Maximilian Grundke Date: Mon, 20 Nov 2017 15:01:34 +0100 Subject: [PATCH 3/7] Message for no feedback --- app/views/exercises/feedback.html.slim | 3 +++ config/locales/de.yml | 1 + config/locales/en.yml | 1 + 3 files changed, 5 insertions(+) diff --git a/app/views/exercises/feedback.html.slim b/app/views/exercises/feedback.html.slim index bd795872..5d2dcc8b 100644 --- a/app/views/exercises/feedback.html.slim +++ b/app/views/exercises/feedback.html.slim @@ -1,6 +1,9 @@ h1 = link_to(@exercise) = row(label: 'exercise.description', value: render_markdown(@exercise.description)) +- if @feedbacks.nil? or @feedbacks.size == 0 + .no-feedback = t('user_exercise_feedback.no_feedback') + ul.list-unstyled.panel-group - @feedbacks.each do |feedback| li.panel.panel-default diff --git a/config/locales/de.yml b/config/locales/de.yml index e4322037..ce03d90f 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -662,6 +662,7 @@ de: estimated_time_20_to_30: "zwischen 20 und 30 Minuten" estimated_time_more_30: "mehr als 30 Minuten" working_time: "Geschätze Bearbeitungszeit für diese Aufgabe:" + no_feedback: "Es wurde noch kein Feedback zu dieser Aufgabe gegeben." error_templates: hints: signature: "Ein regulärer Ausdruck in Ruby-Syntax und ohne führende und schließende \"/\"" diff --git a/config/locales/en.yml b/config/locales/en.yml index 242ea312..be92de5b 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -662,6 +662,7 @@ en: estimated_time_20_to_30: "between 20 and 30 minutes" estimated_time_more_30: "more than 30 minutes" working_time: "Estimated time working on this exercise:" + no_feedback: "There is no feedback for this exercise yet." error_templates: hints: signature: "A regular expression in Ruby syntax without leading and trailing \"/\"" From 23a804a6eb9c4c8deadaa99235b6132095e847aa Mon Sep 17 00:00:00 2001 From: Maximilian Grundke Date: Mon, 20 Nov 2017 15:05:25 +0100 Subject: [PATCH 4/7] Link to user statistics from feedback --- app/views/exercises/feedback.html.slim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/exercises/feedback.html.slim b/app/views/exercises/feedback.html.slim index 5d2dcc8b..67472e49 100644 --- a/app/views/exercises/feedback.html.slim +++ b/app/views/exercises/feedback.html.slim @@ -9,7 +9,7 @@ ul.list-unstyled.panel-group li.panel.panel-default .panel-heading role="tab" id="heading" div.clearfix.feedback-header - span.username = feedback.user.name + span.username = link_to(feedback.user.name, statistics_external_user_exercise_path(id: @exercise.id, external_user_id: feedback.user.id)) span.date = feedback.created_at .panel-collapse role="tabpanel" .panel-body.feedback From 4d8cee6fcbb4aacedbe65cf0f991bfed9d88e1a3 Mon Sep 17 00:00:00 2001 From: Maximilian Grundke Date: Mon, 20 Nov 2017 19:26:14 +0100 Subject: [PATCH 5/7] Add timestamps to user exercise feedback --- ...d_timestamps_to_user_exercise_feedbacks.rb | 6 +++++ db/schema.rb | 25 +++++++++++-------- 2 files changed, 20 insertions(+), 11 deletions(-) create mode 100644 db/migrate/20171120153705_add_timestamps_to_user_exercise_feedbacks.rb diff --git a/db/migrate/20171120153705_add_timestamps_to_user_exercise_feedbacks.rb b/db/migrate/20171120153705_add_timestamps_to_user_exercise_feedbacks.rb new file mode 100644 index 00000000..4529d527 --- /dev/null +++ b/db/migrate/20171120153705_add_timestamps_to_user_exercise_feedbacks.rb @@ -0,0 +1,6 @@ +class AddTimestampsToUserExerciseFeedbacks < ActiveRecord::Migration + def up + add_column :user_exercise_feedbacks, :created_at, :datetime, null: false, default: Time.now + add_column :user_exercise_feedbacks, :updated_at, :datetime, null: false, default: Time.now + end +end diff --git a/db/schema.rb b/db/schema.rb index 818030b1..2c0c1314 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20171002131135) do +ActiveRecord::Schema.define(version: 20171120153705) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -104,6 +104,7 @@ ActiveRecord::Schema.define(version: 20171002131135) do t.string "name" t.datetime "created_at" t.datetime "updated_at" + t.boolean "use_anomaly_detection", default: false end create_table "exercise_collections_exercises", id: false, force: :cascade do |t| @@ -123,14 +124,14 @@ ActiveRecord::Schema.define(version: 20171002131135) do create_table "exercises", force: :cascade do |t| t.text "description" t.integer "execution_environment_id" - t.string "title", limit: 255 + t.string "title", limit: 255 t.datetime "created_at" t.datetime "updated_at" t.integer "user_id" t.text "instructions" t.boolean "public" - t.string "user_type", limit: 255 - t.string "token", limit: 255 + t.string "user_type", limit: 255 + t.string "token", limit: 255 t.boolean "hide_file_tree" t.boolean "allow_file_creation" t.boolean "allow_auto_completion", default: false @@ -347,13 +348,15 @@ ActiveRecord::Schema.define(version: 20171002131135) do end create_table "user_exercise_feedbacks", force: :cascade do |t| - t.integer "exercise_id", null: false - t.integer "user_id", null: false - t.string "user_type", null: false - t.integer "difficulty" - t.integer "working_time_seconds" - t.string "feedback_text" - t.integer "user_estimated_worktime" + t.integer "exercise_id", null: false + t.integer "user_id", null: false + t.string "user_type", null: false + t.integer "difficulty" + t.integer "working_time_seconds" + t.string "feedback_text" + t.integer "user_estimated_worktime" + t.datetime "created_at", default: '2017-11-20 18:20:25', null: false + t.datetime "updated_at", default: '2017-11-20 18:20:25', null: false end create_table "user_exercise_interventions", force: :cascade do |t| From 34b2bf9eb184f3fe46bb9b55e5caa0ca9fe99281 Mon Sep 17 00:00:00 2001 From: Maximilian Grundke Date: Wed, 22 Nov 2017 13:22:10 +0100 Subject: [PATCH 6/7] Fix styling and link to exercise --- app/assets/stylesheets/exercises.css.scss | 48 ++++++++++++++++------- app/views/exercises/feedback.html.slim | 38 ++++++++++-------- 2 files changed, 54 insertions(+), 32 deletions(-) diff --git a/app/assets/stylesheets/exercises.css.scss b/app/assets/stylesheets/exercises.css.scss index 1b3aca62..2ef110d7 100644 --- a/app/assets/stylesheets/exercises.css.scss +++ b/app/assets/stylesheets/exercises.css.scss @@ -95,25 +95,43 @@ a.file-heading { left: 0; } -.feedback-header { - display: flex; - - .username { - flex-grow: 1; +.feedback-page { + .header { font-weight: bold; - } - - .date {} -} - -.feedback { - .text { margin-bottom: 10px; } - .difficulty { - font-weight: bold; + + .value { + border: 1px solid grey; + padding: 10px; + margin-bottom: 10px; } - .worktime { + + .no-feedback { font-weight: bold; + margin-top: 50px; + } + + .feedback-header { + display: flex; + + .username { + flex-grow: 1; + font-weight: bold; + } + + .date {} + } + + .feedback { + .text { + margin-bottom: 10px; + } + .difficulty { + font-weight: bold; + } + .worktime { + font-weight: bold; + } } } diff --git a/app/views/exercises/feedback.html.slim b/app/views/exercises/feedback.html.slim index 67472e49..3cdbc30f 100644 --- a/app/views/exercises/feedback.html.slim +++ b/app/views/exercises/feedback.html.slim @@ -1,20 +1,24 @@ -h1 = link_to(@exercise) -= row(label: 'exercise.description', value: render_markdown(@exercise.description)) +h1 = link_to(@exercise, exercise_path(@exercise)) -- if @feedbacks.nil? or @feedbacks.size == 0 - .no-feedback = t('user_exercise_feedback.no_feedback') +.feedback-page + .header = t('activerecord.attributes.exercise.description') + .value = render_markdown(@exercise.description) -ul.list-unstyled.panel-group - - @feedbacks.each do |feedback| - li.panel.panel-default - .panel-heading role="tab" id="heading" - div.clearfix.feedback-header - span.username = link_to(feedback.user.name, statistics_external_user_exercise_path(id: @exercise.id, external_user_id: feedback.user.id)) - span.date = feedback.created_at - .panel-collapse role="tabpanel" - .panel-body.feedback - .text = feedback.feedback_text - .difficulty = "#{t('user_exercise_feedback.difficulty')} #{feedback.difficulty}" if feedback.difficulty - .worktime = "#{t('user_exercise_feedback.working_time')} #{feedback.user_estimated_worktime}" if feedback.user_estimated_worktime + .header = t('activerecord.models.user_exercise_feedback.other') + - if @feedbacks.nil? or @feedbacks.size == 0 + .no-feedback = t('user_exercise_feedback.no_feedback') -= render('shared/pagination', collection: @feedbacks) + ul.list-unstyled.panel-group + - @feedbacks.each do |feedback| + li.panel.panel-default + .panel-heading role="tab" id="heading" + div.clearfix.feedback-header + span.username = link_to(feedback.user.name, statistics_external_user_exercise_path(id: @exercise.id, external_user_id: feedback.user.id)) + span.date = feedback.created_at + .panel-collapse role="tabpanel" + .panel-body.feedback + .text = feedback.feedback_text + .difficulty = "#{t('user_exercise_feedback.difficulty')} #{feedback.difficulty}" if feedback.difficulty + .worktime = "#{t('user_exercise_feedback.working_time')} #{feedback.user_estimated_worktime}" if feedback.user_estimated_worktime + + = render('shared/pagination', collection: @feedbacks) From 2ed54705ff10ad627eab6c07d6252f8a620fbbdd Mon Sep 17 00:00:00 2001 From: Maximilian Grundke Date: Wed, 22 Nov 2017 14:06:33 +0100 Subject: [PATCH 7/7] Remove anomaly detection artifact from schema --- db/schema.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/db/schema.rb b/db/schema.rb index 2c0c1314..3ed07240 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -104,7 +104,6 @@ ActiveRecord::Schema.define(version: 20171120153705) do t.string "name" t.datetime "created_at" t.datetime "updated_at" - t.boolean "use_anomaly_detection", default: false end create_table "exercise_collections_exercises", id: false, force: :cascade do |t|