Privileged Account Dashboard

Privileged Account Dashboard

Total Privileged Accounts

0

Non-Compliant Accounts

0

Password Rotations Overdue

0

Unused Accounts

0

Account Compliance Status

Accounts by System Type

Access Activity Over Time

Password Age Distribution (Days)

Compliance Status: ${accountData.isCompliant ? 'Compliant' : 'Non-Compliant'}

Password Age: ${pwdAge} days

Last Used: ${lastUsedAge} days ago

`; accountDetailsContainer.classList.remove('hidden'); }; // --- IV. EVENT LISTENERS --- tabButtons.forEach((button, index) => button.addEventListener('click', () => showTab(index))); prevBtn.addEventListener('click', () => showTab(currentTabIndex - 1)); nextBtn.addEventListener('click', () => showTab(currentTabIndex + 1)); updateDataBtn.addEventListener('click', () => { try { const newData = JSON.parse(dataInput.value); if (Array.isArray(newData)) { currentAccountData = newData; jsonErrorMsg.classList.add('hidden'); updateDashboard(); alert('Dashboard updated successfully!'); showTab(0); } else { throw new Error("Data is not an array."); } } catch (error) { jsonErrorMsg.classList.remove('hidden'); } }); accountSelect.addEventListener('change', showAccountDetails); downloadPdfBtn.addEventListener('click', async () => { const dashboardArea = getElement('dashboard-export-area'); if (!dashboardArea) return; const originalButtonText = downloadPdfBtn.textContent; downloadPdfBtn.textContent = 'Generating PDF...'; downloadPdfBtn.disabled = true; try { const canvas = await html2canvas(dashboardArea, { scale: 2, useCORS: true, logging: false, width: dashboardArea.scrollWidth, height: dashboardArea.scrollHeight, windowWidth: dashboardArea.scrollWidth, windowHeight: dashboardArea.scrollHeight }); const imgData = canvas.toDataURL('image/png'); const { jsPDF } = window.jspdf; const pdfWidth = 297, pdfHeight = 210, margin = 15; const aspectRatio = canvas.width / canvas.height; let scaledWidth = pdfWidth - (margin * 2); let scaledHeight = scaledWidth / aspectRatio; if (scaledHeight > pdfHeight - (margin * 2)) { scaledHeight = pdfHeight - (margin * 2); scaledWidth = scaledHeight * aspectRatio; } const xOffset = (pdfWidth - scaledWidth) / 2; const yOffset = (pdfHeight - scaledHeight) / 2; const pdf = new jsPDF({ orientation: 'landscape', unit: 'mm', format: 'a4' }); pdf.addImage(imgData, 'PNG', xOffset, yOffset, scaledWidth, scaledHeight); pdf.save('Privileged_Account_Dashboard.pdf'); } catch (error) { console.error("PDF generation failed:", error); alert("Sorry, there was an error generating the PDF. Please try again."); } finally { downloadPdfBtn.textContent = originalButtonText; downloadPdfBtn.disabled = false; } }); // --- V. INITIALIZATION CALLS --- dataInput.value = JSON.stringify(initialAccountData, null, 4); updateDashboard(); showTab(0); });
Scroll to Top