Smart Auto-Scheduling Assistant

Smart Auto-Scheduling Assistant

Schedule Period & General Availability

Weekly Availability (Default Working Hours)

Fixed Events/Appointments

    Tasks to Schedule

      Please provide inputs and click "Generate Auto-Schedule" on the first tab.

      Assistant Insights & Alerts

      • No insights yet. Generate a schedule first.
      `; } displayHTML += `
      `; }); document.getElementById('sasa-generated-schedule-display').innerHTML = displayHTML; // Insights const insightsList = document.getElementById('sasa-insights-list'); insightsList.innerHTML = ''; // Clear previous insights tasksToSchedule.forEach(task => { if (!task.scheduled) { let reason = "Could not find a suitable time slot."; if (task.deadlineType === 'Hard' && task.originalDueDateObj) { reason += ` Failed to meet hard deadline of ${task.dueDate}.`; } const li = document.createElement('li'); li.textContent = `Unscheduled: ${task.name} (Prio: ${task.priority}, Est: ${task.estTime}min). ${reason}`; li.style.color = 'var(--danger-color)'; insightsList.appendChild(li); } else if (task.deadlineType === 'Soft' && task.originalDueDateObj && new Date(task.scheduledOn + "T00:00:00") > task.originalDueDateObj) { const li = document.createElement('li'); li.textContent = `Warning: ${task.name} scheduled on ${task.scheduledOn} after its soft deadline of ${task.dueDate}.`; li.style.color = 'var(--warning-color)'; insightsList.appendChild(li); } }); if (insightsList.children.length === 0) { insightsList.innerHTML = '
    • All tasks scheduled successfully within constraints!
    • '; } sasaOpenTab(null, 'sasa-schedule'); sasaUpdateNavButtons(); } // PDF Download function sasaDownloadPDF() { const scheduleDisplay = document.getElementById('sasa-generated-schedule-display').innerHTML; const insightsDisplay = document.getElementById('sasa-insights-output').innerHTML; if (scheduleDisplay.includes("Please provide inputs")) { alert("Please generate a schedule first."); return; } let pdfHTML = `

      Smart Auto-Scheduling Report

      `; pdfHTML += `

      Generated Schedule

      ${scheduleDisplay}`; pdfHTML += `

      Assistant Insights & Alerts

      ${insightsDisplay}`; // Add summary of inputs (Events and Tasks) pdfHTML += `

      Input Summary

      `; pdfHTML += `

      Fixed Events (${sasaFixedEvents.length})

        `; sasaFixedEvents.forEach(e => { pdfHTML += `
      • ${e.name}: ${e.date} ${e.startTime}-${e.endTime}
      • `;}); pdfHTML += `
      `; pdfHTML += `

      Tasks (${sasaTasks.length})

        `; sasaTasks.forEach(t => { pdfHTML += `
      • ${t.name} (Prio: ${t.priority}, Est: ${t.estTime}min, Due: ${t.dueDate || 'N/A'}, ${t.deadlineType})
      • `;}); pdfHTML += `
      `; const pdfContainer = document.getElementById('sasa-report-content-for-pdf'); pdfContainer.innerHTML = pdfHTML; const opt = { margin: [0.5, 0.4, 0.5, 0.4], filename: 'Auto_Schedule_Assistant_Report.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