This report is a personal tracking tool and is not a substitute for professional medical or fitness advice. Listen to your body and consult a professional for personalized guidance.
`;
document.body.appendChild(reportContainer);
try {
const canvas = await html2canvas(reportContainer, { scale: 2, useCORS: true, logging: false });
const imgData = canvas.toDataURL('image/png');
const pdf = new jsPDF({ orientation: 'portrait', unit: 'mm', format: 'a4' });
const pageHeight = pdf.internal.pageSize.getHeight();
const pageWidth = pdf.internal.pageSize.getWidth();
const margin = 15;
const contentWidth = pageWidth - (margin * 2);
const imgProps = pdf.getImageProperties(imgData);
const contentHeight = (imgProps.height * contentWidth) / imgProps.width;
let heightLeft = contentHeight;
let position = 0;
pdf.addImage(imgData, 'PNG', margin, margin, contentWidth, contentHeight);
heightLeft -= (pageHeight - (margin * 2));
while (heightLeft > 0) {
position -= (pageHeight - (margin * 2));
pdf.addPage();
pdf.addImage(imgData, 'PNG', margin, position + margin, contentWidth, contentHeight);
heightLeft -= (pageHeight - (margin * 2));
}
pdf.save('Post-Workout-Recovery-Report.pdf');
} catch (error) {
console.error("Error generating PDF:", error);
alert("Sorry, there was an error creating the PDF report.");
} finally {
document.body.removeChild(reportContainer);
}
};
// --- INITIALIZATION ---
// This is a placeholder for the Chart.js annotation plugin.
// For this self-contained tool, we load it from CDN.
// If it fails to load, annotations won't appear, but the chart will still work.
if (typeof Chart.Annotation === 'undefined') {
console.warn('Chart.js Annotation plugin not loaded. Annotations will not be displayed.');
}
switchTab(1);
addWorkoutEntry();
addRecoveryEntry();
const today = new Date().toISOString().split('T')[0];
document.querySelector('.workout-date').value = today;
document.querySelector('.recovery-date').value = today;
// There is no configuration tab for this tool, so this section is removed.
});