diff --git a/public/ui.js b/public/ui.js index 0a3c00e..cca1292 100644 --- a/public/ui.js +++ b/public/ui.js @@ -587,15 +587,25 @@ function filterAssignments(taskId) { filterCount.textContent = `${visibleCount} из ${assignments.length} исполнителей`; } } +// Добавим проверку на существование глобального множества expandedTasks +if (typeof expandedTasks === 'undefined') { + window.expandedTasks = new Set(); +} -function toggleTask(taskId) { - if (expandedTasks.has(taskId)) { - expandedTasks.delete(taskId); - } else { - expandedTasks.add(taskId); - loadTaskFiles(taskId); - } +async function toggleTask(taskId) { + const wasExpanded = expandedTasks.has(taskId); + // Сворачиваем все задачи + expandedTasks.clear(); + + if (!wasExpanded) { + // Если задача была свёрнута – разворачиваем её и загружаем файлы + expandedTasks.add(taskId); + await loadTaskFiles(taskId); // ждём загрузки файлов + } + // если была развёрнута – после clear() она свернута, loadTaskFiles не нужен + + // Перерисовываем активную секцию const activeSection = document.querySelector('.section.active'); if (activeSection) { const sectionId = activeSection.id; diff --git a/server.js b/server.js index 701adb2..a917ccf 100644 --- a/server.js +++ b/server.js @@ -1584,7 +1584,7 @@ initializeServer().then(() => { // Запускаем фоновые задачи setInterval(checkOverdueTasks, 60000); setInterval(checkUpcomingDeadlines, 60000); - setInterval(() => cronJobs.checkDocumentsForCompletion(db), 60000); + setInterval(() => cronJobs.checkDocumentsForCompletion(db), 5*60000); }); }).catch(error => { console.error('❌ Не удалось запустить сервер:', error);