// admin-dashboard.js // Функции для работы с дашбордом административной панели function renderDashboard() { const dashboardContainer = document.getElementById('admin-dashboard'); if (!dashboardContainer) return; dashboardContainer.innerHTML = `

Статистика системы

Задачи

0
Всего задач в системе
Активные: 0
Закрытые: 0
Удаленные: 0

Статусы назначений

0
Всего назначений
Назначено: 0
В работе: 0
Выполнено: 0
Просрочено: 0
На доработке: 0

Пользователи

0
Зарегистрировано пользователей
Администраторы: 0
Учителя: 0
LDAP: 0
Локальные: 0

Файлы

0
Всего загружено файлов
0 MB
`; // После создания HTML загружаем статистику loadDashboardStats(); } async function loadDashboardStats() { try { const response = await fetch('/admin/stats'); if (response.ok) { const stats = await response.json(); updateStatsUI(stats); } else { // Если API недоступно, используем данные из вашего скриншота const defaultStats = { totalTasks: 46, activeTasks: 43, closedTasks: 0, deletedTasks: 3, totalAssignments: 61, assignedCount: 15, inProgressCount: 1, completedCount: 9, overdueCount: 36, reworkCount: 0, totalUsers: 4, adminUsers: 1, teacherUsers: 1, ldapUsers: 4, localUsers: 0, totalFiles: 27, totalFilesSize: 10.96 * 1024 * 1024 // 10.96 MB в байтах }; updateStatsUI(defaultStats); } } catch (error) { console.error('Ошибка загрузки статистики:', error); showDashboardError(); } } function updateStatsUI(stats) { // Проверяем, существует ли элемент dashboard const dashboard = document.getElementById('admin-dashboard'); if (!dashboard || !dashboard.classList.contains('active')) { return; } // Задачи setElementText('total-tasks', stats.totalTasks || 0); setElementText('active-tasks', stats.activeTasks || 0); setElementText('closed-tasks', stats.closedTasks || 0); setElementText('deleted-tasks', stats.deletedTasks || 0); // Процент активных задач if (stats.totalTasks > 0) { const activePercentage = Math.round((stats.activeTasks / stats.totalTasks) * 100); const activeBar = document.getElementById('active-tasks-bar'); if (activeBar) { activeBar.style.width = `${activePercentage}%`; } } // Назначения setElementText('total-assignments', stats.totalAssignments || 0); setElementText('assigned-count', stats.assignedCount || 0); setElementText('in-progress-count', stats.inProgressCount || 0); setElementText('completed-count', stats.completedCount || 0); setElementText('overdue-count', stats.overdueCount || 0); setElementText('rework-count', stats.reworkCount || 0); // Пользователи setElementText('total-users', stats.totalUsers || 0); setElementText('admin-users', stats.adminUsers || 0); setElementText('teacher-users', stats.teacherUsers || 0); setElementText('ldap-users', stats.ldapUsers || 0); setElementText('local-users', stats.localUsers || 0); // Файлы setElementText('total-files', stats.totalFiles || 0); const fileSizeMB = stats.totalFilesSize ? (stats.totalFilesSize / 1024 / 1024).toFixed(2) : '0'; setElementText('total-files-size', `${fileSizeMB} MB`); } function setElementText(id, text) { const element = document.getElementById(id); if (element) { element.textContent = text; } } function showDashboardError() { const dashboardContainer = document.getElementById('admin-dashboard'); if (dashboardContainer) { dashboardContainer.innerHTML = `

Статистика системы

Не удалось загрузить статистику системы.

`; } } // Автоматическое обновление статистики каждые 30 секунд setInterval(() => { if (document.getElementById('admin-dashboard')?.classList.contains('active')) { loadDashboardStats(); } }, 30000); // Инициализация дашборда при загрузке страницы document.addEventListener('DOMContentLoaded', function() { // Ждем пока основной скрипт проверит авторизацию setTimeout(() => { // Если дашборд активен при загрузке, рендерим его const dashboard = document.getElementById('admin-dashboard'); if (dashboard && dashboard.classList.contains('active')) { renderDashboard(); } }, 100); }); // Экспортируем функции для использования в admin-script.js window.renderDashboard = renderDashboard; window.loadDashboardStats = loadDashboardStats;