Commit 87288c32 authored by Jakob Moser's avatar Jakob Moser
Browse files

Use exercise instead of exerciseIndex in even more functions

parent 918debb4
Loading
Loading
Loading
Loading
+14 −15
Changes for static/js/yalikejazz.mjs: 14 added lines, 15 removed lines.
Original line number Diff line number Diff line
@@ -3,16 +3,16 @@ import { pooltest } from "./exercises.mjs"
import { getHandInToken } from "./snakeoil.mjs"
import { createExerciseCard, displayAsSolved, displayAsNonCurrent, displayAsCurrent } from "./exercises.cards.mjs"

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

        return nextUnsolvedExerciseIndex
        return pooltest.exercises[nextUnsolvedExerciseIndex]
    }
}

@@ -25,7 +25,7 @@ function createAndInitExerciseCard(exercise) {
    const cardEl = createExerciseCard(exercise, () => {
        if (!currentState.solvedExercises.includes(exercise.index) && currentState.exerciseIndex !== exercise.index) {
            // Only skip to exercises that are not solved and aren't itself
            startExercise(exercise.index)
            startExercise(exercise)
        }
    })

@@ -45,27 +45,26 @@ function initExerciseList() {
}

/**
 * Start an exercise with the given index, also updating the currentState
 * @param {Number} exerciseIndex Index of the exercise to start
 * Start an exercise, also updating the currentState
 * @param {Exercise} exercise Exercise to start
 */
function startExercise(exerciseIndex) {
    const cardEl = document.querySelector(`.exercise[data-exercise-index='${exerciseIndex}']`)
    const exercise = pooltest.exercises[exerciseIndex]
function startExercise(exercise) {
    const cardEl = document.querySelector(`.exercise[data-exercise-index='${exercise.index}']`)

    currentState.exerciseIndex = exerciseIndex
    currentState.exerciseIndex = exercise.index
    exercise.onDescribed(description => cardEl.querySelector(".description").textContent = description)
    exercise.onVerified(
        success => {
            if (success) {
                currentState.markAsSolved(exerciseIndex)
                currentState.markAsSolved(exercise.index)
                displayAsSolved(cardEl)

                const nextExerciseIndex = findNextUnsolvedExerciseIndex(exerciseIndex)
                const nextExercise = findNextUnsolvedExercise()

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

            } else {
@@ -119,7 +118,7 @@ export function main() {
    initActionLinks()

    // If there is no current exercise, start with the first one.
    startExercise(currentState.exerciseIndex || 0)
    startExercise(pooltest.exercises[currentState.exerciseIndex || 0])
}

window.onload = main