E-Litigation Case Management System

E-Litigation Case Management System

Streamline your litigation workflow from discovery to trial.

Cases by Status

Upcoming Deadlines (Next 90 Days)

No upcoming deadlines.

All Cases

Case Name Case Number Court Status Actions

Add a New Case File

${item.type.charAt(0).toUpperCase() + item.type.slice(1)} Deadline

${item.caseName}

${item.date}
`).join(''); } else { deadlinesList.innerHTML = '

No deadlines in the next 90 days.

'; } } // --- TAB NAVIGATION --- function updateTabDisplay(tabNum) { tabButtons.forEach(button => button.classList.toggle('active', parseInt(button.dataset.tab) === tabNum)); tabContents.forEach(content => content.style.display = 'none'); document.getElementById(`tab-content-${tabNum}`).style.display = 'block'; if (tabNum === 1) updateDashboard(); if (tabNum === 2) renderCasesTable(); } // --- MODAL LOGIC --- const modal = document.getElementById('edit-modal'); function openModal(caseId) { const caseItem = DB.find(c => c.id === caseId); if (!caseItem) return; document.getElementById('modal-title').textContent = `Case: ${caseItem.name}`; document.getElementById('edit-case-id').value = caseItem.id; document.getElementById('edit-case-name').value = caseItem.name; document.getElementById('edit-case-number').value = caseItem.number; Object.entries(caseItem.dates).forEach(([key, value]) => { const el = document.getElementById(`date-${key}`); if (el) el.value = value; }); const statusSelect = document.getElementById('edit-case-status'); statusSelect.innerHTML = ` `; renderDocumentList(caseId); modal.classList.remove('hidden'); } function renderDocumentList(caseId) { const caseItem = DB.find(c => c.id === caseId); const listEl = document.getElementById('document-list'); if (!caseItem || !listEl) return; if (caseItem.documents.length === 0) { listEl.innerHTML = '

No documents logged for this case.

'; return; } listEl.innerHTML = caseItem.documents.map((doc, index) => `
${doc.name} ${doc.type} ${doc.date}
`).join(''); } function closeModal() { modal.classList.add('hidden'); } // --- DATA HANDLING --- function handleSaveChanges() { const caseId = parseInt(document.getElementById('edit-case-id').value); const caseItem = DB.find(c => c.id === caseId); if (caseItem) { caseItem.name = document.getElementById('edit-case-name').value; caseItem.number = document.getElementById('edit-case-number').value; caseItem.status = document.getElementById('edit-case-status').value; caseItem.dates.filing = document.getElementById('date-filing').value; caseItem.dates.discovery = document.getElementById('date-discovery').value; caseItem.dates.motions = document.getElementById('date-motions').value; caseItem.dates.trial = document.getElementById('date-trial').value; } closeModal(); if (document.getElementById('tab-content-2').style.display === 'block') { renderCasesTable(); } } function handleAddDocument() { const caseId = parseInt(document.getElementById('edit-case-id').value); const caseItem = DB.find(c => c.id === caseId); const nameEl = document.getElementById('doc-name'); const typeEl = document.getElementById('doc-type'); const dateEl = document.getElementById('doc-date'); if (caseItem && nameEl.value && dateEl.value) { caseItem.documents.push({ name: nameEl.value, type: typeEl.value, date: dateEl.value }); nameEl.value = ''; dateEl.value = ''; renderDocumentList(caseId); } } function handleRemoveDocument(e) { if (!e.target.classList.contains('remove-doc-btn')) return; const caseId = parseInt(document.getElementById('edit-case-id').value); const caseItem = DB.find(c => c.id === caseId); const index = parseInt(e.target.dataset.index); if (caseItem) { caseItem.documents.splice(index, 1); renderDocumentList(caseId); } } // --- PDF GENERATION --- function generatePdfHtml(caseId) { const c = DB.find(c => c.id === caseId); if(!c) return ''; let docHtml = 'No documents logged.'; if (c.documents.length > 0) { docHtml = c.documents.map(d => `${d.name}${d.type}${d.date}`).join(''); } return `

Litigation Case Summary

${c.name}

Case Number: ${c.number}
Court: ${c.court}
Presiding Judge: ${c.judge}
Opposing Counsel: ${c.opposingCounsel}
Status: ${c.status}
Date Filed: ${c.dates.filing}

Key Deadlines

Discovery Cut-off: ${c.dates.discovery}
Motions Deadline: ${c.dates.motions}
Trial Date: ${c.dates.trial}

Logged Documents

${docHtml}
Document NameTypeDate Filed

This summary is for informational purposes only. Generated on ${new Date().toLocaleDateString('en-US')}.

`; } async function handlePdfDownload() { const caseId = parseInt(document.getElementById('edit-case-id').value); document.getElementById('pdf-content').innerHTML = generatePdfHtml(caseId); const { jsPDF } = window.jspdf; const button = document.getElementById('downloadPdfBtn'); button.textContent = 'Generating...'; button.disabled = true; try { const canvas = await html2canvas(document.getElementById('pdf-container'), { scale: 2 }); const pdf = new jsPDF({ orientation: 'p', unit: 'mm', format: 'a4' }); pdf.addImage(canvas.toDataURL('image/png'), 'PNG', 10, 10, 190, 0); pdf.save(`Case_Summary_${caseId}.pdf`); } catch (error) { console.error("PDF generation failed:", error); } finally { button.textContent = 'Download Case Summary (PDF)'; button.disabled = false; } } // --- EVENT LISTENERS --- tabButtons.forEach(b => b.addEventListener('click', () => updateTabDisplay(parseInt(b.dataset.tab)))); document.getElementById('new-case-form').addEventListener('submit', function(e) { e.preventDefault(); const newCase = { id: DB.length > 0 ? Math.max(...DB.map(c => c.id)) + 1 : 1, name: this.querySelector('#case-name').value, number: this.querySelector('#case-number').value, court: this.querySelector('#case-court').value, judge: this.querySelector('#case-judge').value, opposingCounsel: this.querySelector('#opposing-counsel').value, status: 'discovery', dates: { filing: new Date().toISOString().split('T')[0], discovery: '', motions: '', trial: '' }, documents: [] }; DB.push(newCase); this.reset(); updateTabDisplay(2); }); document.getElementById('cases-table-body').addEventListener('click', e => { if (e.target.classList.contains('view-details-btn')) { openModal(parseInt(e.target.dataset.id)); } }); document.getElementById('close-modal-btn').addEventListener('click', closeModal); document.getElementById('save-changes-btn').addEventListener('click', handleSaveChanges); document.getElementById('add-doc-btn').addEventListener('click', handleAddDocument); document.getElementById('document-list').addEventListener('click', handleRemoveDocument); document.getElementById('downloadPdfBtn').addEventListener('click', handlePdfDownload); // --- INITIALIZATION --- updateDashboard(); });
Scroll to Top