Доработано создание групп и отображение новых параметров групп в таблице

This commit is contained in:
2026-03-20 00:27:01 +03:00
parent d78e675a71
commit f7fb524bb0
2 changed files with 28 additions and 6 deletions

View File

@@ -17,7 +17,7 @@ export async function initGroups() {
populateEfSelects(educationForms); populateEfSelects(educationForms);
await loadGroups(); await loadGroups();
} catch (e) { } catch (e) {
groupsTbody.innerHTML = '<tr><td colspan="4" class="loading-row">Ошибка загрузки данных</td></tr>'; groupsTbody.innerHTML = '<tr><td colspan="7" class="loading-row">Ошибка загрузки данных</td></tr>';
} }
} }
@@ -26,7 +26,7 @@ export async function initGroups() {
allGroups = await api.get('/api/groups'); allGroups = await api.get('/api/groups');
applyGroupFilter(); applyGroupFilter();
} catch (e) { } catch (e) {
groupsTbody.innerHTML = '<tr><td colspan="4" class="loading-row">Ошибка загрузки</td></tr>'; groupsTbody.innerHTML = '<tr><td colspan="7" class="loading-row">Ошибка загрузки</td></tr>';
} }
} }
@@ -61,7 +61,7 @@ export async function initGroups() {
function renderGroups(groups) { function renderGroups(groups) {
if (!groups || !groups.length) { if (!groups || !groups.length) {
groupsTbody.innerHTML = '<tr><td colspan="4" class="loading-row">Нет групп</td></tr>'; groupsTbody.innerHTML = '<tr><td colspan="7" class="loading-row">Нет групп</td></tr>';
return; return;
} }
groupsTbody.innerHTML = groups.map(g => ` groupsTbody.innerHTML = groups.map(g => `
@@ -70,6 +70,8 @@ export async function initGroups() {
<td>${escapeHtml(g.name)}</td> <td>${escapeHtml(g.name)}</td>
<td>${escapeHtml(g.groupSize)}</td> <td>${escapeHtml(g.groupSize)}</td>
<td><span class="badge badge-ef">${escapeHtml(g.educationFormName)}</span></td> <td><span class="badge badge-ef">${escapeHtml(g.educationFormName)}</span></td>
<td>${g.departmentId || '-'}</td>
<td>${g.course || '-'}</td>
<td><button class="btn-delete" data-id="${g.id}">Удалить</button></td> <td><button class="btn-delete" data-id="${g.id}">Удалить</button></td>
</tr>`).join(''); </tr>`).join('');
} }
@@ -80,14 +82,24 @@ export async function initGroups() {
const name = document.getElementById('new-group-name').value.trim(); const name = document.getElementById('new-group-name').value.trim();
const groupSize = document.getElementById('new-group-size').value; const groupSize = document.getElementById('new-group-size').value;
const educationFormId = newGroupEfSelect.value; const educationFormId = newGroupEfSelect.value;
const departmentId = document.getElementById('new-group-department').value;
const course = document.getElementById('new-group-course').value;
if (!name) { showAlert('create-group-alert', 'Введите название группы', 'error'); return; } if (!name) { showAlert('create-group-alert', 'Введите название группы', 'error'); return; }
if (!groupSize) { showAlert('create-group-alert', 'Введите размер группы', 'error'); return; } if (!groupSize) { showAlert('create-group-alert', 'Введите размер группы', 'error'); return; }
if (!educationFormId) { showAlert('create-group-alert', 'Выберите форму обучения', 'error'); return; } if (!educationFormId) { showAlert('create-group-alert', 'Выберите форму обучения', 'error'); return; }
if (!departmentId) { showAlert('create-group-alert', 'Введите ID кафедры', 'error'); return; }
if (!course) { showAlert('create-group-alert', 'Введите курс', 'error'); return; }
try { try {
const data = await api.post('/api/groups', { name, groupSize, educationFormId: Number(educationFormId) }); const data = await api.post('/api/groups', {
showAlert('create-group-alert', `Группа "${escapeHtml(data.name)}" создана`, 'success'); name,
groupSize: Number(groupSize),
educationFormId: Number(educationFormId),
departmentId: Number(departmentId),
course: Number(course)
});
showAlert('create-group-alert', `Группа "${escapeHtml(data.name || name)}" создана`, 'success');
createGroupForm.reset(); createGroupForm.reset();
loadGroups(); loadGroups();
} catch (e) { } catch (e) {

View File

@@ -17,6 +17,14 @@
<option value="">Загрузка...</option> <option value="">Загрузка...</option>
</select> </select>
</div> </div>
<div class="form-group">
<label for="new-group-department">ID кафедры</label>
<input type="number" id="new-group-department" placeholder="ID" required>
</div>
<div class="form-group">
<label for="new-group-course">Курс</label>
<input type="number" id="new-group-course" placeholder="1-6" min="1" max="6" required>
</div>
<button type="submit" class="btn-primary">Создать</button> <button type="submit" class="btn-primary">Создать</button>
</div> </div>
<div class="form-alert" id="create-group-alert" role="alert"></div> <div class="form-alert" id="create-group-alert" role="alert"></div>
@@ -41,12 +49,14 @@
<th>Название</th> <th>Название</th>
<th>Численность (чел.)</th> <th>Численность (чел.)</th>
<th>Форма обучения</th> <th>Форма обучения</th>
<th>ID кафедры</th>
<th>Курс</th>
<th>Действия</th> <th>Действия</th>
</tr> </tr>
</thead> </thead>
<tbody id="groups-tbody"> <tbody id="groups-tbody">
<tr> <tr>
<td colspan="4" class="loading-row">Загрузка...</td> <td colspan="7" class="loading-row">Загрузка...</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>