Online Learning Resource Aggregator

AI Learning Resource Aggregator

No ${category} found.

`; } contentHtml += `
`; } elements.resultsContent.innerHTML = contentHtml; elements.resultsContent.classList.remove('hidden'); elements.downloadButtonContainer.classList.remove('hidden'); } function downloadPdf() { if (!lastAnalysisResult) { showError("Please find resources first."); return; } const { jsPDF } = window.jspdf; const doc = new jsPDF(); doc.setFont('helvetica', 'bold'); doc.setFontSize(18); doc.text(`Learning Resources for: ${lastTopic}`, doc.internal.pageSize.getWidth() / 2, 20, { align: 'center' }); let startY = 35; for (const category in lastAnalysisResult) { if (startY > 250) { doc.addPage(); startY = 20; } const title = category.charAt(0).toUpperCase() + category.slice(1); const items = lastAnalysisResult[category]; const tableBody = items.map(item => [item.title, item.url]); doc.autoTable({ startY: startY, head: [[title]], body: [], theme: 'striped', headStyles: { fillColor: [79, 70, 229], fontSize: 14 }, }); doc.autoTable({ startY: doc.autoTable.previous.finalY, head: [['Title', 'URL']], body: tableBody, theme: 'grid', }); startY = doc.autoTable.previous.finalY + 15; } doc.save(`learning-resources-${lastTopic.replace(/\s+/g, '-')}.pdf`); } // --- Event Listeners --- elements.btnFind.addEventListener('click', findResources); elements.topicInput.addEventListener('keypress', (e) => { if (e.key === 'Enter') findResources(); }); elements.btnDownloadPdf.addEventListener('click', downloadPdf); });
Scroll to Top