Online Homework Planner
Organize your assignments and never miss a deadline.
Add New Homework
Smart Reminders
Your Homework List
No homework tasks yet. Add one to get started!
`; } else { sortedTasks.forEach(task => { const taskCard = document.createElement('div'); taskCard.className = `task-card p-4 border-l-4 rounded-r-lg bg-white shadow-sm flex items-start gap-4 ${task.completed ? 'completed' : ''} new-task-animation`; taskCard.style.borderColor = getPriorityColor(task.priority); taskCard.dataset.id = task.id; const dueDate = dayjs(task.dueDate); const isOverdue = !task.completed && dueDate.isBefore(dayjs(), 'day'); taskCard.innerHTML = `${task.subject}
${task.description}
Due: ${dueDate.format('MMMM D, YYYY')} (${dueDate.fromNow()})
🎉 All caught up! No pending homework.
`; return; } // Reminder 1: Most urgent task const mostUrgent = upcomingTasks[0]; const urgentDueDate = dayjs(mostUrgent.dueDate); const isUrgentOverdue = urgentDueDate.isBefore(dayjs(), 'day'); aiRemindersContainer.innerHTML += `
Next Up: ${mostUrgent.subject} is due ${urgentDueDate.fromNow()}. ${isUrgentOverdue ? 'It is overdue!' : ''}
`;
// Reminder 2: High priority tasks
const highPriority = upcomingTasks.filter(t => t.priority === '3');
if (highPriority.length > 0) {
aiRemindersContainer.innerHTML += `
Heads Up: You have ${highPriority.length} high-priority task${highPriority.length > 1 ? 's' : ''} pending.
`;
}
};
const handleFormSubmit = (e) => {
e.preventDefault();
const id = taskIdInput.value;
const taskData = {
subject: taskSubject.value,
description: taskDescription.value,
dueDate: taskDueDate.value,
priority: taskPriority.value,
completed: false
};
if (id) { // Editing existing task
const taskIndex = tasks.findIndex(t => t.id == id);
if (taskIndex > -1) {
tasks[taskIndex] = { ...tasks[taskIndex], ...taskData };
}
} else { // Adding new task
taskData.id = Date.now();
tasks.push(taskData);
}
saveTasks();
renderTasks();
taskForm.reset();
resetFormState();
};
const handleTaskListClick = (e) => {
const target = e.target.closest('button, input[type="checkbox"]');
if (!target) return;
const taskCard = target.closest('.task-card');
const taskId = parseInt(taskCard.dataset.id);
if (target.classList.contains('edit-btn')) {
const task = tasks.find(t => t.id === taskId);
if (task) {
taskSubject.value = task.subject;
taskDescription.value = task.description;
taskDueDate.value = task.dueDate;
taskPriority.value = task.priority;
taskIdInput.value = task.id;
submitBtn.textContent = 'Update Task';
cancelEditBtn.classList.remove('hidden');
taskSubject.focus();
}
} else if (target.classList.contains('delete-btn')) {
tasks = tasks.filter(t => t.id !== taskId);
saveTasks();
renderTasks();
} else if (target.classList.contains('toggle-complete-btn')) {
const taskIndex = tasks.findIndex(t => t.id === taskId);
if (taskIndex > -1) {
tasks[taskIndex].completed = target.checked;
saveTasks();
renderTasks();
}
}
};
const resetFormState = () => {
taskIdInput.value = '';
submitBtn.textContent = 'Add Task';
cancelEditBtn.classList.add('hidden');
taskForm.reset();
};
const generatePDF = () => {
const container = getElement('homework-planner-container');
if (!container) return;
// Create a temporary printable version
const printableContent = document.createElement('div');
// Style it to be off-screen so it doesn't flash
printableContent.style.position = 'absolute';
printableContent.style.left = '-9999px';
printableContent.style.width = '210mm'; // A4 width for better rendering
printableContent.innerHTML += `My Homework Schedule
Generated on: ${dayjs().format('MMMM D, YYYY')}
