This commit is contained in:
2026-03-04 12:39:43 +05:00
parent 850a23e962
commit aca869fd80

View File

@@ -1,63 +1,107 @@
// main.js - Главный файл инициализации
// Глобальная переменная для вида задач (используем window, чтобы избежать конфликтов)
window.currentTaskView = 'all'; // 'all', 'my_assigned', 'assigned_to_me'
let allTasksCache = []; // Кэш всех задач (может быть полезен)
let currentTaskView = 'all'; // 'all', 'my_assigned', 'assigned_to_me'
let allTasksCache = []; // Кэш всех задач
document.addEventListener('DOMContentLoaded', function() {
checkAuth();
// setupEventListeners убран отсюда будет вызван после загрузки всех скриптов
setupEventListeners();
// Инициализация выбора времени
initializeTimeSelectors();
// Инициализация фильтра
const taskViewFilter = document.getElementById('task-view-filter');
if (taskViewFilter) {
taskViewFilter.value = window.currentTaskView;
taskViewFilter.value = currentTaskView;
}
// По умолчанию показываем секцию задач
showSection('tasks');
});
// Функция настройки обработчиков событий будет вызвана после загрузки всех скриптов
function setupEventListeners() {
console.log('🔧 Настройка обработчиков событий...');
// Форма входа
document.getElementById('login-form').addEventListener('submit', login);
const loginForm = document.getElementById('login-form');
if (loginForm) loginForm.addEventListener('submit', login);
// Формы задач
document.getElementById('create-task-form').addEventListener('submit', createTask);
document.getElementById('edit-task-form').addEventListener('submit', updateTask);
document.getElementById('copy-task-form').addEventListener('submit', copyTask);
document.getElementById('edit-assignment-form').addEventListener('submit', updateAssignment);
document.getElementById('rework-task-form').addEventListener('submit', sendForRework);
const createForm = document.getElementById('create-task-form');
if (createForm) createForm.addEventListener('submit', createTask);
const editForm = document.getElementById('edit-task-form');
if (editForm) editForm.addEventListener('submit', updateTask);
const copyForm = document.getElementById('copy-task-form');
if (copyForm) copyForm.addEventListener('submit', copyTask);
const editAssignmentForm = document.getElementById('edit-assignment-form');
if (editAssignmentForm) editAssignmentForm.addEventListener('submit', updateAssignment);
const reworkForm = document.getElementById('rework-task-form');
if (reworkForm) reworkForm.addEventListener('submit', sendForRework);
const filesInput = document.getElementById('files');
if (filesInput) filesInput.addEventListener('change', updateFileList);
const editFilesInput = document.getElementById('edit-files');
if (editFilesInput) editFilesInput.addEventListener('change', updateEditFileList);
// Файлы
document.getElementById('files').addEventListener('change', updateFileList);
document.getElementById('edit-files').addEventListener('change', updateEditFileList);
// Настройки уведомлений
const notificationForm = document.getElementById('notification-settings-form');
if (notificationForm) notificationForm.addEventListener('submit', saveNotificationSettings);
if (notificationForm) {
notificationForm.addEventListener('submit', saveNotificationSettings);
}
// Инициализация загрузки файлов
initializeFileUploads();
}
// Функция для изменения вида задач
function changeTaskView() {
const select = document.getElementById('task-view-filter');
window.currentTaskView = select.value;
currentTaskView = select.value;
loadTasks();
}
// Переопределяем функцию loadTasks для фильтрации
(function() {
// Сохраняем оригинальную функцию loadTasks
const originalLoadTasks = window.loadTasks;
// Создаем новую функцию
window.loadTasks = async function() {
// Вызываем оригинальную функцию
if (typeof originalLoadTasks === 'function') {
await originalLoadTasks();
}
// Кэшируем все задачи
if (window.tasks && Array.isArray(window.tasks)) {
allTasksCache = [...window.tasks];
// Фильтруем задачи в зависимости от выбранного вида
if (currentTaskView !== 'all' && currentUser) {
let filteredTasks = [];
if (currentTaskView === 'my_assigned') {
// Показываем задачи, которые я назначил (я - создатель)
filteredTasks = window.tasks.filter(task => {
return parseInt(task.created_by) === currentUser.id;
});
} else if (currentTaskView === 'assigned_to_me') {
// Показываем задачи, назначенные мне (я - исполнитель)
filteredTasks = window.tasks.filter(task => {
// Проверяем, назначена ли задача текущему пользователю
if (task.assignments && Array.isArray(task.assignments)) {
return task.assignments.some(assignment =>
parseInt(assignment.user_id) === currentUser.id
);
}
return false;
});
}
// Обновляем глобальный массив задач
window.tasks = filteredTasks;
// Перерисовываем задачи
if (window.renderTasks && typeof window.renderTasks === 'function') {
window.renderTasks();
}
}
}
};
})();
// Обновленная функция для создания задачи
async function createTask(event) {
event.preventDefault();
@@ -452,16 +496,11 @@ function showSection(sectionName) {
document.getElementById(sectionName + '-section').classList.add('active');
if (sectionName === 'tasks') {
window.currentTaskView = 'all';
loadTasks();
} else if (sectionName === 'logs') {
loadActivityLogs();
} else if (sectionName === 'kanban') {
loadKanbanTasks();
} else if (sectionName === 'mytasks') {
showMyTasksSection(); // из loadMyCreatedTasks.js
} else if (sectionName === 'runtasks') {
showRunTasksSection(); // из loadMyCreatedTasks.js
}
// Загрузка профиля при переходе в личный кабинет
@@ -475,4 +514,4 @@ function showSection(sectionName) {
function showKanbanSection() {
showSection('kanban');
}
window.setupEventListeners = setupEventListeners;