Smart Weekend Workload Optimizer

Smart Weekend Workload Optimizer

Weekend Availability

Saturday

Sunday

Tasks & Activities

    Define your availability and tasks on the first tab, then click "Optimize My Weekend!".

    Tasks Not Scheduled

    • All tasks were scheduled or no tasks to schedule.

    Total Scheduled: ${swwoMinutesToTime(totalScheduledMins)}

    Time Remaining: ${swwoMinutesToTime(totalAvailableMins - totalScheduledMins)}

    `; }); document.getElementById('swwo-optimized-schedule-display').innerHTML = scheduleHTML; unscheduledTasks = tasksToSchedule.filter(t => !t.scheduled); const unscheduledListEl = document.getElementById('swwo-unscheduled-tasks-list'); unscheduledListEl.innerHTML = unscheduledTasks.length === 0 ? '
  • All tasks and activities were scheduled!
  • ' : ''; unscheduledTasks.forEach(task => { const li = document.createElement('li'); li.innerHTML = `${task.name} (Est: ${task.estTime}min, Prio: ${task.priority}, Pref: ${task.preferredDay}) - Could not find a suitable time slot.`; unscheduledListEl.appendChild(li); }); swwoOpenTab(null, 'swwo-schedule'); swwoUpdateNavButtons(); } // PDF Download function swwoDownloadPDF() { const scheduleDisplayElement = document.getElementById('swwo-optimized-schedule-display').innerHTML; const unscheduledTasksElement = document.getElementById('swwo-unscheduled-tasks-list').outerHTML; if (scheduleDisplayElement.includes("Define your availability")) { alert("Please generate a schedule first."); return; } let pdfHTML = `

    Optimized Weekend Plan

    `; // Input Summary for PDF pdfHTML += `

    Availability Summary

    Saturday

      `; swwoGetAvailabilityForDay('saturday').forEach(b => pdfHTML += `
    • ${b.start} - ${b.end}
    • `); if(swwoGetAvailabilityForDay('saturday').length === 0) pdfHTML += `
    • No specific availability blocks set.
    • `; pdfHTML += `

    Sunday

      `; swwoGetAvailabilityForDay('sunday').forEach(b => pdfHTML += `
    • ${b.start} - ${b.end}
    • `); if(swwoGetAvailabilityForDay('sunday').length === 0) pdfHTML += `
    • No specific availability blocks set.
    • `; pdfHTML += `
    `; pdfHTML += `

    Tasks & Activities List (${swwoTasks.length})

      `; swwoTasks.forEach(task => { let details = `Cat: ${task.category}, Est: ${task.estTime}min, Prio: ${task.priority}, Pref: ${task.preferredDay}`; if (task.isFixed) details += ` | Fixed: ${task.fixedDay} ${task.fixedStart}-${task.fixedEnd}`; pdfHTML += `
    • ${task.name} - ${details}
    • `; }); if(swwoTasks.length === 0) pdfHTML += `
    • No tasks or activities were added.
    • `; pdfHTML += `
    `; // Schedule display pdfHTML += `

    Generated Schedule

    ${scheduleDisplayElement}
    `; // For PDF, ensure columns stack if needed by changing display pdfHTML += `

    Tasks Not Scheduled

    ${unscheduledTasksElement}`; const pdfContainer = document.getElementById('swwo-report-content-for-pdf'); pdfContainer.innerHTML = pdfHTML; const opt = { margin: [0.5, 0.4, 0.5, 0.4], filename: 'Optimized_Weekend_Plan.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