Skip to content

Commit 1348f45

Browse files
committed
fix grading of exercises with subexercises
1 parent 3bd45f2 commit 1348f45

3 files changed

Lines changed: 21 additions & 3 deletions

File tree

client/src/model/Grading.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ export class Grading implements Modify<IGrading, Modified> {
7272
let sum = this.additionalPoints ?? 0;
7373

7474
for (const [, doc] of this.exerciseGradings) {
75-
sum += doc.points;
75+
sum += doc.totalPoints;
7676
}
7777

7878
return sum;

server/src/database/entities/grading.entity.ts

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,21 @@ export class ExerciseGrading {
4242
this.points = points;
4343
}
4444

45+
/**
46+
* @returns Sum of all points of all subExercises, points of this exercise grading
47+
* and the `additionalPoints` of this exercise grading.
48+
*/
49+
get totalPoints(): number {
50+
if (this.subExercisePoints.size > 0) {
51+
return (
52+
(this.additionalPoints ?? 0) +
53+
[...this.subExercisePoints.values()].reduce((sum, points) => sum + points, 0)
54+
);
55+
} else {
56+
return this.points + (this.additionalPoints ?? 0);
57+
}
58+
}
59+
4560
getGradingForSubExercise(subEx: SubExercise): number | undefined {
4661
return this.subExercisePoints.get(subEx.id);
4762
}
@@ -112,7 +127,10 @@ export class Grading {
112127
get points(): number {
113128
const additional = this.additionalPoints ?? 0;
114129

115-
return additional + this.exerciseGradings.reduce((sum, grading) => sum + grading.points, 0);
130+
return (
131+
additional +
132+
this.exerciseGradings.reduce((sum, grading) => sum + grading.totalPoints, 0)
133+
);
116134
}
117135

118136
get handIn(): HandIn {

server/src/module/markdown/markdown.service.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -259,7 +259,7 @@ export class MarkdownService {
259259
pointInfo.total.must += total.must;
260260
pointInfo.total.bonus += total.bonus;
261261

262-
const achieved = gradingForExercise?.points ?? 0;
262+
const achieved = gradingForExercise?.totalPoints ?? 0;
263263
const exMaxPoints = convertExercisePointInfoToString(total);
264264
const subExTable = gradingForExercise
265265
? this.generateSubExerciseTable({

0 commit comments

Comments
 (0)