Distribution Summary
| Partner |
Initial Investment |
Profit Share |
Total Distribution |
| Partner A |
${formatCurrency(results.partners.A.invest)} |
${formatCurrency(results.partners.A.profit)} |
${formatCurrency(results.partners.A.total)} |
| Partner B |
${formatCurrency(results.partners.B.invest)} |
${formatCurrency(results.partners.B.profit)} |
${formatCurrency(results.partners.B.total)} |
`;
downloadBtn.classList.remove('hidden');
const ctx = document.getElementById('profitChart')?.getContext('2d');
if(ctx) {
if (profitChart) profitChart.destroy();
profitChart = new Chart(ctx, {
type: 'doughnut',
data: {
labels: ['Partner A Profit', 'Partner B Profit'],
datasets: [{
data: [results.partners.A.profit, results.partners.B.profit],
backgroundColor: ['#1e40af', '#16a34a'],
borderColor: '#ffffff',
borderWidth: 3
}]
},
options: {
responsive: true,
maintainAspectRatio: false,
plugins: {
legend: { position: 'bottom' },
tooltip: { callbacks: { label: (c) => `${c.label}: ${formatCurrency(c.raw)}` } }
}
}
});
}
}
function downloadPDF() {
const { jsPDF } = window.jspdf;
const pdf = new jsPDF({ orientation: 'p', unit: 'mm', format: 'a4' });
const contentToPrint = document.getElementById('dashboard-content');
if (!contentToPrint) return;
html2canvas(contentToPrint, {
scale: 2,
useCORS: true,
onclone: (doc) => {
const chartCanvas = doc.getElementById('profitChart');
if (chartCanvas && profitChart) {
const img = new Image();
img.src = profitChart.toBase64Image();
img.style.maxWidth = '100%';
img.style.height = 'auto';
chartCanvas.parentNode.replaceChild(img, chartCanvas);
}
}
}).then(canvas => {
const imgData = canvas.toDataURL('image/png');
const pdfWidth = pdf.internal.pageSize.getWidth();
const pdfHeight = (canvas.height * pdfWidth) / canvas.width;
pdf.addImage(imgData, 'PNG', 10, 10, pdfWidth - 20, pdfHeight > 277 ? 277 : pdfHeight - 20);
pdf.save('JV-Profit-Summary.pdf');
});
}