No insights generated yet. Please configure your data.
Data Configuration
Define your strategic metrics, targets, and actuals. Click 'Add Metric' to add more rows.
Strategic Analytics Dashboard Report
Key Performance Indicators
Strategic Insights
Overall Performance: The average progress across all defined metrics is ${avgProgress}%.
`;
if (metricsAboveTarget.length > 0) {
insightsForPdf += `
Strengths: Excellent performance observed in: ${metricsAboveTarget.map(m => `${m.name} (${m.progress}%)`).join(', ')}. Continue to leverage these areas.
`;
}
if (metricsBelowTarget.length > 0) {
insightsForPdf += `
Areas for Improvement: Metrics currently below target include: ${metricsBelowTarget.map(m => `${m.name} (${m.progress}%)`).join(', ')}. Focus strategic efforts on these to bridge the gap.
`;
}
insightsForPdf += `
`;
}
pdfStrategicInsights.innerHTML = `
Strategic Insights
${insightsForPdf}`;
// Show the hidden content temporarily for html2canvas to render it
pdfContent.style.display = 'block';
showMessage('Generating PDF...', 'info');
try {
const canvas = await html2canvas(pdfContent, {
scale: 2, // Increase scale for better quality
useCORS: true, // If you have external images, enable CORS
logging: false // Disable console logging from html2canvas
});
const imgData = canvas.toDataURL('image/png');
const { jsPDF } = window.jspdf;
const pdf = new jsPDF('p', 'mm', 'a4'); // 'p' for portrait, 'mm' for millimeters, 'a4' size
const imgWidth = 210; // A4 width in mm
const pageHeight = 297; // A4 height in mm
const imgHeight = canvas.height * imgWidth / canvas.width;
let heightLeft = imgHeight;
let position = 0;
pdf.addImage(imgData, 'PNG', 0, position, imgWidth, imgHeight);
heightLeft -= pageHeight;
while (heightLeft >= 0) {
position = heightLeft - imgHeight;
pdf.addPage();
pdf.addImage(imgData, 'PNG', 0, position, imgWidth, imgHeight);
heightLeft -= pageHeight;
}
pdf.save('Strategic_Analytics_Dashboard.pdf');
showMessage('PDF downloaded successfully!', 'success');
} catch (error) {
console.error("Error generating PDF:", error);
showMessage('Error generating PDF. Please try again.', 'error');
} finally {
// Hide the content again after PDF generation
pdfContent.style.display = 'none';
}
};
}
// --- Initial Load ---
switchTab('dashboard'); // Start on the dashboard tab
renderAllMetricInputRows(); // Render initial data in config tab
renderAllKpiCards(); // Render initial data in dashboard tab
generateStrategicInsights(); // Generate initial insights
});