main
This commit is contained in:
113
public/main.js
113
public/main.js
@@ -1,63 +1,107 @@
|
|||||||
// main.js - Главный файл инициализации
|
// main.js - Главный файл инициализации
|
||||||
// Глобальная переменная для вида задач (используем window, чтобы избежать конфликтов)
|
let currentTaskView = 'all'; // 'all', 'my_assigned', 'assigned_to_me'
|
||||||
window.currentTaskView = 'all'; // 'all', 'my_assigned', 'assigned_to_me'
|
let allTasksCache = []; // Кэш всех задач
|
||||||
let allTasksCache = []; // Кэш всех задач (может быть полезен)
|
|
||||||
|
|
||||||
document.addEventListener('DOMContentLoaded', function() {
|
document.addEventListener('DOMContentLoaded', function() {
|
||||||
checkAuth();
|
checkAuth();
|
||||||
// setupEventListeners убран отсюда – будет вызван после загрузки всех скриптов
|
setupEventListeners();
|
||||||
|
|
||||||
|
// Инициализация выбора времени
|
||||||
initializeTimeSelectors();
|
initializeTimeSelectors();
|
||||||
|
|
||||||
|
// Инициализация фильтра
|
||||||
const taskViewFilter = document.getElementById('task-view-filter');
|
const taskViewFilter = document.getElementById('task-view-filter');
|
||||||
if (taskViewFilter) {
|
if (taskViewFilter) {
|
||||||
taskViewFilter.value = window.currentTaskView;
|
taskViewFilter.value = currentTaskView;
|
||||||
}
|
}
|
||||||
|
|
||||||
// По умолчанию показываем секцию задач
|
// По умолчанию показываем секцию задач
|
||||||
showSection('tasks');
|
showSection('tasks');
|
||||||
});
|
});
|
||||||
|
|
||||||
// Функция настройки обработчиков событий – будет вызвана после загрузки всех скриптов
|
|
||||||
function setupEventListeners() {
|
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);
|
document.getElementById('files').addEventListener('change', updateFileList);
|
||||||
|
document.getElementById('edit-files').addEventListener('change', updateEditFileList);
|
||||||
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);
|
|
||||||
|
|
||||||
|
// Настройки уведомлений
|
||||||
const notificationForm = document.getElementById('notification-settings-form');
|
const notificationForm = document.getElementById('notification-settings-form');
|
||||||
if (notificationForm) notificationForm.addEventListener('submit', saveNotificationSettings);
|
if (notificationForm) {
|
||||||
|
notificationForm.addEventListener('submit', saveNotificationSettings);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Инициализация загрузки файлов
|
||||||
initializeFileUploads();
|
initializeFileUploads();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Функция для изменения вида задач
|
// Функция для изменения вида задач
|
||||||
function changeTaskView() {
|
function changeTaskView() {
|
||||||
const select = document.getElementById('task-view-filter');
|
const select = document.getElementById('task-view-filter');
|
||||||
window.currentTaskView = select.value;
|
currentTaskView = select.value;
|
||||||
loadTasks();
|
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) {
|
async function createTask(event) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
@@ -452,16 +496,11 @@ function showSection(sectionName) {
|
|||||||
document.getElementById(sectionName + '-section').classList.add('active');
|
document.getElementById(sectionName + '-section').classList.add('active');
|
||||||
|
|
||||||
if (sectionName === 'tasks') {
|
if (sectionName === 'tasks') {
|
||||||
window.currentTaskView = 'all';
|
|
||||||
loadTasks();
|
loadTasks();
|
||||||
} else if (sectionName === 'logs') {
|
} else if (sectionName === 'logs') {
|
||||||
loadActivityLogs();
|
loadActivityLogs();
|
||||||
} else if (sectionName === 'kanban') {
|
} else if (sectionName === 'kanban') {
|
||||||
loadKanbanTasks();
|
loadKanbanTasks();
|
||||||
} else if (sectionName === 'mytasks') {
|
|
||||||
showMyTasksSection(); // из loadMyCreatedTasks.js
|
|
||||||
} else if (sectionName === 'runtasks') {
|
|
||||||
showRunTasksSection(); // из loadMyCreatedTasks.js
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Загрузка профиля при переходе в личный кабинет
|
// Загрузка профиля при переходе в личный кабинет
|
||||||
@@ -475,4 +514,4 @@ function showSection(sectionName) {
|
|||||||
function showKanbanSection() {
|
function showKanbanSection() {
|
||||||
showSection('kanban');
|
showSection('kanban');
|
||||||
}
|
}
|
||||||
window.setupEventListeners = setupEventListeners;
|
|
||||||
|
|||||||
Reference in New Issue
Block a user