// kanban.js - Канбан-доска let kanbanTasks = []; let kanbanDays = 14; let currentDraggedTask = null; function showKanbanSection() { showSection('kanban'); loadKanbanTasks(); } async function loadKanbanTasks() { try { const daysSelect = document.getElementById('kanban-days'); const filterSelect = document.getElementById('kanban-filter'); // Если есть выбор в интерфейсе - используем его, иначе - значение по умолчанию if (daysSelect) { kanbanDays = parseInt(daysSelect.value) || 14; } else { kanbanDays = 14; } let filter = 'all'; if (filterSelect) { filter = filterSelect.value; } const response = await fetch(`/api/kanban-tasks?days=${kanbanDays}&filter=${filter}`); if (!response.ok) { throw new Error(`Ошибка сервера: ${response.status}`); } const data = await response.json(); kanbanTasks = data.tasks || []; renderKanban(data.filter); } catch (error) { console.error('Ошибка загрузки задач для Канбана:', error); document.getElementById('kanban-board').innerHTML = `
`; } } function renderKanban(filter = 'all') { const container = document.getElementById('kanban-board'); // Группируем задачи по статусам (убрали 'unassigned') const columns = { 'assigned': { title: 'Назначены', tasks: [], color: '#e74c3c' }, 'in_progress': { title: 'В работе', tasks: [], color: '#f39c12' }, 'rework': { title: 'На доработке', tasks: [], color: '#f1c40f' }, 'overdue': { title: 'Просрочены', tasks: [], color: '#c0392b' }, 'completed': { title: 'Выполнены', tasks: [], color: '#2ecc71' } }; // Распределяем задачи по колонкам kanbanTasks.forEach(task => { const status = task.kanbanStatus || 'assigned'; // Преобразуем 'unassigned' в 'assigned' const actualStatus = status === 'unassigned' ? 'assigned' : status; if (columns[actualStatus]) { columns[actualStatus].tasks.push(task); } else { // Если статус не найден, добавляем в 'assigned' columns['assigned'].tasks.push(task); } }); // Статистика по фильтру let filterTitle = 'Все задачи'; if (filter === 'created') filterTitle = 'Задачи, которые я поставил'; if (filter === 'assigned') filterTitle = 'Задачи, которые мне поставили'; container.innerHTML = `