No insights generated yet. Please configure your data.
Data Configuration
Define your customer referral metrics, targets, and actuals. Click 'Add Metric' to add more rows.
Customer Referral Dashboard Report
Key Referral Performance Indicators
Referral Program Insights
Areas for Improvement: Metrics currently below target include: ${metricsBelowTarget.map(m => `${m.name} (${m.progress}%)`).join(', ')}. Focus efforts on these to boost referral performance.
`;
}
insightsForPdf += `
`;
}
pdfReferralInsights.innerHTML = `
Referral Program 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('Customer_Referral_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
generateReferralInsights(); // Generate initial insights
});