Online Homework & Assignment Planner

Homework & Assignment Planner

Stay organized and never miss a deadline again.

Add Assignment

Assignment List

Your assignments will appear here.

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

`; assignmentListDiv.appendChild(itemEl); }); }; const renderCalendar = () => { calendarViewDiv.innerHTML = ''; const month = calendarDate.getMonth(); const year = calendarDate.getFullYear(); calendarMonthYear.textContent = calendarDate.toLocaleDateString('en-US', { month: 'long', year: 'numeric' }); const firstDay = new Date(year, month, 1).getDay(); const daysInMonth = new Date(year, month + 1, 0).getDate(); const dayNames = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']; dayNames.forEach(name => { const headerEl = document.createElement('div'); headerEl.className = 'text-center font-bold bg-slate-100 p-2'; headerEl.textContent = name; calendarViewDiv.appendChild(headerEl); }); for (let i = 0; i < firstDay; i++) { calendarViewDiv.appendChild(document.createElement('div')); } for (let i = 1; i <= daysInMonth; i++) { const dayEl = document.createElement('div'); dayEl.className = 'calendar-day p-2 bg-white'; dayEl.innerHTML = `${i}`; const dateStr = `${year}-${String(month + 1).padStart(2, '0')}-${String(i).padStart(2, '0')}`; const todaysAssignments = assignments.filter(a => a.due === dateStr); if(todaysAssignments.length > 0) { const list = document.createElement('ul'); list.className = 'text-xs mt-4'; todaysAssignments.forEach(a => { const li = document.createElement('li'); li.className = 'truncate'; li.innerHTML = ` ${a.desc}`; list.appendChild(li); }); dayEl.appendChild(list); } calendarViewDiv.appendChild(dayEl); } }; // --- EVENT LISTENERS --- addBtn.addEventListener('click', () => { const desc = descInput.value.trim(); const subject = subjectInput.value.trim(); const due = dueDateInput.value; const priority = prioritySelect.value; if (!desc || !subject || !due) return; assignments.push({ id: Date.now(), desc, subject, due, priority, completed: false }); descInput.value = ''; subjectInput.value = ''; renderAll(); }); assignmentListDiv.addEventListener('click', e => { const id = parseInt(e.target.dataset.id); if (e.target.classList.contains('delete-btn')) { assignments = assignments.filter(item => item.id !== id); } if (e.target.classList.contains('toggle-complete-btn')) { const item = assignments.find(item => item.id === id); if (item) item.completed = e.target.checked; } renderAll(); }); prevMonthBtn.addEventListener('click', () => { calendarDate.setMonth(calendarDate.getMonth() - 1); renderCalendar(); }); nextMonthBtn.addEventListener('click', () => { calendarDate.setMonth(calendarDate.getMonth() + 1); renderCalendar(); }); // --- PDF DOWNLOAD --- downloadPdfBtn.addEventListener('click', () => { const { jsPDF } = window.jspdf; const doc = new jsPDF(); doc.setFontSize(22); doc.text('Homework & Assignment Plan', 105, 20, { align: 'center' }); const tableData = assignments.map(a => [ a.desc, a.subject, new Date(a.due + 'T00:00:00').toLocaleDateString(), a.priority.charAt(0).toUpperCase() + a.priority.slice(1), a.completed ? 'Yes' : 'No' ]); doc.autoTable({ head: [['Description', 'Subject', 'Due Date', 'Priority', 'Completed']], body: tableData, startY: 30, theme: 'grid' }); doc.save('homework-plan.pdf'); }); // --- INITIALIZATION --- loadSampleData(); });
Scroll to Top