Court Filing Deadline Reminder Tool

Court Filing Deadline Reminder Tool

Overdue Filings

0

Due This Week

0

Total Pending Filings

0

Upcoming Deadlines

Days Remaining Case Name / No. Filing Deadline Status

${filing.filingType} - ${filing.jurisdiction}

${deadlineInfo}

`; managementListContainer.appendChild(item); }); } // --- EVENT HANDLERS & LOGIC --- function switchTab(tabName) { state.currentTab = tabName; Object.values(tabs).forEach(tab => tab.classList.remove('active')); Object.values(contents).forEach(content => content.classList.add('hidden')); tabs[tabName].classList.add('active'); contents[tabName].classList.remove('hidden'); updateNavButtons(); } function updateNavButtons() { navButtons.prev.disabled = state.currentTab === 'dashboard'; navButtons.next.disabled = state.currentTab === 'management'; } filingForm.addEventListener('submit', (e) => { e.preventDefault(); const filingData = { id: state.editingFilingId ? state.editingFilingId : Date.now(), caseName: caseNameInput.value.trim(), jurisdiction: jurisdictionInput.value.trim(), filingType: filingTypeInput.value.trim(), deadline: deadlineDateInput.value, status: filingStatusSelect.value }; if (state.editingFilingId) { const index = state.filings.findIndex(f => f.id === state.editingFilingId); if (index !== -1) state.filings[index] = filingData; } else { state.filings.push(filingData); } resetFilingForm(); renderAll(); }); managementListContainer.addEventListener('click', (e) => { const target = e.target; const id = parseInt(target.dataset.id); if (target.classList.contains('edit-filing-btn')) { const filing = state.filings.find(f => f.id === id); if (filing) { formTitle.textContent = 'Edit Filing Deadline'; state.editingFilingId = filing.id; caseNameInput.value = filing.caseName; jurisdictionInput.value = filing.jurisdiction; filingTypeInput.value = filing.filingType; deadlineDateInput.value = filing.deadline; filingStatusSelect.value = filing.status; cancelEditBtn.classList.remove('hidden'); filingForm.querySelector('button[type="submit"]').textContent = 'Update Deadline'; window.scrollTo({ top: 0, behavior: 'smooth' }); } } else if (target.classList.contains('delete-filing-btn')) { if (confirm('Are you sure you want to delete this filing deadline?')) { state.filings = state.filings.filter(f => f.id !== id); renderAll(); } } }); downloadPdfBtn.addEventListener('click', () => { const { jsPDF } = window.jspdf; const doc = new jsPDF({ orientation: 'landscape' }); doc.setFontSize(20); doc.text("Court Filing Deadline Report", 14, 22); doc.setFontSize(11); doc.setTextColor(100); doc.text(`Report Generated: ${new Date().toLocaleDateString()}`, 14, 30); const head = [['Case Name / No.', 'Jurisdiction', 'Filing', 'Deadline', 'Status', 'Days Remaining']]; const body = state.filings .sort((a, b) => new Date(a.deadline) - new Date(b.deadline)) .map(filing => { const daysRemaining = getDaysRemaining(filing.deadline); let daysText = `${daysRemaining}`; if (filing.status === 'Filed') daysText = 'N/A'; else if (daysRemaining < 0) daysText = `Overdue (${Math.abs(daysRemaining)})`; return [ filing.caseName, filing.jurisdiction, filing.filingType, filing.deadline, filing.status, daysText ]; }); doc.autoTable({ startY: 35, head: head, body: body, theme: 'striped', headStyles: { fillColor: [79, 70, 229] }, // indigo-600 }); doc.save('court_filing_deadlines.pdf'); }); function resetFilingForm() { filingForm.reset(); state.editingFilingId = null; formTitle.textContent = 'Add New Filing Deadline'; cancelEditBtn.classList.add('hidden'); filingForm.querySelector('button[type="submit"]').textContent = 'Save Deadline'; } // --- ATTACH EVENT LISTENERS --- tabs.dashboard.addEventListener('click', () => switchTab('dashboard')); tabs.management.addEventListener('click', () => switchTab('management')); navButtons.next.addEventListener('click', () => switchTab('management')); navButtons.prev.addEventListener('click', () => switchTab('dashboard')); cancelEditBtn.addEventListener('click', resetFilingForm); // --- INITIALIZATION --- function init() { loadInitialData(); renderAll(); updateNavButtons(); } init(); });
Scroll to Top