Add new style for linter and allow 0 points

This commit is contained in:
Sebastian Serth
2020-10-15 16:22:37 +02:00
parent be3ec82bd4
commit 799e37f9ae
6 changed files with 37 additions and 10 deletions

View File

@ -90,7 +90,9 @@ var CodeOceanEditor = {
},
getCardClass: function (result) {
if (result.stderr && !result.score) {
if (result.file_role === 'teacher_defined_linter') {
return 'card bg-info text-white'
} else if (result.stderr && !result.score) {
return 'card bg-danger text-white';
} else if (result.score < 1) {
return 'card bg-warning text-white';
@ -428,8 +430,13 @@ var CodeOceanEditor = {
card.find('.card-title .number').text(index + 1);
card.find('.row .col-sm-9').eq(0).find('.number').eq(0).text(result.passed);
card.find('.row .col-sm-9').eq(0).find('.number').eq(1).text(result.count);
card.find('.row .col-sm-9').eq(1).find('.number').eq(0).text(parseFloat((result.score * result.weight).toFixed(2)));
card.find('.row .col-sm-9').eq(1).find('.number').eq(1).text(result.weight);
if (result.weight !== 0) {
card.find('.row .col-sm-9').eq(1).find('.number').eq(0).text(parseFloat((result.score * result.weight).toFixed(2)));
card.find('.row .col-sm-9').eq(1).find('.number').eq(1).text(result.weight);
} else {
// Hide score row if no score could be achieved
card.find('.attribute-row.row').eq(1).addClass('d-none');
}
card.find('.row .col-sm-9').eq(2).html(result.message);
// Add error message from code to card

View File

@ -48,7 +48,12 @@ CodeOceanEditorEvaluation = {
printScoringResult: function (result, index) {
$('#results').show();
var card = $('#dummies').children().first().clone();
let card;
if (result.file_role === 'teacher_defined_linter') {
card = $('#linter-dummies').children().first().clone();
} else {
card = $('#test-dummies').children().first().clone();
}
if (card.isPresent()) {
// the card won't be present if @embed_options[:hide_test_results] == true
this.populateCard(card, result, index);
@ -58,7 +63,7 @@ CodeOceanEditorEvaluation = {
printScoringResults: function (response) {
$('#results ul').first().html('');
$('.test-count .number').html(response.length);
$('.test-count .number').html(response.filter(function(x) { return x.file_role === 'teacher_defined_test'; }).length);
this.clearOutput();
_.each(response, function (result, index) {

View File

@ -12,16 +12,25 @@ div.h-100 id='output_sidebar_uncollapsed' class='d-none col-sm-12 enforce-bottom
p.test-count == t('exercises.implement.test_count', count: 0)
- unless @embed_options[:hide_test_results]
ul.list-unstyled
ul#dummies.d-none.list-unstyled
ul#test-dummies.d-none.list-unstyled
li.card.mt-2
.card-header.py-2
h5.card-title.m-0 == t('exercises.implement.file', filename: '', number: 0)
h5.card-title.m-0 == t('exercises.implement.test_file', filename: '', number: 0)
.card-body.bg-white.text-dark
= row(label: 'exercises.implement.passed_tests', value: t('shared.out_of', maximum_value: 0, value: 0).html_safe)
= row(label: 'activerecord.attributes.submission.score', value: t('shared.out_of', maximum_value: 0, value: 0).html_safe)
= row(label: 'exercises.implement.feedback')
= row(label: 'exercises.implement.error_messages')
/= row(label: 'exercises.implement.output', value: link_to(t('shared.show'), '#'))
ul#linter-dummies.d-none.list-unstyled
li.card.mt-2
.card-header.py-2
h5.card-title.m-0 == t('exercises.implement.linter_file', filename: '', number: 0)
.card-body.bg-white.text-dark
= row(label: 'exercises.implement.code_rating', value: t('shared.out_of', maximum_value: 0, value: 0).html_safe)
= row(label: 'activerecord.attributes.submission.score', value: t('shared.out_of', maximum_value: 0, value: 0).html_safe)
= row(label: 'exercises.implement.feedback')
= row(label: 'exercises.implement.messages')
#score data-maximum-score=@exercise.maximum_score data-score=@exercise.final_submission(@current_user).try(:score)
h4
span == "#{t('activerecord.attributes.submission.score')}:&nbsp;"

View File

@ -44,5 +44,5 @@ li.card.mt-2
.help-block.form-text = t('.hints.feedback_message')
.form-group
= f.label(:role, t('activerecord.attributes.file.weight'))
= f.number_field(:weight, class: 'form-control', min: 1, step: 'any')
= f.number_field(:weight, class: 'form-control', min: 0, step: 'any')
= render('code_field', attribute: :content, form: f, label: t('activerecord.attributes.file.content'))

View File

@ -368,14 +368,17 @@ de:
title: Ihr Browser wird nicht unterstützt!
default_feedback: Sehr gut. Alle Tests waren erfolgreich.
error_messages: Fehlermeldungen
messages: Meldungen
feedback: Feedback
file: 'Test-Datei <span class="number">%{number}</span> (<span class="filename">%{filename}</span>)'
test_file: 'Test-Datei <span class="number">%{number}</span> (<span class="filename">%{filename}</span>)'
linter_file: 'Linter-Feedback (ohne Punkte)<span class="number d-none">%{number}</span><span class="filename d-none">%{filename}</span>'
hint: Tipp
no_files: Die Aufgabe umfasst noch keine sichtbaren Dateien.
no_output: Die letzte Code-Ausführung terminierte am %{timestamp} ohne Ausgabe.
no_output_yet: Bisher existiert noch keine Ausgabe.
output: Programm-Ausgabe
passed_tests: Erfolgreiche Tests
code_rating: Code-Stil
progress: Fortschritt
results: Ergebnisse
start: Mit dem Programmieren beginnen

View File

@ -368,14 +368,17 @@ en:
title: Your browser is not supported!
default_feedback: Well done. All tests have been passed.
error_messages: Error Messages
messages: Messages
feedback: Feedback
file: 'Test File <span class="number">%{number}</span> (<span class="filename">%{filename}</span>)'
test_file: 'Test File <span class="number">%{number}</span> (<span class="filename">%{filename}</span>)'
linter_file: 'Linter Feedback (not graded)<span class="number d-none">%{number}</span><span class="filename d-none">%{filename}</span>'
hint: Hint
no_files: The exercise does not comprise visible files yet.
no_output: The last code run finished on %{timestamp} without any output.
no_output_yet: There is no output yet.
output: Program Output
passed_tests: Passed Tests
code_rating: Code Rating
progress: Progress
results: Results
start: Start Coding