Personalized Yoga & Meditation for Pain Relief

Personalized Yoga & Meditation for Pain Relief

Step 1: Tell Us About Your Needs

Pain & Goals

Experience & Time

Find a comfortable seated or lying position. Practice for 5-10 minutes.

    ${meditation.map(item => `
  • ${item.name}: ${item.desc}
  • `).join('')}
`; } if (lifestyle.length > 0) { reportHtml += `

🚶${state.config.sectionTitles.lifestyle}

    ${lifestyle.map(item => `
  • ${item.name}: ${item.desc}
  • `).join('')}
`; } planContentEl.innerHTML = reportHtml; planPlaceholderEl.classList.add('hidden'); planContentEl.classList.remove('hidden'); } // --- CONFIGURATION TAB --- function populateConfig() { const container = document.getElementById('config-inputs'); container.innerHTML = Object.entries(state.config.sectionTitles).map(([key, value]) => `
`).join(''); container.addEventListener('change', handleConfigChange); } function handleConfigChange(e) { if (e.target.dataset.configKey) { const key = e.target.dataset.configKey; state.config.sectionTitles[key] = e.target.value; } } // --- PDF GENERATION --- window.downloadPDF = async () => { const { jsPDF } = window.jspdf; if (!state.planData) return; const { inputs, recommendations } = state.planData; const reportContainer = document.createElement('div'); reportContainer.id = 'pdf-report'; reportContainer.className = 'w-[800px] bg-white p-10 text-gray-800'; reportContainer.style.position = 'absolute'; reportContainer.style.left = '-9999px'; reportContainer.style.fontFamily = 'Inter, sans-serif'; const inputsHtml = `
Pain Area: ${inputs.painArea}
Experience: ${inputs.experienceLevel}
Primary Goal: ${inputs.primaryGoal}
Time: ${inputs.timeAvailable}
`; let recommendationsHtml = ''; const {yoga, meditation, lifestyle} = recommendations; if (yoga.length > 0) { recommendationsHtml += `

${state.config.sectionTitles.yoga}

    ${yoga.map(item => `
  • ${item.name}: ${item.desc}
  • `).join('')}
`; } if (meditation.length > 0) { recommendationsHtml += `

${state.config.sectionTitles.meditation}

    ${meditation.map(item => `
  • ${item.name}: ${item.desc}
  • `).join('')}
`; } if (lifestyle.length > 0) { recommendationsHtml += `

${state.config.sectionTitles.lifestyle}

    ${lifestyle.map(item => `
  • ${item.name}: ${item.desc}
  • `).join('')}
`; } reportContainer.innerHTML = `

Yoga & Meditation Plan

Generated: ${new Date().toLocaleString('en-US', { dateStyle: 'full', timeStyle: 'short' })}

Your Assessment Summary

${inputsHtml}

Your Personalized Practice

${recommendationsHtml}

This plan provides general recommendations. If pain is severe or persists, consult a physical therapist or doctor. This is not a substitute for professional medical advice.

`; 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('Yoga-Meditation-Pain-Relief-Plan.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 --- switchTab(1); populateConfig(); });
Scroll to Top