/** * GoingsOn - Tasks Kanban Module * Board view with drag-and-drop status changes */ (function() { 'use strict'; const esc = GoingsOn.utils.escapeHtml; const escAttr = GoingsOn.utils.escapeAttr; const COLUMNS = [ { status: 'Pending', label: 'Pending' }, { status: 'Started', label: 'Started' }, { status: 'Completed', label: 'Completed' }, ]; // ============ Rendering ============ function render(tasks) { const board = document.getElementById('task-kanban-board'); if (!board) return; // Group tasks by status const grouped = { Pending: [], Started: [], Completed: [] }; for (const task of tasks) { const status = task.status || 'Pending'; if (grouped[status]) { grouped[status].push(task); } } board.innerHTML = COLUMNS.map(col => { const colTasks = grouped[col.status] || []; return `