Создание вкладки "Расписание занятий"

This commit is contained in:
alekan
2026-03-03 00:02:07 +03:00
parent 2004766855
commit 88f1abfe25
4 changed files with 83 additions and 0 deletions

View 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();
}