grading
Version:
Grading of student submissions, in particular programming tests.
113 lines • 4.93 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.toTable = void 0;
const table_1 = require("../table");
function firstUpper(s) {
if (!s) {
return "";
}
if (s.length == 1) {
return s.toUpperCase;
}
return s.charAt(0).toUpperCase() + s.slice(1);
}
function toTable(results, gradingSchema) {
const table = new table_1.Table([[
"term", "course", "exam",
"submissionID", "name",
"submitted",
"grade", "points", "rawPoints", "coveragePoints",
"coverage",
"studentTests",
"graded",
"correction"
]]);
let row = 1;
table.addTextToRow(row, "skippedMsg");
results.studentResults.forEach(studentResult => {
row++;
table.setAt("term", row, gradingSchema.term);
table.setAt("course", row, gradingSchema.course);
table.setAt("exam", row, gradingSchema.exam);
table.setAt("submissionID", row, studentResult.submissionId);
table.setAt("name", row, studentResult.userName);
if (studentResult.noSubmission) {
table.setAt("submitted", row, "0");
return;
}
table.setAt("submitted", row, "1");
table.setAt("grade", row, studentResult.grade);
table.setAt("points", row, studentResult.points);
table.setAt("rawPoints", row, studentResult.pointsRaw);
table.setAt("coveragePoints", row, studentResult.pointsCoverage);
if (studentResult.coverageResult.skipped()) {
table.setAt("coverage", row, -1);
table.concatAt("skippedMsg", row, studentResult.coverageResult.skipMessage);
}
else {
table.setAt("coverage", row, studentResult.coverageResult.stmtCoverage);
}
if (studentResult.userTests) {
table.setAt("studentTests", row, studentResult.userTestsCount);
// table.setAt("eigeneTestsSuccess", row, ergStudent.userTestsSuccess);
// table.setAt("eigeneTestsFailure", row, ergStudent.userTestsFailureOrError);
// table.setAt("eigeneTestsCount", row, ergStudent.userTestsCount);
}
else {
table.setAt("studentTests", row, 0);
}
if (studentResult.comment.length > 0) {
table.concatAt("skippedMsg", row, studentResult.comment);
}
if (studentResult.skipped()) {
table.setAt("graded", row, -1);
table.concatAt("skippedMsg", row, studentResult.skipMessage);
}
else {
table.setAt("graded", row, 1);
studentResult.manualCorrection.forEach(correction => {
table.concatAt("correction", row, `${correction.reason} (${correction.points})`);
});
studentResult.taskResults.forEach(taskResult => {
const name = taskResult.name;
// table.setAt(name + "Precondition", row, ergAufgabe.precondition);
// table.setAt(name + "points", row, ergAufgabe.points);
if (taskResult.skipped()) {
// table.setAt(name + "Bewertet", row, 0);
table.concatAt("skippedMsg", row, taskResult.skipMessage);
}
else {
// table.setAt(name + "Bewertet", row, 1);
// let bewSuccess = 0;
// let bewFailure = 0;
// let bewNotFound = 0;
taskResult.gradingResults.forEach(gradingResult => {
if (gradingResult.skipped()) {
// table.setAt(name + "Bewertet", row, 0);
table.concatAt("skippedMsg", row, gradingResult.skipMessage);
}
else {
// ergBew.testResults.forEach(test => {
// switch (test.testStatus) {
// case "error":
// case "failure": bewFailure++; break;
// case "success": bewSuccess++; break;
// case "notFound": bewNotFound++; break;
// }
// })
}
});
// table.setAt(name + "Success", row, bewSuccess);
// table.setAt(name + "Failure", row, bewFailure);
// table.setAt(name + "NotFound", row, bewNotFound);
}
taskResult.manualCorrections.forEach(correction => {
table.concatAt("correction", row, `${name}: ${correction.reason} (${correction.points})`);
});
});
}
});
return table;
}
exports.toTable = toTable;
//# sourceMappingURL=results2csv.js.map
;