Subject-Specific Knowledge Trainer

Subject-Specific Knowledge Trainer

Flashcards

1 / 1

Take a Quiz

Create Your Own Study Set


Your Answer: ${q.userAnswer}

`; reviewContainer.appendChild(resultDiv); }); } function resetQuiz() { document.getElementById('quiz-setup').classList.remove('hidden'); document.getElementById('quiz-main').classList.add('hidden'); document.getElementById('quiz-results').classList.add('hidden'); } // --- PDF Generation --- async function generatePdfReport(event, subjectName, reviewData) { const button = event.target; const originalText = button.textContent; button.textContent = 'Generating...'; button.disabled = true; const isQuizReport = Array.isArray(reviewData); const data = isQuizReport ? reviewData : subjects[subjectName]; const qaHtml = data.map(item => ` ${item.q} ${item.a} ${isQuizReport ? `${item.userAnswer}` : ''} `).join(''); let scoreHtml = ''; if (isQuizReport) { const score = reviewData.filter(r => r.isCorrect).length; const totalQuestions = reviewData.length; const percentage = Math.round((score / totalQuestions) * 100); scoreHtml = `
${percentage}%
Score
`; } const reportHtml = `

Personalized ${isQuizReport ? 'Quiz Report' : 'Study Sheet'}

Subject: ${subjectName}

${scoreHtml}

${isQuizReport ? 'Quiz Review' : 'Key Concepts & Answers'}

${isQuizReport ? '' : ''} ${qaHtml}
Question / Term Correct AnswerYour Answer
`; const pdfTemplate = document.getElementById('pdf-template'); pdfTemplate.innerHTML = reportHtml; // Temporarily make the hidden element visible for rendering pdfTemplate.style.position = 'absolute'; pdfTemplate.style.left = '-9999px'; pdfTemplate.classList.remove('invisible'); try { const { jsPDF } = window.jspdf; const canvas = await html2canvas(pdfTemplate.querySelector('.pdf-report-body'), { scale: 3, // Increased scale for higher quality and file size backgroundColor: '#ffffff', useCORS: true }); const imgData = canvas.toDataURL('image/png'); const pdf = new jsPDF({ orientation: 'p', unit: 'pt', format: 'a4' }); const pdfWidth = pdf.internal.pageSize.getWidth(); const pdfHeight = (canvas.height * pdfWidth) / canvas.width; pdf.addImage(imgData, 'PNG', 0, 0, pdfWidth, pdfHeight); pdf.save(`${subjectName}_Report.pdf`); showNotification('PDF report downloaded successfully!', false); } catch (error) { console.error("PDF Generation Error:", error); showNotification("Sorry, there was an error creating the PDF.", true); } finally { // Restore hidden state and button pdfTemplate.style.position = ''; pdfTemplate.style.left = '-left-full'; pdfTemplate.classList.add('invisible'); button.textContent = originalText; button.disabled = false; } } init(); });
Scroll to Top