diff --git a/index.html b/index.html index da78416..d146236 100644 --- a/index.html +++ b/index.html @@ -434,8 +434,15 @@

New subject

New task

- - + + + diff --git a/js/app.js b/js/app.js index 9bfd993..c3213f9 100644 --- a/js/app.js +++ b/js/app.js @@ -138,12 +138,12 @@ function renderSidebarSubjects() { const newTaskModal = document.getElementById('new-task-modal'); const newTaskSubject = document.getElementById('new-task-subject'); +const subjectsList = document.getElementById('subjects-list'); const newTaskTitle = document.getElementById('new-task-title'); const newTaskDate = document.getElementById('new-task-date'); const newTaskNotes = document.getElementById('new-task-notes'); const newTaskCancel = document.getElementById('new-task-cancel'); const newTaskSave = document.getElementById('new-task-save'); - // Timer elements const timerText = document.getElementById('timer-text'); const timerPathRemaining = document.getElementById('timer-path-remaining'); @@ -972,55 +972,93 @@ document.addEventListener('DOMContentLoaded', () => { }); -//NEw Task addition event listeners + +// NEW TASK ADDITION EVENT LISTENERS newTaskBtn.addEventListener('click', () => { - + + // Check if subjects loaded if (!store.subjects || store.subjects.length === 0) { alert('Subjects are still loading. Please try again in a moment.'); return; } - newTaskSubject.innerHTML = store.subjects - .map(s => ``) + // Fill datalist with subjects + subjectsList.innerHTML = store.subjects + .map(s => ``) .join(''); - + // Default date if (selectedDate) { const d = new Date(selectedDate); - d.setHours(18, 0, 0, 0); + d.setHours(18, 0, 0, 0); newTaskDate.value = d.toISOString().substring(0, 16); } else { newTaskDate.value = ''; } + // Clear fields + newTaskSubject.value = ''; newTaskTitle.value = ''; newTaskNotes.value = ''; + // Open modal newTaskModal.style.display = 'flex'; }); +// Cancel button newTaskCancel.addEventListener('click', () => { newTaskModal.style.display = 'none'; }); +// Close when clicking outside newTaskModal.addEventListener('click', (e) => { if (e.target === newTaskModal) { newTaskModal.style.display = 'none'; } }); +// Save task newTaskSave.addEventListener('click', async () => { + const title = newTaskTitle.value.trim(); - const subject_id = newTaskSubject.value; + const subjectName = newTaskSubject.value.trim(); const notes = newTaskNotes.value.trim(); const dateVal = newTaskDate.value; + // Validation if (!title) { alert('Please enter a task name'); return; } - const due_at = dateVal ? new Date(dateVal).toISOString() : ''; + if (!subjectName) { + alert('Please enter a subject'); + return; + } + + // Find existing subject + let selectedSubject = store.subjects.find( + s => s.name.toLowerCase() === subjectName.toLowerCase() + ); + + // Create subject if not found + if (!selectedSubject) { + await store.addSubject({ + name: subjectName, + color: SUBJECT_COLORS[0] + }); + + // Reload subject + selectedSubject = store.subjects.find( + s => s.name.toLowerCase() === subjectName.toLowerCase() + ); + } + + const subject_id = selectedSubject.id; + + const due_at = dateVal + ? new Date(dateVal).toISOString() + : ''; const newTask = { title, @@ -1033,9 +1071,11 @@ newTaskSave.addEventListener('click', async () => { }; await store.addTasks([newTask]); + newTaskModal.style.display = 'none'; }); +// Add extracted items addItemsBtn.addEventListener('click', () => { if (store.currentPaste) { store.addTasks(store.currentPaste); @@ -1043,8 +1083,6 @@ addItemsBtn.addEventListener('click', () => { pasteInput.value = ''; } }); -}); - extractBtn.addEventListener('click', async () => { const text = pasteInput.value; if (!text.trim()) return; @@ -1076,3 +1114,4 @@ addItemsBtn.addEventListener('click', () => { downloadBtn.addEventListener('click', () => { downloadData(); }); +}); \ No newline at end of file