let questions = []; let currentIndex = 0; let userAnswers = []; let startTime; document.getElementById('start-session').addEventListener('click', async () => { const file = document.getElementById('file').value; if (!file) return alert("Please select a file"); const response = await fetch('/load_questions', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ file_name: file }) }); questions = await response.json(); userAnswers = Array(questions.length).fill([]); startQuiz(); }); function startQuiz() { document.getElementById('file-selection').style.display = 'none'; document.getElementById('quiz-container').style.display = 'block'; startTime = Date.now(); displayQuestion(); setInterval(updateTimer, 1000); } function displayQuestion() { const question = questions[currentIndex]; document.getElementById('question').innerText = question.question; const optionsDiv = document.getElementById('options'); optionsDiv.innerHTML = ''; question.options.forEach((option, i) => { const btn = document.createElement('button'); btn.innerText = option; btn.className = userAnswers[currentIndex].includes(i) ? 'selected' : ''; btn.addEventListener('click', () => selectAnswer(i)); optionsDiv.appendChild(btn); }); } function selectAnswer(optionIndex) { const currentAnswers = userAnswers[currentIndex]; if (currentAnswers.includes(optionIndex)) { userAnswers[currentIndex] = currentAnswers.filter(i => i !== optionIndex); } else { userAnswers[currentIndex].push(optionIndex); } displayQuestion(); } document.getElementById('next').addEventListener('click', () => { currentIndex = Math.min(currentIndex + 1, questions.length - 1); displayQuestion(); }); document.getElementById('prev').addEventListener('click', () => { currentIndex = Math.max(currentIndex - 1, 0); displayQuestion(); }); document.getElementById('end-session').addEventListener('click', async () => { const response = await fetch('/submit_results', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ questions, user_answers: userAnswers }) }); const result = await response.json(); document.getElementById('quiz-container').style.display = 'none'; document.getElementById('results-container').style.display = 'block'; document.getElementById('score').innerText = `Your score: ${result.score.toFixed(2)}%`; }); function updateTimer() { const elapsedTime = Math.floor((Date.now() - startTime) / 1000); document.getElementById('timer').innerText = `Time: ${elapsedTime}s`; }