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')}
