Online Class Schedule Organizer

Online Class Schedule Organizer

Manage your weekly classes and assignments with ease.

Add/Edit Class

Weekly Schedule

Assignments & Deadlines

Add Assignment

Upcoming Deadlines

Your assignments will appear here.

Your assignments will appear here.

'; return; } // Sort by due date assignments.sort((a, b) => new Date(a.due) - new Date(b.due)); assignments.forEach((item, index) => { const el = document.createElement('div'); el.className = 'flex items-center justify-between p-2 bg-white rounded shadow-sm border-l-4 border-orange-400'; el.innerHTML = `

${item.desc}

Due: ${new Date(item.due + 'T00:00:00').toLocaleDateString()}

`; assignmentList.appendChild(el); }); }; addAssignmentBtn.addEventListener('click', () => { const desc = assignmentDescInput.value.trim(); const due = assignmentDueInput.value; if (!desc || !due) return; assignments.push({ desc, due }); assignmentDescInput.value = ''; assignmentDueInput.value = ''; renderAssignments(); }); assignmentList.addEventListener('click', (e) => { if (e.target.classList.contains('delete-assignment-btn')) { assignments.splice(e.target.dataset.index, 1); renderAssignments(); } }); // --- PDF DOWNLOAD LOGIC --- downloadPdfBtn.addEventListener('click', () => { const { jsPDF } = window.jspdf; const doc = new jsPDF({ orientation: 'l' }); doc.setFontSize(22); doc.text('My Class Schedule & Assignments', 148, 20, { align: 'center' }); doc.setFontSize(16); doc.text('Weekly Class Schedule', 14, 35); doc.autoTable({ html: '#schedule-table', startY: 40, theme: 'grid', styles: { fontSize: 7, cellPadding: 1, halign: 'center', valign: 'middle' }, headStyles: { fillColor: [45, 55, 72] }, didParseCell: function(data) { // This is to handle the colored divs inside cells if (data.cell.raw.querySelector('.class-entry')) { data.cell.text = data.cell.raw.querySelector('.class-entry strong').innerText; } } }); let finalY = doc.lastAutoTable.finalY + 15; if (finalY > 180) { // Check if new page is needed doc.addPage(); finalY = 20; } doc.setFontSize(16); doc.text('Upcoming Assignments', 14, finalY); if (assignments.length > 0) { const assignmentData = assignments.map(a => [a.desc, new Date(a.due + 'T00:00:00').toLocaleDateString()]); doc.autoTable({ head: [['Assignment', 'Due Date']], body: assignmentData, startY: finalY + 5, theme: 'striped' }); } else { doc.setFontSize(10); doc.text('No assignments logged.', 14, finalY + 10); } doc.save('class-schedule.pdf'); }); init(); });
Scroll to Top