Add new style for linter and allow 0 points
This commit is contained in:
@ -90,7 +90,9 @@ var CodeOceanEditor = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
getCardClass: function (result) {
|
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';
|
return 'card bg-danger text-white';
|
||||||
} else if (result.score < 1) {
|
} else if (result.score < 1) {
|
||||||
return 'card bg-warning text-white';
|
return 'card bg-warning text-white';
|
||||||
@ -428,8 +430,13 @@ var CodeOceanEditor = {
|
|||||||
card.find('.card-title .number').text(index + 1);
|
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(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(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)));
|
if (result.weight !== 0) {
|
||||||
card.find('.row .col-sm-9').eq(1).find('.number').eq(1).text(result.weight);
|
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);
|
card.find('.row .col-sm-9').eq(2).html(result.message);
|
||||||
|
|
||||||
// Add error message from code to card
|
// Add error message from code to card
|
||||||
|
@ -48,7 +48,12 @@ CodeOceanEditorEvaluation = {
|
|||||||
|
|
||||||
printScoringResult: function (result, index) {
|
printScoringResult: function (result, index) {
|
||||||
$('#results').show();
|
$('#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()) {
|
if (card.isPresent()) {
|
||||||
// the card won't be present if @embed_options[:hide_test_results] == true
|
// the card won't be present if @embed_options[:hide_test_results] == true
|
||||||
this.populateCard(card, result, index);
|
this.populateCard(card, result, index);
|
||||||
@ -58,7 +63,7 @@ CodeOceanEditorEvaluation = {
|
|||||||
|
|
||||||
printScoringResults: function (response) {
|
printScoringResults: function (response) {
|
||||||
$('#results ul').first().html('');
|
$('#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();
|
this.clearOutput();
|
||||||
|
|
||||||
_.each(response, function (result, index) {
|
_.each(response, function (result, index) {
|
||||||
|
@ -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)
|
p.test-count == t('exercises.implement.test_count', count: 0)
|
||||||
- unless @embed_options[:hide_test_results]
|
- unless @embed_options[:hide_test_results]
|
||||||
ul.list-unstyled
|
ul.list-unstyled
|
||||||
ul#dummies.d-none.list-unstyled
|
ul#test-dummies.d-none.list-unstyled
|
||||||
li.card.mt-2
|
li.card.mt-2
|
||||||
.card-header.py-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
|
.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: '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: '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.feedback')
|
||||||
= row(label: 'exercises.implement.error_messages')
|
= row(label: 'exercises.implement.error_messages')
|
||||||
/= row(label: 'exercises.implement.output', value: link_to(t('shared.show'), '#'))
|
/= 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)
|
#score data-maximum-score=@exercise.maximum_score data-score=@exercise.final_submission(@current_user).try(:score)
|
||||||
h4
|
h4
|
||||||
span == "#{t('activerecord.attributes.submission.score')}: "
|
span == "#{t('activerecord.attributes.submission.score')}: "
|
||||||
|
@ -44,5 +44,5 @@ li.card.mt-2
|
|||||||
.help-block.form-text = t('.hints.feedback_message')
|
.help-block.form-text = t('.hints.feedback_message')
|
||||||
.form-group
|
.form-group
|
||||||
= f.label(:role, t('activerecord.attributes.file.weight'))
|
= 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'))
|
= render('code_field', attribute: :content, form: f, label: t('activerecord.attributes.file.content'))
|
||||||
|
@ -368,14 +368,17 @@ de:
|
|||||||
title: Ihr Browser wird nicht unterstützt!
|
title: Ihr Browser wird nicht unterstützt!
|
||||||
default_feedback: Sehr gut. Alle Tests waren erfolgreich.
|
default_feedback: Sehr gut. Alle Tests waren erfolgreich.
|
||||||
error_messages: Fehlermeldungen
|
error_messages: Fehlermeldungen
|
||||||
|
messages: Meldungen
|
||||||
feedback: Feedback
|
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
|
hint: Tipp
|
||||||
no_files: Die Aufgabe umfasst noch keine sichtbaren Dateien.
|
no_files: Die Aufgabe umfasst noch keine sichtbaren Dateien.
|
||||||
no_output: Die letzte Code-Ausführung terminierte am %{timestamp} ohne Ausgabe.
|
no_output: Die letzte Code-Ausführung terminierte am %{timestamp} ohne Ausgabe.
|
||||||
no_output_yet: Bisher existiert noch keine Ausgabe.
|
no_output_yet: Bisher existiert noch keine Ausgabe.
|
||||||
output: Programm-Ausgabe
|
output: Programm-Ausgabe
|
||||||
passed_tests: Erfolgreiche Tests
|
passed_tests: Erfolgreiche Tests
|
||||||
|
code_rating: Code-Stil
|
||||||
progress: Fortschritt
|
progress: Fortschritt
|
||||||
results: Ergebnisse
|
results: Ergebnisse
|
||||||
start: Mit dem Programmieren beginnen
|
start: Mit dem Programmieren beginnen
|
||||||
|
@ -368,14 +368,17 @@ en:
|
|||||||
title: Your browser is not supported!
|
title: Your browser is not supported!
|
||||||
default_feedback: Well done. All tests have been passed.
|
default_feedback: Well done. All tests have been passed.
|
||||||
error_messages: Error Messages
|
error_messages: Error Messages
|
||||||
|
messages: Messages
|
||||||
feedback: Feedback
|
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
|
hint: Hint
|
||||||
no_files: The exercise does not comprise visible files yet.
|
no_files: The exercise does not comprise visible files yet.
|
||||||
no_output: The last code run finished on %{timestamp} without any output.
|
no_output: The last code run finished on %{timestamp} without any output.
|
||||||
no_output_yet: There is no output yet.
|
no_output_yet: There is no output yet.
|
||||||
output: Program Output
|
output: Program Output
|
||||||
passed_tests: Passed Tests
|
passed_tests: Passed Tests
|
||||||
|
code_rating: Code Rating
|
||||||
progress: Progress
|
progress: Progress
|
||||||
results: Results
|
results: Results
|
||||||
start: Start Coding
|
start: Start Coding
|
||||||
|
Reference in New Issue
Block a user