Additional Revenue
${document.getElementById('additionalRevenue').textContent}
`;
document.getElementById('pdf-churn-chart').src = churnChart.toBase64Image();
const tableClone = document.querySelector('table').cloneNode(true);
tableClone.classList.add("w-full", "text-xs");
document.getElementById('pdf-table-container').innerHTML = '';
document.getElementById('pdf-table-container').appendChild(tableClone);
const reportEl = document.getElementById('pdf-report');
reportEl.classList.remove('hidden');
const canvas = await html2canvas(reportEl, { scale: 2 });
reportEl.classList.add('hidden');
const imgData = canvas.toDataURL('image/png');
const { jsPDF } = window.jspdf;
const pdf = new jsPDF({ orientation: 'p', unit: 'in', format: 'letter' });
const pdfWidth = pdf.internal.pageSize.getWidth();
const pdfHeight = (canvas.height * pdfWidth) / canvas.width;
pdf.addImage(imgData, 'PNG', 0, 0, pdfWidth, pdfHeight);
pdf.save('Retention-Strategy-Plan.pdf');
}
document.getElementById('baseline-inputs').addEventListener('input', calculateImpact);
document.getElementById('strategy-levers').addEventListener('input', e => {
const strategy = strategies.find(s => s.id === e.target.dataset.id);
if (!strategy) return;
if (e.target.type === 'checkbox') {
strategy.enabled = e.target.checked;
}
if (e.target.type === 'range') {
strategy.impact = parseFloat(e.target.value);
e.target.nextElementSibling.textContent = `${strategy.impact}%`;
}
calculateImpact();
});
document.getElementById('downloadPdfBtn').addEventListener('click', generatePdf);
// Initial Load
renderStrategyLevers();
calculateImpact();
});