Commit de71787a authored by Jakob Moser's avatar Jakob Moser
Browse files

Move getting next unsolved exercise to Test class

parent 87288c32
Loading
Loading
Loading
Loading
+16 −0
Changes for static/js/exercises.api.mjs: 16 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -210,6 +210,22 @@ class Test {
        this.name = name
        this.exercises = exercises
    }

    /**
     * Return the next unsolved exercise, given the current state that's given as parameter
     */
    getNextUnsolvedExercise(currentState) {
        if (currentState.solvedExercises.length === this.exercises.length) {
            return null
        } else {
            let nextUnsolvedExerciseIndex = currentState.exerciseIndex
            while (currentState.solvedExercises.includes(nextUnsolvedExerciseIndex)) {
                nextUnsolvedExerciseIndex = (nextUnsolvedExerciseIndex + 1) % this.exercises.length
            }
    
            return this.exercises[nextUnsolvedExerciseIndex]
        }
    }
}

/**
+1 −14
Changes for static/js/yalikejazz.mjs: 1 added line, 14 removed lines.
Original line number Diff line number Diff line
@@ -3,19 +3,6 @@ import { pooltest } from "./exercises.mjs"
import { getHandInToken } from "./snakeoil.mjs"
import { createExerciseCard, displayAsSolved, displayAsNonCurrent, displayAsCurrent } from "./exercises.cards.mjs"

function findNextUnsolvedExercise() {
    if (currentState.solvedExercises.length === pooltest.exercises.length) {
        return null
    } else {
        let nextUnsolvedExerciseIndex = currentState.exerciseIndex
        while (currentState.solvedExercises.includes(nextUnsolvedExerciseIndex)) {
            nextUnsolvedExerciseIndex = (nextUnsolvedExerciseIndex + 1) % pooltest.exercises.length
        }

        return pooltest.exercises[nextUnsolvedExerciseIndex]
    }
}

/**
 * Create a DOM card for the given exercise, displays is as solved if solved and inits event listeners
 * @param {Exercise} exercise The exercise
@@ -59,7 +46,7 @@ function startExercise(exercise) {
                currentState.markAsSolved(exercise.index)
                displayAsSolved(cardEl)

                const nextExercise = findNextUnsolvedExercise()
                const nextExercise = pooltest.getNextUnsolvedExercise(currentState)

                if (nextExercise === null) {
                    alert("Du hast den Pooltest erfolgreich abgeschlossen! Du kannst jetzt abgeben :)")