let allCategories = []; let allDocuments = []; let currentCategory = 'all'; let currentDocument = null; // Загрузка данных async function loadData() { try { const response = await fetch('data.json'); const data = await response.json(); allCategories = data.categories; // Собираем все документы в плоский список allDocuments = []; allCategories.forEach(category => { category.docs.forEach(doc => { allDocuments.push({ ...doc, categoryId: category.id, categoryName: category.name, categoryIcon: category.icon }); }); }); renderCategoryTabs(); renderDocuments(allDocuments); } catch (error) { console.error('Ошибка загрузки данных:', error); } } // Рендеринг вкладок категорий function renderCategoryTabs() { const tabsContainer = document.getElementById('categoryTabs'); // Первая вкладка - все документы let tabsHTML = ` `; // Вкладки по категориям allCategories.forEach(category => { tabsHTML += ` `; }); tabsContainer.innerHTML = tabsHTML; } // Фильтрация по категории function filterByCategory(categoryId) { currentCategory = categoryId; // Обновляем активную вкладку document.querySelectorAll('.category-tab').forEach(tab => { tab.classList.remove('active'); if (tab.dataset.category === categoryId) { tab.classList.add('active'); } }); // Фильтруем документы if (categoryId === 'all') { renderDocuments(allDocuments); document.getElementById('sectionTitle').innerHTML = '📚 Все документы'; } else { const category = allCategories.find(c => c.id === categoryId); const filteredDocs = allDocuments.filter(doc => doc.categoryId === categoryId); renderDocuments(filteredDocs); document.getElementById('sectionTitle').innerHTML = `${category.icon} ${category.name}`; } // Очищаем поиск document.getElementById('searchInput').value = ''; } // Рендеринг карточек документов function renderDocuments(documents) { const grid = document.getElementById('documentsGrid'); const noResults = document.getElementById('noResults'); if (documents.length === 0) { grid.innerHTML = ''; noResults.style.display = 'block'; return; } noResults.style.display = 'none'; grid.innerHTML = documents.map(doc => `
${doc.description}
${currentDocument.content}
`);
printWindow.document.close();
printWindow.print();
}
// Утилита для очистки имени файла
function sanitizeFilename(filename) {
return filename
.replace(/[^a-zа-яё0-9\s]/gi, '')
.replace(/\s+/g, '_')
.substring(0, 50);
}
// Инициализация
loadData();