Online Dynamic Goal-Setting Assistant

Dynamic Goal-Setting Assistant

Goal Overview

Goals by Status

Goals by Category

Set a New Goal

My Goals List

Export Goal Plan

Download a summary of all your goals and their progress as a PDF document.

Deadline: ${goal.deadline} | Status: ${goal.status} | Progress: ${progress}%

Milestones:

    ${goal.milestones.map(m => `
  • ${m.done ? '☑' : '☐'} ${m.text}
  • `).join('')}
`; }); pdfContentEl.innerHTML = `
${reportHTML}
`; html2canvas(pdfContentEl, { scale: 2 }).then(canvas => { const imgData = canvas.toDataURL('image/png'); const pdf = new jsPDF({ orientation: 'portrait', unit: 'pt', format: 'a4' }); const pdfWidth = pdf.internal.pageSize.getWidth(); const imgProps = pdf.getImageProperties(imgData); const pdfHeight = (imgProps.height * pdfWidth) / imgProps.width; pdf.addImage(imgData, 'PNG', 20, 20, pdfWidth - 40, pdfHeight - 40); pdf.save('My_Goal_Plan.pdf'); }); } function renderAll() { renderGoalsList(); renderCharts(); } // --- TAB NAVIGATION --- window.changeTab = function(evt, tabName) { document.querySelectorAll(".tab-content").forEach(tc => tc.classList.remove('active')); document.querySelectorAll(".tab-button").forEach(tb => tb.classList.remove('active')); document.getElementById(tabName).classList.add('active'); const button = evt ? evt.currentTarget : document.querySelector(`.tab-button[onclick*="'${tabName}'"]`); if(button) button.classList.add('active'); currentTab = tabName; updateNavButtons(); if (tabName === 'dashboard') renderCharts(); } function updateNavButtons() { const currentIndex = tabs.indexOf(currentTab); prevBtn.disabled = currentIndex === 0; nextBtn.disabled = currentIndex === tabs.length - 1; prevBtn.classList.toggle('opacity-50', prevBtn.disabled); nextBtn.classList.toggle('opacity-50', nextBtn.disabled); } prevBtn.addEventListener('click', () => { const currentIndex = tabs.indexOf(currentTab); if (currentIndex > 0) changeTab(null, tabs[currentIndex - 1]); }); nextBtn.addEventListener('click', () => { const currentIndex = tabs.indexOf(currentTab); if (currentIndex < tabs.length - 1) changeTab(null, tabs[currentIndex + 1]); }); // --- INITIALIZATION --- clearFormBtn.addEventListener('click', clearForm); downloadPdfBtn.addEventListener('click', downloadPDF); renderAll(); updateNavButtons(); });
Scroll to Top