`;
pdfContentWrapper.appendChild(summarySection);
// Add distribution charts
const chartsSection = document.createElement('div');
chartsSection.classList.add('grid', 'grid-cols-2', 'gap-6', 'mb-6');
chartsSection.innerHTML = `
Current Ratio Distribution
`;
pdfContentWrapper.appendChild(chartsSection);
// Populate PDF charts (re-use logic but target PDF elements)
const ratioBins = {
'< 1.0 (Weak)': 0,
'1.0-2.0 (Healthy)': 0,
'> 2.0 (Strong)': 0,
'Infinity (Excellent)': 0
};
currentRatioRecords.forEach(record => {
const ratio = parseFloat(record.currentRatio);
if (record.currentRatio === 'Infinity') {
ratioBins['Infinity (Excellent)']++;
} else if (ratio < 1.0) {
ratioBins['< 1.0 (Weak)']++;
} else if (ratio >= 1.0 && ratio <= 2.0) {
ratioBins['1.0-2.0 (Healthy)']++;
} else if (ratio > 2.0) {
ratioBins['> 2.0 (Strong)']++;
}
});
renderBarChart(chartsSection.querySelector('#pdfCurrentRatioDistributionChart'), ratioBins);
// Add detailed current ratio list table
const currentRatioListSection = document.createElement('div');
currentRatioListSection.innerHTML = `
Detailed Current Ratio Records
| ID |
Entity/Period |
Current Assets ($) |
Current Liabilities ($) |
Current Ratio |
Interpretation |
${dashboardCurrentRatioTableBody.innerHTML}
`;
pdfContentWrapper.appendChild(currentRatioListSection);
// Options for html2pdf
const options = {
margin: 10,
filename: 'Current_Ratio_Dashboard.pdf',
image: { type: 'jpeg', quality: 0.98 },
html2canvas: { scale: 2, logging: true, dpi: 192, letterRendering: true },
jsPDF: { unit: 'mm', format: 'a4', orientation: 'portrait' },
pagebreak: { mode: ['avoid-all', 'css', 'legacy'] }
};
// Generate PDF from the temporary content wrapper
html2pdf().from(pdfContentWrapper).set(options).save();
// Clean up the temporary div (optional, as it's not appended to the DOM)
pdfContentWrapper.remove();
}
/**
* Loads initial sample data for the dashboard.
* Relevant to USA context.
*/
function loadSampleData() {
currentRatioRecords = [
{ id: 'CR001', entityPeriod: 'Q1 2024 - Corp A', currentAssets: 500000, currentLiabilities: 200000, currentRatio: '2.50', interpretation: 'Strong Liquidity' },
{ id: 'CR002', entityPeriod: 'Q1 2024 - Corp B', currentAssets: 300000, currentLiabilities: 280000, currentRatio: '1.07', interpretation: 'Healthy Liquidity' },
{ id: 'CR003', entityPeriod: 'Q1 2024 - Corp C', currentAssets: 100000, currentLiabilities: 150000, currentRatio: '0.67', interpretation: 'Weak Liquidity' },
{ id: 'CR004', entityPeriod: 'Q2 2024 - Corp A', currentAssets: 600000, currentLiabilities: 250000, currentRatio: '2.40', interpretation: 'Strong Liquidity' },
{ id: 'CR005', entityPeriod: 'Q2 2024 - Corp B', currentAssets: 350000, currentLiabilities: 300000, currentRatio: '1.17', interpretation: 'Healthy Liquidity' },
{ id: 'CR006', entityPeriod: 'Q2 2024 - Corp C', currentAssets: 120000, currentLiabilities: 180000, currentRatio: '0.67', interpretation: 'Weak Liquidity' },
{ id: 'CR007', entityPeriod: 'Q3 2024 - Corp D', currentAssets: 700000, currentLiabilities: 0, currentRatio: 'Infinity', interpretation: 'Excellent Liquidity (No Liabilities)' }
];
// Recalculate ratios for sample data to ensure consistency with function
currentRatioRecords.forEach(record => {
const { ratio, interpretation } = calculateCurrentRatio(record.currentAssets, record.currentLiabilities);
record.currentRatio = ratio;
record.interpretation = interpretation;
});
}