Smart Task Schedule Customizer

Smart Task Schedule Customizer

Add New Task

Current Task List

No tasks added yet.

Scheduling Availability

Please input tasks, define availability, and click "Generate Customized Schedule" on the first tab.

No tasks scheduled for this day.

"; } scheduleHTML += `
`; }); const unscheduledTasks = tasksToSchedule.filter(task => !task.scheduled); if (unscheduledTasks.length > 0) { scheduleHTML += `

Unscheduled Tasks (${unscheduledTasks.length})

`; unscheduledTasks.forEach(task => { scheduleHTML += `
${task.name} (Priority: ${task.priority}, Est: ${task.estTime} min ${task.dueDate ? `, Due: ${new Date(task.dueDate+"T00:00:00").toLocaleDateString()}` : ''}) - Reason: Not enough time or past due before fitting.
`; }); } const scheduleOutputEl = document.getElementById('stsc-schedule-output'); if(scheduleOutputEl) scheduleOutputEl.innerHTML = scheduleHTML; stscOpenTab(null, 'stsc-schedule'); stscUpdateNavButtons(); } function stscDownloadPDF() { const scheduleOutputElement = document.getElementById('stsc-schedule-output'); if (!scheduleOutputElement || scheduleOutputElement.innerHTML.includes("Please input tasks")) { alert("Please generate a schedule first."); return; } let pdfHTML = `

Customized Task Schedule

`; // Add Initial Task List to PDF pdfHTML += `

Initial Task List (${stscTasks.length})

`; if (stscTasks.length > 0) { stscTasks.forEach(task => { pdfHTML += `
${task.name}
Priority: ${task.priority} | Est. Time: ${task.estTime} min ${task.dueDate ? ` | Due: ${new Date(task.dueDate+"T00:00:00").toLocaleDateString()}` : ''}
`; }); } else { pdfHTML += "

No tasks were initially listed.

"; } // Add schedule content (already generated and in scheduleOutputElement) pdfHTML += scheduleOutputElement.innerHTML; // This already has "Generated Schedule" h3 and then day breakdowns & unscheduled const pdfContainer = document.getElementById('stsc-report-content-for-pdf'); if (!pdfContainer) return; pdfContainer.innerHTML = pdfHTML; const opt = { margin: [0.5, 0.3, 0.5, 0.3], filename: 'Customized_Task_Schedule.pdf', image: { type: 'jpeg', quality: 0.98 }, html2canvas: { scale: 2, useCORS: true, logging: false, scrollX: 0, scrollY: 0, windowWidth: pdfContainer.scrollWidth }, jsPDF: { unit: 'in', format: 'letter', orientation: 'portrait' }, pagebreak: { mode: ['avoid-all', 'css', 'legacy'] } }; html2pdf().from(pdfContainer).set(opt).save().then(() => { pdfContainer.innerHTML = ''; }).catch(err => { console.error("Error generating PDF:", err); pdfContainer.innerHTML = ''; alert("An error occurred while generating the PDF. Check console for details."); }); }
Scroll to Top