File size: 5,108 Bytes
cdfb731 0bcd8e4 cdfb731 0bcd8e4 19abad4 cdfb731 a2274a8 285b774 3d20c28 27db724 3d20c28 27db724 3d20c28 285b774 a2274a8 27db724 cdfb731 0bcd8e4 cdfb731 98960e8 0bcd8e4 27db724 3d20c28 27db724 3d20c28 27db724 3d20c28 27db724 3d20c28 98898c2 27db724 98898c2 27db724 3d20c28 0bcd8e4 98960e8 98898c2 98960e8 0bcd8e4 98960e8 cdfb731 0bcd8e4 98960e8 98898c2 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 |
const socket = io();
let username;
function joinQuiz() {
username = document.getElementById('username').value;
socket.emit('join', { username: username });
document.getElementById('username').style.display = 'none';
document.querySelector('button').style.display = 'none';
document.getElementById('logged-user').textContent = username;
document.getElementById('quiz-content').style.display = 'block';
document.getElementById('waiting-message').style.display = 'block';
document.getElementById('join-title').style.display = 'none';
}
function submitForm(event) {
event.preventDefault();
const selectedOption = document.querySelector('input[name="answer"]:checked');
if (selectedOption) {
const answer = selectedOption.value;
socket.emit('submit_answer', { answer });
} else {
alert("Please select an option before submitting.");
}
}
function selectExam() {
const examName = document.getElementById('exam-selector').value;
const startQuestion = document.getElementById('start-question-number').value;
document.getElementById('question-start-display').textContent = `Starting from question ${startQuestion}.`;
}
function loadQuiz() {
const examName = document.getElementById('exam-selector').value;
const startQuestion = parseInt(document.getElementById('start-question-number').value, 10);
if (!examName) {
alert("Please select an exam first.");
return;
}
socket.emit('load_quiz', { exam_name: examName, start_question: startQuestion });
}
function updateSliderValue(value) {
document.getElementById('start-question').value = value;
document.getElementById('start-question-number').value = value;
document.getElementById('question-start-display').textContent = `Starting from question ${value}.`;
}
function startQuiz() {
socket.emit('start_quiz');
}
function checkAnswers() {
socket.emit('check_answers');
}
function nextQuestion() {
socket.emit('next_question');
}
function endQuiz() {
socket.emit('end_quiz');
}
function restartQuiz() {
socket.emit('restart_quiz');
}
socket.on('quiz_loaded', (data) => {
if (data.success) {
alert(`Quiz loaded with ${data.num_questions} questions.`);
const startQuestionInput = document.getElementById('start-question');
const startQuestionNumber = document.getElementById('start-question-number');
startQuestionInput.max = data.num_questions;
startQuestionNumber.max = data.num_questions;
startQuestionInput.value = data.start_question;
startQuestionNumber.value = data.start_question;
document.getElementById('question-start-display').textContent = `Starting from question ${data.start_question}.`;
document.getElementById('start-question-label').style.display = 'block';
startQuestionInput.style.display = 'block';
startQuestionNumber.style.display = 'block';
document.getElementById('question-start-display').style.display = 'block';
} else {
alert("Failed to load quiz. Please try again.");
}
});
socket.on('new_question', (data) => {
document.getElementById('waiting-message').style.display = 'none';
document.getElementById('question-text').innerText = `Question ${data.index}: ${data.question}`;
const letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'];
const options = data.options.map((opt, index) =>
`<input type="radio" id="${letters[index]}" name="answer" value="${opt}">
<label for="${letters[index]}">${letters[index]}) ${opt}</label><br>`
).join('');
document.getElementById('options').innerHTML = options;
});
socket.on('display_results', (data) => {
const img = `<img src="data:image/png;base64,${data.chart}" alt="Results Chart" />`;
const resultText = `<p>Correct Answer: ${data.results.correct_answer}</p>`;
document.getElementById('results').innerHTML = img + resultText;
});
socket.on('enable_end_quiz', () => {
document.getElementById('end-quiz').disabled = false; // Enable the "End Quiz" button
});
socket.on('clear_results', () => {
document.getElementById('results').innerHTML = '';
});
socket.on('display_final_results', (finalResults) => {
document.getElementById('quiz-content').style.display = 'none';
const resultsTable = document.getElementById('results-table');
resultsTable.innerHTML = '';
finalResults.forEach((participant) => {
const row = `<tr><td>${participant.username}</td><td>${participant.score}</td></tr>`;
resultsTable.innerHTML += row;
});
document.getElementById('final-results').style.display = 'block';
});
socket.on('quiz_reset', () => {
document.getElementById('results').innerHTML = '';
document.getElementById('question-text').innerText = '';
document.getElementById('options').innerHTML = '';
document.getElementById('final-results').style.display = 'none';
document.getElementById('quiz-content').style.display = 'block';
document.getElementById('waiting-message').style.display = 'block';
}); |