Athenaeum/static/js/book.js

90 lines
2.8 KiB
JavaScript
Raw Normal View History

2025-06-01 17:41:00 +02:00
import { formatCurrency } from "./utils.js"
2025-06-01 11:09:37 +02:00
document.addEventListener('DOMContentLoaded', function() {
2025-05-24 16:47:32 +02:00
const urlParams = new URLSearchParams(window.location.search);
const bookId = urlParams.get('id');
2025-06-01 11:09:37 +02:00
if (bookId) {
loadBookDetails(bookId);
// Dodaj obsługę przycisku "Dodaj do koszyka"
const addToCartBtn = document.querySelector('.btn-add-to-cart');
if (addToCartBtn) {
addToCartBtn.addEventListener('click', () => addToCart(bookId));
}
} else {
document.getElementById('book-details').innerHTML = `
<div class="alert alert-danger">Nie znaleziono książki</div>
2025-05-24 19:23:52 +02:00
`;
}
2025-06-01 11:09:37 +02:00
});
2025-05-24 16:47:32 +02:00
2025-06-01 11:09:37 +02:00
async function loadBookDetails(bookId) {
2025-05-24 16:47:32 +02:00
try {
2025-06-01 11:09:37 +02:00
const response = await fetch(`/api/ksiazki/${bookId}`, {
credentials: 'include'
});
if (!response.ok) {
throw new Error('Błąd ładowania szczegółów książki');
}
2025-05-24 16:47:32 +02:00
const book = await response.json();
2025-06-01 11:09:37 +02:00
displayBookDetails(book);
} catch (error) {
console.error('Błąd:', error);
document.getElementById('book-details').innerHTML = `
<div class="alert alert-danger">Wystąpił błąd podczas ładowania szczegółów książki</div>
`;
}
}
2025-05-25 16:25:22 +02:00
2025-06-01 11:09:37 +02:00
function displayBookDetails(book) {
2025-06-01 17:41:00 +02:00
const price = formatCurrency(book.cena);
2025-06-01 11:09:37 +02:00
document.getElementById('book-title').textContent = book.tytul;
document.getElementById('book-author').textContent = book.autor;
2025-06-01 17:41:00 +02:00
document.getElementById('book-price').textContent = price;
2025-06-01 11:09:37 +02:00
document.getElementById('book-description').textContent = book.opis;
const bookCover = document.getElementById('book-cover');
if (bookCover) {
bookCover.src = book.obraz_url;
bookCover.alt = `Okładka książki: ${book.tytul}`;
}
}
2025-05-25 16:25:22 +02:00
2025-06-01 11:09:37 +02:00
async function addToCart(bookId) {
2025-06-01 17:41:00 +02:00
const response = await fetch('/api/check-auth');
const data = await response.json();
if (!data.authenticated) {
window.location.href = '/login.html';
return;
}
2025-06-01 11:09:37 +02:00
try {
const response = await fetch('/api/add-to-cart', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
book_id: parseInt(bookId),
quantity: 1
}),
credentials: 'include'
2025-05-25 16:25:22 +02:00
});
2025-06-01 11:09:37 +02:00
if (response.ok) {
alert('Książka została dodana do koszyka!');
} else {
const errorData = await response.json();
alert(`Błąd: ${errorData.message || 'Nie udało się dodać do koszyka'}`);
}
2025-05-24 16:47:32 +02:00
} catch (error) {
2025-06-01 11:09:37 +02:00
console.error('Błąd:', error);
alert('Wystąpił błąd podczas dodawania do koszyka');
2025-05-24 16:47:32 +02:00
}
2025-06-01 11:09:37 +02:00
}