Une erreur est survenue de notre côté
-
Brieuc Dubois a rédigéBrieuc Dubois a rédigé
languageTest.svelte 5,50 Kio
<script lang="ts">
import { sendTestEntryTaskGapfillAPI, sendTestEntryTaskQcmAPI } from '$lib/api/tests';
import { t } from '$lib/services/i18n';
import type { TestTask } from '$lib/types/tests';
import {
TestTaskQuestion,
TestTaskQuestionGapfill,
TestTaskQuestionQcm,
TestTaskQuestionQcmType
} from '$lib/types/testTaskQuestions';
import type User from '$lib/types/user';
import Gapfill from '../surveys/gapfill.svelte';
let {
languageTest,
user,
code,
rid,
study_id,
onFinish = () => {}
}: {
languageTest: TestTask;
user: User | null;
code: string | null;
rid: string | null;
study_id: number;
onFinish: Function;
} = $props();
function getSortedQuestions(questions: TestTaskQuestion[]) {
return questions.sort(() => Math.random() - 0.5);
}
let nAnswers = $state(1);
let startTime = new Date().getTime();
let currentGroupId = $state(0);
let currentGroup = $derived(languageTest.groups[currentGroupId]);
let questions = $derived(
currentGroup.randomize ? getSortedQuestions(currentGroup.questions) : currentGroup.questions
);
let currentQuestionId = $state(0);
let currentQuestion = $derived(questions[currentQuestionId]);
let currentQuestionParts = $derived(
currentQuestion instanceof TestTaskQuestionGapfill ? currentQuestion.parts : null
);
let soundPlayer: HTMLAudioElement | null = $state(null);
function setGroupId(id: number) {
currentGroupId = id;
if (currentGroup.id < 1100) {
setQuestionId(0);
}
}
function setQuestionId(id: number) {
currentQuestionId = id;
if (soundPlayer) soundPlayer.load();
nAnswers += 1;
}
async function nextGroup() {
if (currentGroupId < languageTest.groups.length - 1) {
setGroupId(currentGroupId + 1);
//special group id for end of survey questions
} else {