document.addEventListener('DOMContentLoaded', () => { const refreshButton = document.getElementById('refreshButton'); const darkModeToggle = document.getElementById('darkModeToggle'); const newAlbumButton = document.getElementById('newAlbumButton'); const createAlbumButton = document.getElementById('createAlbumButton'); const albumTable = document.getElementById('albumTable').querySelector('tbody'); // tbody auswählen const albumPageSizeSelect = document.getElementById('albumPageSize'); const selectAllAlbumsCheckbox = document.getElementById('selectAllAlbums'); // Mock-Daten (ersetzen durch echte Daten vom Backend) let albums = JSON.parse(localStorage.getItem('albums')) || [ { id: 1, name: 'Urlaub 2022', images: 120, created: '2022-08-15' }, { id: 2, name: 'Familienfeier', images: 85, created: '2023-01-20' }, ]; function saveAlbumsToLocalStorage() { localStorage.setItem('albums', JSON.stringify(albums)); } function renderAlbums() { albumTable.innerHTML = ''; // Tabelle leeren albums.forEach(album => { const row = albumTable.insertRow(); row.innerHTML = ` ${album.name} ${album.images} ${album.created} `; }); addDeleteAlbumEventListeners(); } function addDeleteAlbumEventListeners(){ document.querySelectorAll('.delete-album').forEach(button => { button.addEventListener('click', () => { const idToDelete = parseInt(button.dataset.id); albums = albums.filter(album => album.id !== idToDelete); saveAlbumsToLocalStorage(); renderAlbums(); }); }); } function showToast(title, message, type = 'info') { const toast = document.getElementById('toast'); const toastTitle = document.getElementById('toastTitle'); const toastMessage = document.getElementById('toastMessage'); toast.classList.remove('bg-success', 'bg-danger', 'bg-info'); toast.classList.add(`bg-${type}`); toastTitle.textContent = title; toastMessage.textContent = message; const bsToast = new bootstrap.Toast(toast); bsToast.show(); } refreshButton.addEventListener('click', () => { // Hier würde normalerweise der Datenabruf vom Backend erfolgen showToast('Info', 'Daten wurden simuliert aktualisiert.', 'info'); renderAlbums(); }); darkModeToggle.addEventListener('click', () => { document.body.classList.toggle('dark-mode'); localStorage.setItem('darkMode', document.body.classList.contains('dark-mode')); }); if (localStorage.getItem('darkMode') === 'true') { document.body.classList.add('dark-mode'); } newAlbumButton.addEventListener('click', () => { const newAlbumModal = new bootstrap.Modal(document.getElementById('newAlbumModal')); newAlbumModal.show(); }); createAlbumButton.addEventListener('click', () => { const albumName = document.getElementById('albumName').value; const albumDescription = document.getElementById('albumDescription').value; if (albumName.trim() === '') { showToast("Fehler", "Bitte geben Sie einen Album Namen ein", "danger") return; } const newAlbum = { id: albums.length + 1, // Provisorische ID name: albumName, images: 0, created: new Date().toISOString().slice(0, 10), }; albums.push(newAlbum); saveAlbumsToLocalStorage(); renderAlbums(); document.getElementById('newAlbumForm').reset(); bootstrap.Modal.getInstance(document.getElementById('newAlbumModal')).hide(); showToast('Erfolg', 'Album erfolgreich erstellt.', 'success'); }); selectAllAlbumsCheckbox.addEventListener('change', () => { const itemCheckboxes = document.querySelectorAll(`.item-checkbox[data-type="album"]`); itemCheckboxes.forEach(item => item.checked = selectAllAlbumsCheckbox.checked); }); renderAlbums(); });