С 9:00 до 21:00 Без выходных

public/assets/js/task_manager_admin.js

Вот содержимое файла public/assets/js/task_manager_admin.js:

// Admin Task Manager JavaScript

// Handle Task Filtering in Admin Panel
function filterTasksAdmin() {
    let statusFilter = document.getElementById('adminStatusFilter').value;
    let userFilter = document.getElementById('adminUserFilter').value;
    let categoryFilter = document.getElementById('adminCategoryFilter').value;
    let priorityFilter = document.getElementById('adminPriorityFilter').value;
    let tagFilter = document.getElementById('adminTagFilter').value;

    // Prepare request data
    let data = {
        status: statusFilter,
        user: userFilter,
        category: categoryFilter,
        priority: priorityFilter,
        tag: tagFilter
    };

    // Perform AJAX request to fetch filtered tasks
    fetch('/admin/index.php?route=extension/task_manager/filterTasksAdmin', {
        method: 'POST',
        headers: {
            'Content-Type': 'application/json'
        },
        body: JSON.stringify(data)
    })
    .then(response => response.json())
    .then(result => {
        // Update task list in admin panel
        updateTaskListAdmin(result);
    })
    .catch(error => console.error('Error filtering tasks in admin panel:', error));
}

// Update Task List in Admin Panel
function updateTaskListAdmin(tasks) {
    let taskListContainer = document.getElementById('adminTaskListContainer');
    taskListContainer.innerHTML = '';

    tasks.forEach(task => {
        let taskItem = document.createElement('div');
        taskItem.classList.add('task-item');
        taskItem.innerHTML = `
            <h3>${task.title}</h3>
            <p>${task.description}</p>
            <div class="task-status ${task.status}">${task.status}</div>
            <div class="task-priority">${task.priority}</div>
            <div class="task-due-date">${task.due_date}</div>
            <button class="edit-task-btn" onclick="editTaskAdmin(${task.id})">Edit</button>
            <button class="delete-task-btn" onclick="deleteTaskAdmin(${task.id})">Delete</button>
        `;
        taskListContainer.appendChild(taskItem);
    });
}

// Handle Task Creation in Admin Panel
document.getElementById('createTaskFormAdmin').addEventListener('submit', function(event) {
    event.preventDefault();
    
    let title = document.getElementById('adminTaskTitle').value;
    let description = document.getElementById('adminTaskDescription').value;
    let user = document.getElementById('adminTaskUser').value;
    let category = document.getElementById('adminTaskCategory').value;
    let priority = document.getElementById('adminTaskPriority').value;
    let dueDate = document.getElementById('adminTaskDueDate').value;
    let tags = document.getElementById('adminTaskTags').value;

    // Prepare task data
    let taskData = {
        title: title,
        description: description,
        user: user,
        category: category,
        priority: priority,
        due_date: dueDate,
        tags: tags
    };

    // Perform AJAX request to create task
    fetch('/admin/index.php?route=extension/task_manager/createTaskAdmin', {
        method: 'POST',
        headers: {
            'Content-Type': 'application/json'
        },
        body: JSON.stringify(taskData)
    })
    .then(response => response.json())
    .then(result => {
        if (result.success) {
            alert('Task created successfully!');
            // Clear form
            document.getElementById('createTaskFormAdmin').reset();
            // Refresh task list
            filterTasksAdmin();
        } else {
            alert('Error creating task');
        }
    })
    .catch(error => console.error('Error creating task:', error));
});

// Handle Task Editing in Admin Panel
function editTaskAdmin(taskId) {
    // Fetch task data for editing
    fetch(`/admin/index.php?route=extension/task_manager/getTaskAdmin&id=${taskId}`)
    .then(response => response.json())
    .then(task => {
        // Populate form with task data
        document.getElementById('adminTaskTitle').value = task.title;
        document.getElementById('adminTaskDescription').value = task.description;
        document.getElementById('adminTaskUser').value = task.user;
        document.getElementById('adminTaskCategory').value = task.category;
        document.getElementById('adminTaskPriority').value = task.priority;
        document.getElementById('adminTaskDueDate').value = task.due_date;
        document.getElementById('adminTaskTags').value = task.tags;

        // Change form action to update task
        document.getElementById('createTaskFormAdmin').setAttribute('data-action', 'edit');
        document.getElementById('createTaskFormAdmin').setAttribute('data-task-id', taskId);
    })
    .catch(error => console.error('Error fetching task data for editing:', error));
}

// Handle Task Update in Admin Panel
document.getElementById('createTaskFormAdmin').addEventListener('submit', function(event) {
    event.preventDefault();
    
    let action = document.getElementById('createTaskFormAdmin').getAttribute('data-action');
    let taskId = document.getElementById('createTaskFormAdmin').getAttribute('data-task-id');
    
    let title = document.getElementById('adminTaskTitle').value;
    let description = document.getElementById('adminTaskDescription').value;
    let user = document.getElementById('adminTaskUser').value;
    let category = document.getElementById('adminTaskCategory').value;
    let priority = document.getElementById('adminTaskPriority').value;
    let dueDate = document.getElementById('adminTaskDueDate').value;
    let tags = document.getElementById('adminTaskTags').value;

    let taskData = {
        title: title,
        description: description,
        user: user,
        category: category,
        priority: priority,
        due_date: dueDate,
        tags: tags
    };

    let url = action === 'edit' ? `/admin/index.php?route=extension/task_manager/updateTaskAdmin&id=${taskId}` : '/admin/index.php?route=extension/task_manager/createTaskAdmin';

    fetch(url, {
        method: 'POST',
        headers: {
            'Content-Type': 'application/json'
        },
        body: JSON.stringify(taskData)
    })
    .then(response => response.json())
    .then(result => {
        if (result.success) {
            alert(action === 'edit' ? 'Task updated successfully!' : 'Task created successfully!');
            // Clear form
            document.getElementById('createTaskFormAdmin').reset();
            document.getElementById('createTaskFormAdmin').removeAttribute('data-action');
            document.getElementById('createTaskFormAdmin').removeAttribute('data-task-id');
            // Refresh task list
            filterTasksAdmin();
        } else {
            alert('Error saving task');
        }
    })
    .catch(error => console.error('Error saving task:', error));
});

// Handle Task Deletion in Admin Panel
function deleteTaskAdmin(taskId) {
    if (confirm('Are you sure you want to delete this task?')) {
        fetch(`/admin/index.php?route=extension/task_manager/deleteTaskAdmin&id=${taskId}`, {
            method: 'GET'
        })
        .then(response => response.json())
        .then(result => {
            if (result.success) {
                alert('Task deleted successfully!');
                // Refresh task list
                filterTasksAdmin();
            } else {
                alert('Error deleting task');
            }
        })
        .catch(error => console.error('Error deleting task:', error));
    }
}

// Admin Task Sorting
function sortTasksAdmin(sortBy) {
    let sortOrder = document.getElementById('adminSortOrder').value;

    fetch(`/admin/index.php?route=extension/task_manager/sortTasksAdmin&sortBy=${sortBy}&sortOrder=${sortOrder}`, {
        method: 'GET'
    })
    .then(response => response.json())
    .then(result => {
        // Update task list in admin panel
        updateTaskListAdmin(result);
    })
    .catch(error => console.error('Error sorting tasks in admin panel:', error));
}

// Admin Task Pagination
function changePageAdmin(page) {
    fetch(`/admin/index.php?route=extension/task_manager/changePageAdmin&page=${page}`, {
        method: 'GET'
    })
    .then(response => response.json())
    .then(result => {
        // Update task list in admin panel
        updateTaskListAdmin(result);
    })
    .catch(error => console.error('Error changing page in admin panel:', error));
}

Описание:

  1. Фильтрация задач в панели администратора: Функция filterTasksAdmin фильтрует задачи в админской панели по различным критериям, как статус, пользователь, категория, приоритет и теги.

  2. Обновление списка задач в панели администратора: Функция updateTaskListAdmin обновляет отображаемые задачи на странице администратора после фильтрации.

  3. Создание задачи в панели администратора: При отправке формы создается новая задача, и данные отправляются через AJAX.

  4. Редактирование задачи в панели администратора: Функция editTaskAdmin получает информацию о задаче для редактирования и заполняет соответствующие поля формы.

  5. Обновление задачи в панели администратора: При отправке формы происходит