// static/js/books.js import { getAuthHeaders, handleApiError } from './utils.js'; export async function loadBooks(searchTerm = '', sortBy = 'default') { try { const response = await fetch(`/api/ksiazki?search=${encodeURIComponent(searchTerm)}&sort=${sortBy}`); if (!response.ok) throw new Error(`Błąd HTTP: ${response.status}`); return await response.json(); } catch (error) { handleApiError(error, 'Wystąpił błąd podczas ładowania książek'); return []; } } export function renderBooks(books, containerId) { const container = document.getElementById(containerId); if (!container) return; if (books.length === 0) { container.innerHTML = '

Nie znaleziono książek

'; return; } container.innerHTML = books.map(book => `
${book.tytul}
${book.tytul}

${book.autor}

${book.cena} PLN

`).join(''); } // Inicjalizacja na stronie głównej document.addEventListener('DOMContentLoaded', async () => { if (!document.getElementById('books-container')) return; const books = await loadBooks(); renderBooks(books, 'books-container'); // Obsługa wyszukiwania i sortowania const searchInput = document.getElementById('searchInput'); const sortSelect = document.getElementById('sortSelect'); const reloadBooks = async () => { const books = await loadBooks( searchInput?.value || '', sortSelect?.value || 'default' ); renderBooks(books, 'books-container'); }; searchInput?.addEventListener('input', reloadBooks); sortSelect?.addEventListener('change', reloadBooks); });