Создание вкладки "Расписание занятий"
This commit is contained in:
@@ -86,6 +86,15 @@
|
||||
</svg>
|
||||
Дисциплины
|
||||
</a>
|
||||
<a href="#" class="nav-item" data-tab="schedule">
|
||||
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
||||
<rect x="3" y="4" width="18" height="18" rx="2" ry="2"></rect>
|
||||
<line x1="16" y1="2" x2="16" y2="6"></line>
|
||||
<line x1="8" y1="2" x2="8" y2="6"></line>
|
||||
<line x1="3" y1="10" x2="21" y2="10"></line>
|
||||
</svg>
|
||||
Расписание занятий
|
||||
</a>
|
||||
</nav>
|
||||
<div class="sidebar-footer">
|
||||
<button class="btn-logout" id="btn-logout">
|
||||
|
||||
@@ -7,6 +7,7 @@ import { initEduForms } from './views/edu-forms.js';
|
||||
import { initEquipments } from './views/equipments.js';
|
||||
import { initClassrooms } from './views/classrooms.js';
|
||||
import { initSubjects } from './views/subjects.js';
|
||||
import {initSchedule} from "./views/schedule.js";
|
||||
|
||||
// Configuration
|
||||
const ROUTES = {
|
||||
@@ -16,6 +17,8 @@ const ROUTES = {
|
||||
equipments: { title: 'Оборудование', file: 'views/equipments.html', init: initEquipments },
|
||||
classrooms: { title: 'Аудитории', file: 'views/classrooms.html', init: initClassrooms },
|
||||
subjects: { title: 'Дисциплины и преподаватели', file: 'views/subjects.html', init: initSubjects },
|
||||
// Новая вкладка
|
||||
schedule: { title: 'Расписание занятий', file: 'views/schedule.html', init: initSchedule },
|
||||
};
|
||||
|
||||
let currentTab = null;
|
||||
|
||||
48
frontend/admin/js/views/schedule.js
Normal file
48
frontend/admin/js/views/schedule.js
Normal file
@@ -0,0 +1,48 @@
|
||||
import { api } from '../api.js';
|
||||
import { escapeHtml } from '../utils.js';
|
||||
|
||||
export async function initSchedule() {
|
||||
const tbody = document.getElementById('schedule-tbody');
|
||||
|
||||
async function loadSchedule() {
|
||||
try {
|
||||
// Предполагается, что на сервере есть endpoint GET /api/lessons,
|
||||
// возвращающий массив объектов с полями:
|
||||
// id, teacher (объект с username), group (объект с name),
|
||||
// subject (объект с name), day, week, time.
|
||||
const lessons = await api.get('/api/users/lessons');
|
||||
renderSchedule(lessons);
|
||||
} catch (e) {
|
||||
tbody.innerHTML = `<tr><td colspan="7" class="loading-row">Ошибка загрузки: ${escapeHtml(e.message)}</td></tr>`;
|
||||
}
|
||||
}
|
||||
|
||||
function renderSchedule(lessons) {
|
||||
if (!lessons || !lessons.length) {
|
||||
tbody.innerHTML = '<tr><td colspan="7" class="loading-row">Нет занятий</td></tr>';
|
||||
return;
|
||||
}
|
||||
|
||||
tbody.innerHTML = lessons.map(lesson => {
|
||||
// Извлекаем имена из вложенных объектов или используем запасные поля
|
||||
const teacherName = lesson.teacher?.username || lesson.teacherName || '—';
|
||||
const groupName = lesson.group?.name || lesson.groupName || '—';
|
||||
const subjectName = lesson.subject?.name || lesson.subjectName || '—';
|
||||
const day = lesson.day || '—';
|
||||
const week = lesson.week || '—';
|
||||
const time = lesson.time || '—';
|
||||
|
||||
return `<tr>
|
||||
<td>${escapeHtml(lesson.id)}</td>
|
||||
<td>${escapeHtml(teacherName)}</td>
|
||||
<td>${escapeHtml(groupName)}</td>
|
||||
<td>${escapeHtml(subjectName)}</td>
|
||||
<td>${escapeHtml(day)}</td>
|
||||
<td>${escapeHtml(week)}</td>
|
||||
<td>${escapeHtml(time)}</td>
|
||||
</tr>`;
|
||||
}).join('');
|
||||
}
|
||||
|
||||
await loadSchedule();
|
||||
}
|
||||
23
frontend/admin/views/schedule.html
Normal file
23
frontend/admin/views/schedule.html
Normal file
@@ -0,0 +1,23 @@
|
||||
<div class="card">
|
||||
<h2>Расписание занятий</h2>
|
||||
<div class="table-wrap">
|
||||
<table id="schedule-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>ID</th>
|
||||
<th>Преподаватель</th>
|
||||
<th>Группа</th>
|
||||
<th>Дисциплина</th>
|
||||
<th>День недели</th>
|
||||
<th>Неделя</th>
|
||||
<th>Время</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="schedule-tbody">
|
||||
<tr>
|
||||
<td colspan="7" class="loading-row">Загрузка...</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
Reference in New Issue
Block a user