`).join('');
}
// --- PDF DOWNLOAD FUNCTION ---
function renderPdfContent(data) {
const statusClassMap = {
'Compliant': 'pdf-status-compliant',
'Needs Review': 'pdf-status-review',
'Action Required': 'pdf-status-action',
};
return data.map(asset => `
${asset.name}
${asset.complianceItems.map(item => `
${item.name} ${item.status}
Recommendation: ${item.recommendation}
`).join('')}
`).join('');
}
async function downloadPDF() {
downloadPdfButton.disabled = true;
pdfLoadingMessage.classList.remove('hidden');
const data = getDashboardData();
const pdfContainer = document.getElementById('pdf-clone-container');
const pdfTitle = document.createElement('h2');
pdfTitle.id = 'pdf-title-clone';
pdfTitle.textContent = 'Digital Rights Compliance Dashboard';
const pdfContent = document.createElement('div');
pdfContent.id = 'pdf-content-wrapper';
pdfContent.innerHTML = renderPdfContent(data);
pdfContainer.innerHTML = '';
pdfContainer.appendChild(pdfTitle);
pdfContainer.appendChild(pdfContent);
pdfContainer.style.display = 'block';
try {
const canvas = await html2canvas(pdfContainer, { 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('Digital-Rights-Compliance-Dashboard.pdf');
} catch (error) {
console.error("Error generating PDF:", error);
alert("An error occurred while generating the PDF.");
} finally {
downloadPdfButton.disabled = false;
pdfLoadingMessage.classList.add('hidden');
pdfContainer.style.display = 'none';
}
}
// --- EVENT LISTENER ATTACHMENT ---
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);
});