Online Arbitration Case Management System

Online Arbitration Case Management System

A dashboard to track, manage, and report on arbitration cases.

All Cases

Case Name / No. Parties Status Actions

Please select a case from the dashboard to view its details.

${d.title} - ${d.date}

${d.desc}

`; container.appendChild(el); }); } function renderEvents() { const container = document.getElementById('event-list'); container.innerHTML = ''; const events = state.events[state.selectedCaseId] || []; if (events.length === 0) { container.innerHTML = '

No events scheduled for this case.

'; return; } events.forEach(e => { const el = document.createElement('div'); el.className = 'p-3 bg-white rounded-lg border text-sm'; el.innerHTML = `

${e.title} - ${e.date}

${e.notes}

`; container.appendChild(el); }); } function renderAward() { const award = state.awards[state.selectedCaseId] || { amount: '', summary: '' }; document.getElementById('award-amount').value = award.amount; document.getElementById('award-summary').value = award.summary; } // --- CORE FUNCTIONS --- window.showTab = function(tabIndex) { if (tabIndex < 0 || tabIndex >= tabButtons.length) return; state.currentTab = tabIndex; tabButtons.forEach((btn, i) => btn.classList.toggle('active', i === state.currentTab)); // Toggle between dashboard and detail views const isDashboardTab = state.currentTab === 0; document.getElementById('tab-content-0').classList.toggle('active', isDashboardTab); if (!isDashboardTab) { renderCaseDetails(); } // Show/hide other tabs tabContents.forEach((content, i) => { if (i > 0) content.classList.toggle('active', i === state.currentTab); }); updateNavButtons(); }; function updateNavButtons() { if (prevBtn) prevBtn.disabled = state.currentTab === 0; if (nextBtn) nextBtn.disabled = state.currentTab === tabButtons.length - 1; } window.selectCase = function(caseId) { state.selectedCaseId = caseId; showTab(1); // Move to the first details tab } window.editCase = function(caseId) { const caseData = state.cases.find(c => c.id === caseId); if (caseData) openModal(caseData); } function openModal(caseData = null) { caseForm.reset(); document.getElementById('modal-title').textContent = caseData ? 'Edit Case' : 'Add New Case'; if (caseData) { document.getElementById('case-id').value = caseData.id; document.getElementById('case-name').value = caseData.name; document.getElementById('case-claimant').value = caseData.claimant; document.getElementById('case-respondent').value = caseData.respondent; document.getElementById('case-arbitrator').value = caseData.arbitrator; document.getElementById('case-status').value = caseData.status; } else { document.getElementById('case-id').value = ''; } modal.classList.add('active'); } function closeModal() { modal.classList.remove('active'); } function saveCase(e) { e.preventDefault(); const id = document.getElementById('case-id').value; const caseData = { name: document.getElementById('case-name').value, claimant: document.getElementById('case-claimant').value, respondent: document.getElementById('case-respondent').value, arbitrator: document.getElementById('case-arbitrator').value, status: document.getElementById('case-status').value }; if (id) { // Editing existing const index = state.cases.findIndex(c => c.id == id); state.cases[index] = { ...state.cases[index], ...caseData }; } else { // Adding new caseData.id = Date.now(); state.cases.push(caseData); // Initialize empty storage for new case state.documents[caseData.id] = []; state.events[caseData.id] = []; state.awards[caseData.id] = { amount: '', summary: '' }; } renderCaseList(); closeModal(); } function downloadPDF() { const caseId = state.selectedCaseId; if (!caseId) { alert("Please select a case first."); return; } const caseData = state.cases.find(c => c.id === caseId); const docs = state.documents[caseId] || []; const events = state.events[caseId] || []; const award = state.awards[caseId] || {}; const { jsPDF } = jspdf; const doc = new jsPDF(); doc.setFontSize(20); doc.setFont("helvetica", "bold"); doc.text(`Arbitration Summary: ${caseData.name}`, 105, 20, { align: 'center' }); doc.setFontSize(12); doc.setFont("helvetica", "normal"); doc.text(`Status: ${caseData.status}`, 14, 35); doc.text(`Arbitrator: ${caseData.arbitrator}`, 14, 42); doc.autoTable({ startY: 50, head: [['Party', 'Name']], body: [ ['Claimant', caseData.claimant], ['Respondent', caseData.respondent] ], theme: 'striped' }); if (docs.length > 0) { doc.text("Document Log", 14, doc.lastAutoTable.finalY + 15); doc.autoTable({ startY: doc.lastAutoTable.finalY + 20, head: [['Date', 'Title', 'Description']], body: docs.map(d => [d.date, d.title, d.desc]) }); } if (events.length > 0) { doc.text("Event Schedule", 14, doc.lastAutoTable.finalY + 15); doc.autoTable({ startY: doc.lastAutoTable.finalY + 20, head: [['Date', 'Event', 'Notes']], body: events.map(e => [e.date, e.title, e.notes]) }); } if (award.summary) { doc.text("Final Award & Decision", 14, doc.lastAutoTable.finalY + 15); const awardText = `Award Amount: $${parseFloat(award.amount || 0).toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 })}\n\nSummary:\n${award.summary}`; const splitText = doc.splitTextToSize(awardText, 180); doc.text(splitText, 14, doc.lastAutoTable.finalY + 22); } doc.save(`Arbitration_Summary_${caseData.name.replace(/ /g, '_')}.pdf`); } // --- EVENT LISTENERS --- document.getElementById('add-case-btn').addEventListener('click', () => openModal()); document.getElementById('cancel-btn').addEventListener('click', closeModal); caseForm.addEventListener('submit', saveCase); document.getElementById('add-document-form').addEventListener('submit', (e) => { e.preventDefault(); const newDoc = { title: document.getElementById('doc-title').value, desc: document.getElementById('doc-desc').value, date: document.getElementById('doc-date').value, }; state.documents[state.selectedCaseId].push(newDoc); renderDocuments(); e.target.reset(); }); document.getElementById('add-event-form').addEventListener('submit', (e) => { e.preventDefault(); const newEvent = { title: document.getElementById('event-title').value, date: document.getElementById('event-date').value, notes: document.getElementById('event-notes').value, }; state.events[state.selectedCaseId].push(newEvent); renderEvents(); e.target.reset(); }); document.getElementById('save-award-btn').addEventListener('click', () => { state.awards[state.selectedCaseId] = { amount: document.getElementById('award-amount').value, summary: document.getElementById('award-summary').value }; alert('Award information saved!'); }); if (nextBtn) nextBtn.addEventListener('click', () => showTab(state.currentTab + 1)); if (prevBtn) prevBtn.addEventListener('click', () => showTab(state.currentTab - 1)); document.getElementById('pdf-download-btn').addEventListener('click', downloadPDF); // --- INITIAL RENDER --- const today = new Date('2025-08-31T21:53:00'); const formattedDate = today.toISOString().split('T')[0]; const dateInputs = document.querySelectorAll('input[type="date"]'); dateInputs.forEach(input => input.value = formattedDate); renderCaseList(); showTab(0); });
Scroll to Top