import { api } from '../api.js'; import { escapeHtml, showAlert, hideAlert, updateSelectText } from '../utils.js'; export let allEquipments = []; export async function fetchEquipments() { try { allEquipments = await api.get('/api/equipments'); return allEquipments; } catch (e) { console.error("Failed to fetch equipments", e); return []; } } export function renderEquipmentCheckboxes(equipments, containerId, textId, checkedIds = []) { const container = document.getElementById(containerId); if (!container) return; if (!equipments.length) { container.innerHTML = '

Нет доступного оборудования

'; return; } container.innerHTML = equipments.map(eq => { const isChecked = checkedIds.includes(eq.id) ? 'checked' : ''; return ` `}).join(''); updateSelectText(containerId, textId); } export async function initEquipments() { const equipmentsTbody = document.getElementById('equipments-tbody'); const createEquipmentForm = document.getElementById('create-equipment-form'); async function loadEquipments() { try { const equipments = await fetchEquipments(); renderEquipments(equipments); } catch (e) { if (equipmentsTbody) equipmentsTbody.innerHTML = 'Ошибка загрузки'; } } function renderEquipments(equipments) { if (!equipments || !equipments.length) { equipmentsTbody.innerHTML = 'Нет оборудования'; return; } equipmentsTbody.innerHTML = equipments.map(eq => ` ${eq.id} ${escapeHtml(eq.name)} `).join(''); } createEquipmentForm.addEventListener('submit', async (e) => { e.preventDefault(); hideAlert('create-equipment-alert'); const name = document.getElementById('new-equipment-name').value.trim(); if (!name) { showAlert('create-equipment-alert', 'Введите название', 'error'); return; } try { const data = await api.post('/api/equipments', { name }); showAlert('create-equipment-alert', `Оборудование "${escapeHtml(data.name)}" добавлено`, 'success'); createEquipmentForm.reset(); loadEquipments(); } catch (e) { showAlert('create-equipment-alert', e.message || 'Ошибка создания', 'error'); } }); equipmentsTbody.addEventListener('click', async (e) => { const btn = e.target.closest('.btn-delete'); if (!btn) return; if (!confirm('Удалить оборудование?')) return; try { await api.delete('/api/equipments/' + btn.dataset.id); loadEquipments(); } catch (e) { alert(e.message || 'Ошибка удаления'); } }); loadEquipments(); }