Online Intelligent Bibliography Manager
| Author | Title | Year | Actions |
|---|
Add New Bibliographic Entry
${citation}
`; }); formattedBibliographyDiv.innerHTML = html || 'No entries to display.
'; } // --- Event Listeners --- tabs.forEach(button => { button.addEventListener('click', () => showTab(button.dataset.tab)); }); searchInput.addEventListener('input', filterAndRender); entryForm.addEventListener('submit', function(e) { e.preventDefault(); const id = entryIdInput.value ? parseInt(entryIdInput.value) : null; const newEntry = { id: id || Date.now(), author: document.getElementById('entryAuthor').value, title: document.getElementById('entryTitle').value, year: document.getElementById('entryYear').value, publisher: document.getElementById('entryPublisher').value, }; if (id) { bibliographyData = bibliographyData.map(item => item.id === id ? newEntry : item); } else { bibliographyData.push(newEntry); } filterAndRender(); resetForm(); showTab('tab1'); }); cancelEditButton.addEventListener('click', () => { resetForm(); showTab('tab1'); }); tableBody.addEventListener('click', function(e) { if (e.target.classList.contains('edit-btn')) { const id = parseInt(e.target.dataset.id); populateForm(id); } if (e.target.classList.contains('delete-btn')) { const id = parseInt(e.target.dataset.id); bibliographyData = bibliographyData.filter(i => i.id !== id); filterAndRender(); } }); citationStyleSelect.addEventListener('change', formatBibliography); downloadPdfButton.addEventListener('click', function() { if (typeof window.jspdf === 'undefined') return; const { jsPDF } = window.jspdf; const doc = new jsPDF(); doc.setFont("helvetica", "bold"); doc.setFontSize(20); doc.text("Bibliography", 105, 20, { align: 'center' }); doc.setFontSize(12); doc.text(`Style: ${citationStyleSelect.options[citationStyleSelect.selectedIndex].text}`, 20, 30); const tempDiv = document.createElement('div'); tempDiv.innerHTML = formattedBibliographyDiv.innerHTML; const text = tempDiv.innerText; doc.setFont("times", "normal"); doc.setFontSize(12); doc.text(text, 20, 40, { maxWidth: 170 }); doc.save('bibliography.pdf'); }); // Initial Load bibliographyData = JSON.parse(JSON.stringify(sampleData)); filterAndRender(); });