import { api } from '../api.js'; import { escapeHtml, showAlert, hideAlert } from '../utils.js'; export let allEducationForms = []; export async function fetchEducationForms() { try { allEducationForms = await api.get('/api/education-forms'); return allEducationForms; } catch (e) { console.error("Failed to fetch education forms", e); return []; } } export async function initEduForms() { const efTbody = document.getElementById('ef-tbody'); const createEfForm = document.getElementById('create-ef-form'); async function loadEF() { try { const forms = await fetchEducationForms(); renderEfTable(forms); } catch (e) { efTbody.innerHTML = 'Ошибка загрузки'; } } function renderEfTable(forms) { if (!forms || !forms.length) { efTbody.innerHTML = 'Нет форм обучения'; return; } efTbody.innerHTML = forms.map(ef => ` ${ef.id} ${escapeHtml(ef.name)} `).join(''); } createEfForm.addEventListener('submit', async (e) => { e.preventDefault(); hideAlert('create-ef-alert'); const name = document.getElementById('new-ef-name').value.trim(); if (!name) { showAlert('create-ef-alert', 'Введите название', 'error'); return; } try { const data = await api.post('/api/education-forms', { name }); showAlert('create-ef-alert', `Форма "${escapeHtml(data.name)}" создана`, 'success'); createEfForm.reset(); loadEF(); } catch (e) { showAlert('create-ef-alert', e.message || 'Ошибка создания', 'error'); } }); efTbody.addEventListener('click', async (e) => { const btn = e.target.closest('.btn-delete'); if (!btn) return; if (!confirm('Удалить форму обучения?')) return; try { await api.delete('/api/education-forms/' + btn.dataset.id); loadEF(); } catch (e) { alert(e.message || 'Ошибка удаления'); } }); loadEF(); }