// Utility functions function formatBytes(bytes, decimals = 2) { if (bytes === 0) return '0 Bytes'; const k = 1024; const dm = decimals < 0 ? 0 : decimals; const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB']; const i = Math.floor(Math.log(bytes) / Math.log(k)); return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i]; } document.addEventListener('DOMContentLoaded', function() { // DOM Elements const addTaskBtn = document.getElementById('addTaskBtn'); const taskModal = document.getElementById('taskModal'); const closeModalBtn = document.getElementById('closeModalBtn'); const taskForm = document.getElementById('taskForm'); const tasksContainer = document.querySelector('.grid'); // Sample tasks data let tasks = [ { id: 1, name: 'Configure Modem Settings', description: 'Update the modem firmware and configure security settings', priority: 'high', completed: false, date: new Date() }, { id: 2, name: 'Check Network Speed', description: 'Run speed tests at different times of day', priority: 'medium', completed: false, date: new Date() }, { id: 3, name: 'Document Configuration', description: 'Create documentation for current modem setup', priority: 'low', completed: true, date: new Date() } ]; // Event Listeners addTaskBtn.addEventListener('click', openModal); closeModalBtn.addEventListener('click', closeModal); taskForm.addEventListener('submit', handleTaskSubmit); // Render initial tasks renderTasks(); // Functions function openModal() { taskModal.classList.remove('hidden'); } function closeModal() { taskModal.classList.add('hidden'); } function handleTaskSubmit(e) { e.preventDefault(); const taskName = document.getElementById('taskName').value; const taskDescription = document.getElementById('taskDescription').value; const taskPriority = document.getElementById('taskPriority').value; const newTask = { id: Date.now(), name: taskName, description: taskDescription, priority: taskPriority, completed: false, date: new Date() }; tasks.unshift(newTask); renderTasks(); closeModal(); taskForm.reset(); } function renderTasks() { tasksContainer.innerHTML = ''; tasks.forEach(task => { const taskCard = document.createElement('div'); taskCard.className = `task-card bg-white dark:bg-gray-800 rounded-lg shadow-md p-6 ${task.priority}-priority ${task.completed ? 'completed' : ''}`; taskCard.innerHTML = `

${task.name}

${task.priority}

${task.description}

${formatDate(task.date)}
`; tasksContainer.appendChild(taskCard); }); // Add event listeners to new buttons document.querySelectorAll('.task-complete-btn').forEach(btn => { btn.addEventListener('click', toggleTaskComplete); }); document.querySelectorAll('.task-delete-btn').forEach(btn => { btn.addEventListener('click', deleteTask); }); feather.replace(); } function toggleTaskComplete(e) { const taskId = parseInt(e.currentTarget.getAttribute('data-id')); const taskIndex = tasks.findIndex(task => task.id === taskId); if (taskIndex !== -1) { tasks[taskIndex].completed = !tasks[taskIndex].completed; renderTasks(); } } function deleteTask(e) { const taskId = parseInt(e.currentTarget.getAttribute('data-id')); tasks = tasks.filter(task => task.id !== taskId); renderTasks(); } function getPriorityClass(priority) { switch(priority) { case 'high': return 'bg-red-100 text-red-800 dark:bg-red-900 dark:text-red-200'; case 'medium': return 'bg-yellow-100 text-yellow-800 dark:bg-yellow-900 dark:text-yellow-200'; case 'low': return 'bg-green-100 text-green-800 dark:bg-green-900 dark:text-green-200'; default: return ''; } } function formatDate(date) { return new Date(date).toLocaleDateString('en-US', { month: 'short', day: 'numeric', year: 'numeric' }); } });