Business Compliance Scorecard Generator

Business Compliance Scorecard Generator

Assess your company's adherence to key legal and regulatory standards.

Corporate Governance

${data.overallScore}%

${Object.entries(data.categories).map(([name, cat]) => { let catColor; if (cat.score >= 85) catColor = 'bg-emerald-500'; else if (cat.score >= 60) catColor = 'bg-yellow-500'; else catColor = 'bg-red-500'; return `
${name} ${cat.score}%
` }).join('')}
${renderTaskList(data.allItems.filter(i => !i.completed), 'Action Required', '⚠️', 'text-red-600')} ${renderTaskList(data.allItems.filter(i => i.completed), 'Compliant Items', '✅', 'text-emerald-600')}
`; } async function downloadPDF() { downloadPdfButton.disabled = true; pdfLoadingMessage.classList.remove('hidden'); const data = getScorecardData(); let overallColor; if (data.overallScore >= 85) overallColor = '#059669'; else if (data.overallScore >= 60) overallColor = '#f59e0b'; else overallColor = '#ef4444'; const renderPdfList = (items, title) => `

${title}

    ${items.map(item => `
  • ${item.completed ? '✅' : '⚠️'} ${item.category}: ${item.text}
  • `).join('') || `
  • None
  • `}
`; const pdfContainer = document.getElementById('pdf-clone-container'); pdfContainer.innerHTML = `

Business Compliance Scorecard

Overall Compliance Score
${data.overallScore}%
${renderPdfList(data.allItems.filter(i => !i.completed), 'Action Required Items')} ${renderPdfList(data.allItems.filter(i => i.completed), 'Compliant Items')}
`; pdfContainer.style.display = 'block'; try { const canvas = await html2canvas(pdfContainer.querySelector('#pdf-content-wrapper'), { scale: 2, useCORS: true }); const imgData = canvas.toDataURL('image/png'); const pdf = new jsPDF({ orientation: 'p', unit: 'px', format: 'a4' }); const pdfWidth = pdf.internal.pageSize.getWidth(); const pdfHeight = (canvas.height * pdfWidth) / canvas.width; pdf.addImage(imgData, 'PNG', 0, 0, pdfWidth, pdfHeight); pdf.save('Business-Compliance-Scorecard.pdf'); } catch (error) { console.error("Error generating PDF:", error); // In a real app, show a user-friendly error message here } finally { downloadPdfButton.disabled = false; pdfLoadingMessage.classList.add('hidden'); pdfContainer.style.display = 'none'; } } // --- EVENT LISTENERS --- prevButton.addEventListener('click', () => navigateTabs(-1)); nextButton.addEventListener('click', () => navigateTabs(1)); downloadPdfButton.addEventListener('click', downloadPDF); tabButtons.forEach(button => { button.addEventListener('click', () => showTab(parseInt(button.dataset.tab, 10))); }); // --- INITIALIZATION --- showTab(1); });
Scroll to Top