Current Card
Card 0 of 0
[Click NEXT or Add a card]
[Click NEXT or Add a card]
Add New Term
Study Set Metadata
Card Manager (0)
User: | Total Cards:
Itemized Study Set
| Term / Concept | Definition / Explanation | Category |
|---|
No cards created yet.
'; return; } cardData.forEach(c => { const div = document.createElement('div'); div.className = 'flex justify-between items-center bg-stone-700 p-3 rounded text-sm mb-1'; div.innerHTML = ` ${c.term} (${c.category}) `; managerContainer.appendChild(div); }); } // --- Viewer Logic --- function filterCards() { const filter = document.getElementById('card-filter').value; currentCardIndex = 0; if (filter === 'All') { filteredCardSet = [...cardData]; } else { filteredCardSet = cardData.filter(c => c.category === filter); } updateViewer(); } function updateViewer() { const total = filteredCardSet.length; const card = filteredCardSet[currentCardIndex]; const container = document.getElementById('flip-container'); document.getElementById('total-cards').innerText = total; document.getElementById('current-index').innerText = total > 0 ? (currentCardIndex + 1) : 0; container.classList.remove('flipped'); // Reset flip state if (total === 0) { document.getElementById('card-front').innerText = "NO CARDS IN THIS SET"; document.getElementById('card-back').innerText = "Adjust your filter or add new cards."; return; } document.getElementById('card-front').innerText = card.term; document.getElementById('card-back').innerHTML = `${card.term}
${card.definition}
Category: ${card.category}
`; } function flipCard() { const container = document.getElementById('flip-container'); if (filteredCardSet.length > 0) { container.classList.toggle('flipped'); } } function nextCard() { if (filteredCardSet.length > 0) { currentCardIndex = (currentCardIndex + 1) % filteredCardSet.length; updateViewer(); } } // --- PDF Export --- function generatePDF() { if (cardData.length === 0) { alert("Please add flashcards to the study set before generating the report."); return; } const template = document.getElementById('pdf-template'); const pdfTbody = document.getElementById('pdf-tbody'); // 1. Fill Metadata (Done in updateMeta) document.getElementById('pdf-card-count').innerText = cardData.length; // 2. Fill Table Content (All cards, sorted by Category) pdfTbody.innerHTML = ''; const sorted = [...cardData].sort((a, b) => a.category.localeCompare(b.category) || a.term.localeCompare(b.term)); sorted.forEach(entry => { pdfTbody.innerHTML += `