Adventure Travel Risk Assessment Tool Adventure Travel Risk Assessment Tool 1. Risk Assessment 2. Data Configuration Assess Your Adventure Select Activity Duration (days) Group Size Calculate Risk Assessment Results Download PDF Configure Risk Factors Add, edit, or remove activities and their associated risk scores. All data is customizable. Activity Name Base Risk Score (1-10) Actions Add New Activity Activity Name Base Risk Score Add Activity Previous Next ${severity} Recommendations: ${recommendations} `; resultsElements.section.classList.remove('hidden'); } // --- PDF DOWNLOAD LOGIC --- function downloadResultsAsPDF() { const { jsPDF } = window.jspdf; if (!jsPDF) { alert("PDF library not loaded."); return; } const doc = new jsPDF(); const activityId = parseInt(assessmentInputs.activity.value, 10); const activity = riskData.find(a => a.id === activityId); const duration = assessmentInputs.duration.value; const groupSize = assessmentInputs.groupSize.value; const riskScoreHTML = resultsElements.output.querySelector('.text-5xl'); const severityHTML = resultsElements.output.querySelector('.text-4xl'); const recommendationsHTML = resultsElements.output.querySelector('p.text-slate-600'); if (!activity || !riskScoreHTML || !severityHTML || !recommendationsHTML) { alert("Please calculate the risk before downloading."); return; } // --- PDF Content & Formatting --- doc.setFontSize(20); doc.setFont("helvetica", "bold"); doc.text("Adventure Travel Risk Assessment Report", 105, 20, null, null, "center"); doc.autoTable({ startY: 30, head: [['Parameter', 'Value']], body: [ ['Activity', activity.name], ['Duration', `${duration} days`], ['Group Size', `${groupSize} people`], ], theme: 'striped', headStyles: { fillColor: [37, 99, 235] } // blue-600 }); doc.autoTable({ startY: doc.autoTable.previous.finalY + 10, head: [['Assessment Result', 'Details']], body: [ ['Overall Risk Score', riskScoreHTML.textContent.trim()], ['Severity Level', severityHTML.textContent.trim()], ['Recommendations', recommendationsHTML.textContent.trim()], ], theme: 'grid', headStyles: { fillColor: [37, 99, 235] }, columnStyles: { 1: { cellWidth: 'auto' } } }); doc.save('Risk-Assessment-Report.pdf'); } // --- START THE APP --- initialize(); });