Population Health Dashboard

Population Health Dashboard

Total Population

0

Avg. Life Expectancy

0 yrs

Avg. Vaccination Rate

0%

Top Health Concern

N/A

Population by Age Group

Chronic Conditions Prevalence (%)

Healthcare Coverage Breakdown

Well-being Score by Region

Vaccination Rate: ${regionData.vaccinationRate}%

Well-being Score: ${regionData.wellbeingScore} / 10

Chronic Conditions:
    ${conditionsList}
Healthcare Coverage:
    ${coverageList}
`; regionDetailsContainer.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)) { currentPopulationData = 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'); console.error("Failed to parse or apply new data:", error); } }); regionSelect.addEventListener('change', showRegionDetails); downloadPdfBtn.addEventListener('click', () => { const dashboardArea = getElement('dashboard-export-area'); if (!dashboardArea) return; const { jsPDF } = window.jspdf; downloadPdfBtn.style.display = 'none'; html2canvas(dashboardArea, { scale: 2, useCORS: true, logging: false }) .then(canvas => { const imgData = canvas.toDataURL('image/png'); const pdf = new jsPDF({ orientation: 'landscape', unit: 'px', format: [canvas.width, canvas.height] }); pdf.addImage(imgData, 'PNG', 0, 0, canvas.width, canvas.height); pdf.save('Population_Health_Dashboard.pdf'); downloadPdfBtn.style.display = 'block'; }).catch(err => { console.error("PDF generation failed:", err); downloadPdfBtn.style.display = 'block'; }); }); // --- V. INITIALIZATION CALLS --- dataInput.value = JSON.stringify(initialPopulationData, null, 4); updateDashboard(); showTab(0); });
Scroll to Top