Loading static/js/yalikejazz.mjs +16 −2 Original line number Diff line number Diff line Loading @@ -2,7 +2,8 @@ import { State } from "./state.mjs" import * as tests from "./exercises.mjs" import { createExerciseCard, displayAsSolved, displayAsNonCurrent, displayAsCurrent, displayAsVerifying, displayAsNonVerifying, displayAsUnusuallyLongVerifying } from "./exercises.cards.mjs" import { Exercise } from "./exercises.api.mjs" import { enableAutoFocus } from "./jslinux.api.mjs" import { enableAutoFocus, isVmLoading } from "./jslinux.api.mjs" import { waitFor } from "./util.mjs" const testId = new URLSearchParams(location.search).get("id") const currentTest = tests[testId] Loading Loading @@ -122,12 +123,20 @@ function initActionLinks() { }) } /** * Enables or disables all exercise action buttons * @param {boolean} enabled If all exercise action buttons should be enabled */ function setExerciseActionButtonsEnabled(enabled) { document.querySelectorAll(".exercise.card .actions button").forEach(buttonEl => buttonEl.disabled = !enabled) } function redirectToPractice() { // TODO Use something nicer based on URLSearchParams location.search = `?id=practice` } export function main() { export async function main() { if(currentTest === undefined) { // When no test can be loaded, redirect to a URL which leads to a known existing test redirectToPractice() Loading Loading @@ -159,9 +168,14 @@ export function main() { enableAutoFocus() initExerciseList() setExerciseActionButtonsEnabled(false) initActionLinks() startExercise(currentTest.getNextUnsolvedExercise(currentState)) // Enable all exercise action buttons as soon as the VM has booted await waitFor(()=>!isVmLoading()) setExerciseActionButtonsEnabled(true) } window.onload = main Loading
static/js/yalikejazz.mjs +16 −2 Original line number Diff line number Diff line Loading @@ -2,7 +2,8 @@ import { State } from "./state.mjs" import * as tests from "./exercises.mjs" import { createExerciseCard, displayAsSolved, displayAsNonCurrent, displayAsCurrent, displayAsVerifying, displayAsNonVerifying, displayAsUnusuallyLongVerifying } from "./exercises.cards.mjs" import { Exercise } from "./exercises.api.mjs" import { enableAutoFocus } from "./jslinux.api.mjs" import { enableAutoFocus, isVmLoading } from "./jslinux.api.mjs" import { waitFor } from "./util.mjs" const testId = new URLSearchParams(location.search).get("id") const currentTest = tests[testId] Loading Loading @@ -122,12 +123,20 @@ function initActionLinks() { }) } /** * Enables or disables all exercise action buttons * @param {boolean} enabled If all exercise action buttons should be enabled */ function setExerciseActionButtonsEnabled(enabled) { document.querySelectorAll(".exercise.card .actions button").forEach(buttonEl => buttonEl.disabled = !enabled) } function redirectToPractice() { // TODO Use something nicer based on URLSearchParams location.search = `?id=practice` } export function main() { export async function main() { if(currentTest === undefined) { // When no test can be loaded, redirect to a URL which leads to a known existing test redirectToPractice() Loading Loading @@ -159,9 +168,14 @@ export function main() { enableAutoFocus() initExerciseList() setExerciseActionButtonsEnabled(false) initActionLinks() startExercise(currentTest.getNextUnsolvedExercise(currentState)) // Enable all exercise action buttons as soon as the VM has booted await waitFor(()=>!isVmLoading()) setExerciseActionButtonsEnabled(true) } window.onload = main