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));
}
Описание:
-
Фильтрация задач в панели администратора: Функция
filterTasksAdmin
фильтрует задачи в админской панели по различным критериям, как статус, пользователь, категория, приоритет и теги. -
Обновление списка задач в панели администратора: Функция
updateTaskListAdmin
обновляет отображаемые задачи на странице администратора после фильтрации. -
Создание задачи в панели администратора: При отправке формы создается новая задача, и данные отправляются через AJAX.
-
Редактирование задачи в панели администратора: Функция
editTaskAdmin
получает информацию о задаче для редактирования и заполняет соответствующие поля формы. -
Обновление задачи в панели администратора: При отправке формы происходит