Добавил для групп поле численности.

В модалку на UI добавил отображение численности групп и вместимости аудиторий, проверку на доступность и вместимость.
This commit is contained in:
ProstoDenya01
2026-03-12 14:45:25 +03:00
parent 1b0a6c86ff
commit 03eaf6ab13
8 changed files with 89 additions and 6 deletions

View File

@@ -79,8 +79,19 @@ export async function initUsers() {
// Заполнение select группами
function renderGroupOptions() {
if (!groups || groups.length === 0) {
lessonClassroomSelect.innerHTML = '<option value="">Нет доступных групп</option>';
return;
}
lessonGroupSelect.innerHTML = '<option value="">Выберите группу</option>' +
groups.map(g => `<option value="${g.id}">${escapeHtml(g.name)}</option>`).join('');
groups.map(g => {
let optionText = escapeHtml(g.name);
if(g.groupSize) {
optionText += ` (численность: ${g.groupSize} чел.)`;
}
return `<option value="${g.id}">${optionText}</option>`;
}).join('');
}
// Заполнение select дисциплинами
@@ -90,10 +101,40 @@ export async function initUsers() {
}
function renderClassroomsOptions() {
if (!classrooms || classrooms.length ===0) {
lessonClassroomSelect.innerHTML = '<option value="">Нет доступных аудиторий</option>';
return;
}
const selectedGroupId = lessonGroupSelect.value;
const selectedGroup = groups?.find(g => g.id == selectedGroupId);
const groupSize = selectedGroup?.groupSize || 0;
lessonClassroomSelect.innerHTML = '<option value="">Выберите аудиторию</option>' +
classrooms.map(c => `<option value="${c.id}">${escapeHtml(c.name)}</option>`).join('');
classrooms.map(c => {
let optionText = escapeHtml(c.name);
// Добавление текста с инфой о вместимости чел.
if(c.capacity) {
optionText += ` (вместимость: ${c.capacity} чел.)`;
}
// Если аудитория занята, то рисуем крестик допом
if (c.isAvailable === false) {
optionText += ` ❌ Занята`
// Если свободна, но меньше численности группы, отображаем воскл. знак
} else if (selectedGroupId && groupSize > 0 && c.capacity && groupSize > c.capacity) {
optionText += ` ⚠️ Недостаточно места`;
}
return `<option value="${c.id}">${optionText}</option>`;
}).join('');
}
lessonGroupSelect.addEventListener('change', function() {
renderClassroomsOptions();
});
// NEW: функция обновления списка времени в зависимости от дня
function updateTimeOptions(dayValue) {
let times = [];