`;
});
elements.resultsBreakdown.innerHTML = breakdownHtml;
}
function downloadPdf() {
const { jsPDF } = window.jspdf;
const doc = new jsPDF();
doc.setFont('helvetica', 'bold');
doc.setFontSize(18);
doc.text('Reading Comprehension Report', doc.internal.pageSize.getWidth() / 2, 20, { align: 'center' });
doc.setFontSize(14);
doc.text(`Final Score: ${elements.scoreDisplay.textContent}`, doc.internal.pageSize.getWidth() / 2, 28, { align: 'center' });
let currentY = 40;
const margin = 14;
const maxWidth = doc.internal.pageSize.getWidth() - margin * 2;
doc.setFont('helvetica', 'bold');
doc.setFontSize(12);
doc.text('Original Text:', margin, currentY);
currentY += 7;
doc.setFont('helvetica', 'normal');
doc.setFontSize(10);
const originalLines = doc.splitTextToSize(sourceText, maxWidth);
doc.text(originalLines, margin, currentY);
currentY += (originalLines.length * 5) + 10;
const tableBody = lastQuizData.questions.map((q, index) => {
const isCorrect = userAnswers[index] === q.correctAnswer;
return [
index + 1,
q.question,
userAnswers[index],
isCorrect ? 'Correct' : 'Incorrect'
];
});
doc.autoTable({
startY: currentY,
head: [['#', 'Question', 'Your Answer', 'Result']],
body: tableBody,
theme: 'grid',
headStyles: { fillColor: [79, 70, 229] }
});
doc.save('reading-comprehension-results.pdf');
}
// --- Event Listeners ---
elements.btnGenerate.addEventListener('click', generateQuiz);
elements.btnSubmitQuiz.addEventListener('click', submitQuiz);
elements.btnRestart.addEventListener('click', () => {
goToStep(1);
elements.sourceTextInput.value = ''; // Clear text for new session
});
elements.btnDownloadPdf.addEventListener('click', downloadPdf);
});
