This commit is contained in:
2026-02-03 13:32:24 +05:00
parent 4d9cc09039
commit ce8b45798f
3 changed files with 146 additions and 10 deletions

View File

@@ -1,4 +1,7 @@
// main.js - Главный файл инициализации
let currentTaskView = 'all'; // 'all', 'my_assigned', 'assigned_to_me'
let allTasksCache = []; // Кэш всех задач
document.addEventListener('DOMContentLoaded', function() {
checkAuth();
setupEventListeners();
@@ -6,6 +9,12 @@ document.addEventListener('DOMContentLoaded', function() {
// Инициализация выбора времени
initializeTimeSelectors();
// Инициализация фильтра
const taskViewFilter = document.getElementById('task-view-filter');
if (taskViewFilter) {
taskViewFilter.value = currentTaskView;
}
// По умолчанию показываем секцию задач
showSection('tasks');
});
@@ -21,7 +30,7 @@ function setupEventListeners() {
document.getElementById('edit-assignment-form').addEventListener('submit', updateAssignment);
document.getElementById('rework-task-form').addEventListener('submit', sendForRework);
// Файлыcreate-task
// Файлы
document.getElementById('files').addEventListener('change', updateFileList);
document.getElementById('edit-files').addEventListener('change', updateEditFileList);
@@ -35,6 +44,64 @@ function setupEventListeners() {
initializeFileUploads();
}
// Функция для изменения вида задач
function changeTaskView() {
const select = document.getElementById('task-view-filter');
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();
@@ -46,7 +113,7 @@ async function createTask(event) {
const title = document.getElementById('title').value;
const description = document.getElementById('description').value;
const taskType = document.getElementById('task-type').value; // Добавлено из tasks.js
const taskType = document.getElementById('task-type').value;
// Получаем полную дату и время из отдельных полей
const fullDateTime = getFullDateTime('due-date', 'due-time');
@@ -64,7 +131,7 @@ async function createTask(event) {
const formData = new FormData();
formData.append('title', title);
formData.append('description', description);
formData.append('taskType', taskType); // Добавлено
formData.append('taskType', taskType);
formData.append('dueDate', fullDateTime);
selectedUsers.forEach(userId => {
@@ -85,7 +152,7 @@ async function createTask(event) {
if (response.ok) {
alert('Задача успешно создана!');
// Сброс формы (из main.js)
// Сброс формы
document.getElementById('create-task-form').reset();
document.getElementById('file-list').innerHTML = '';
document.getElementById('user-search').value = '';
@@ -264,4 +331,58 @@ async function copyTask(event) {
console.error('Ошибка:', error);
alert('Ошибка создания копии задачи');
}
}
// Функция для отображения секции
function showSection(sectionName) {
document.querySelectorAll('.section').forEach(section => {
section.classList.remove('active');
});
document.getElementById(sectionName + '-section').classList.add('active');
if (sectionName === 'tasks') {
loadTasks();
} else if (sectionName === 'logs') {
loadActivityLogs();
} else if (sectionName === 'kanban') {
loadKanbanTasks();
}
// Загрузка профиля при переходе в личный кабинет
if (sectionName === 'profile') {
loadUserProfile();
loadNotificationSettings();
}
}
// Функция для отображения Канбан доски
function showKanbanSection() {
showSection('kanban');
}
// Функции для работы с модальными окнами (добавьте если их нет)
function closeEditModal() {
document.getElementById('edit-task-modal').style.display = 'none';
document.getElementById('edit-file-list').innerHTML = '';
document.getElementById('edit-user-search').value = '';
editSelectedUsers = [];
currentEditTaskFiles = [];
filterEditUsers();
}
function closeCopyModal() {
document.getElementById('copy-task-modal').style.display = 'none';
document.getElementById('copy-user-search').value = '';
copySelectedUsers = [];
filterCopyUsers();
}
function closeEditAssignmentModal() {
document.getElementById('edit-assignment-modal').style.display = 'none';
}
function closeReworkModal() {
document.getElementById('rework-task-modal').style.display = 'none';
document.getElementById('rework-comment').value = '';
}