Automated Legal Compliance Reporting System

Automated Legal Compliance Reporting System

Track, manage, and report on your organization's legal compliance status.

Compliance Overview

Requirement Area Status Next Review Owner Actions

Generated on ${today}

`; const areas = [...new Set(complianceItems.map(item => item.area))]; areas.forEach(area => { reportHTML += `

${area}

`; const itemsInArea = complianceItems.filter(i => i.area === area); itemsInArea.forEach(item => { reportHTML += `
Requirement
${item.requirement}
Status
${item.status}
Next Review / Due Date
${item.reviewDate}
Owner
${item.owner}
`; }); }); reportHTML += `
`; container.innerHTML = reportHTML; } async function downloadPdf() { const pdfLoader = document.getElementById('pdf-loader'); const downloadBtn = document.getElementById('downloadPdfBtn'); const content = document.getElementById('pdf-content'); if(!content) return; pdfLoader.classList.remove('hidden'); downloadBtn.disabled = true; try { const canvas = await html2canvas(content, { scale: 2 }); const imgData = canvas.toDataURL('image/png'); const { jsPDF } = window.jspdf; const pdf = new jsPDF('p', 'pt', 'letter'); const pdfWidth = pdf.internal.pageSize.getWidth(); const pdfHeight = pdf.internal.pageSize.getHeight(); const margin = 40; const imgProps = pdf.getImageProperties(imgData); const imgWidth = pdfWidth - margin * 2; const imgHeight = (imgProps.height * imgWidth) / imgProps.width; let heightLeft = imgHeight; let position = margin; pdf.addImage(imgData, 'PNG', margin, position, imgWidth, imgHeight); heightLeft -= (pdfHeight - margin * 2); while (heightLeft > 0) { position -= (pdfHeight - margin); pdf.addPage(); pdf.addImage(imgData, 'PNG', margin, position, imgWidth, imgHeight); heightLeft -= pdfHeight; } pdf.save('Compliance-Report.pdf'); } catch(error) { console.error("PDF Generation Error:", error); alert("There was an error generating the PDF."); } finally { pdfLoader.classList.add('hidden'); downloadBtn.disabled = false; } } document.getElementById('downloadPdfBtn').addEventListener('click', downloadPdf); // Initial setup showTab(0); renderDashboard(); lucide.createIcons(); });
Scroll to Top