`;
});
} else {
contentHtml += `
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);
});