document.addEventListener('DOMContentLoaded', () => { // DOM Elements const addTaskBtn = document.getElementById('addTaskBtn'); const taskModal = document.getElementById('taskModal'); const closeModalBtn = document.getElementById('closeModalBtn'); const cancelTaskBtn = document.getElementById('cancelTaskBtn'); const taskForm = document.getElementById('taskForm'); // Task containers const todoTasks = document.getElementById('todoTasks'); const inProgressTasks = document.getElementById('inProgressTasks'); const completedTasks = document.getElementById('completedTasks'); // Sample tasks let tasks = [ { id: 1, title: 'Design dashboard UI', description: 'Create wireframes for the new dashboard', status: 'todo', priority: 'high', createdAt: new Date() }, { id: 2, title: 'Write documentation', description: 'Document the API endpoints', status: 'in-progress', priority: 'medium', createdAt: new Date() }, { id: 3, title: 'Fix login bug', description: 'Users unable to login on mobile', status: 'completed', priority: 'high', createdAt: new Date() } ]; // Modal handlers addTaskBtn.addEventListener('click', () => { taskModal.classList.remove('hidden'); }); closeModalBtn.addEventListener('click', () => { taskModal.classList.add('hidden'); }); cancelTaskBtn.addEventListener('click', () => { taskModal.classList.add('hidden'); }); // Form submission taskForm.addEventListener('submit', (e) => { e.preventDefault(); const title = document.getElementById('taskTitle').value; const description = document.getElementById('taskDescription').value; const priority = document.getElementById('taskPriority').value; const newTask = { id: Date.now(), title, description, status: 'todo', priority, createdAt: new Date() }; tasks.push(newTask); renderTasks(); taskModal.classList.add('hidden'); taskForm.reset(); }); // Render all tasks function renderTasks() { todoTasks.innerHTML = ''; inProgressTasks.innerHTML = ''; completedTasks.innerHTML = ''; tasks.forEach(task => { const taskElement = createTaskElement(task); if (task.status === 'todo') { todoTasks.appendChild(taskElement); } else if (task.status === 'in-progress') { inProgressTasks.appendChild(taskElement); } else { completedTasks.appendChild(taskElement); } }); feather.replace(); addDragEvents(); } // Create a task card function createTaskElement(task) { const taskElement = document.createElement('div'); taskElement.className = `task-card bg-white rounded-lg shadow p-4 cursor-move task-animate priority-${task.priority}`; taskElement.setAttribute('draggable', 'true'); taskElement.dataset.id = task.id; let priorityColor = 'bg-gray-400'; if (task.priority === 'high') priorityColor = 'bg-red-500'; else if (task.priority === 'medium') priorityColor = 'bg-yellow-500'; else if (task.priority === 'low') priorityColor = 'bg-green-500'; taskElement.innerHTML = `
${task.description}