Spaces:
Runtime error
Runtime error
| 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 = ` | |
| <td><input type="checkbox" class="form-check-input item-checkbox" data-type="album" data-id="${album.id}"></td> | |
| <td>${album.name}</td> | |
| <td>${album.images}</td> | |
| <td>${album.created}</td> | |
| <td><button class="btn btn-danger btn-sm delete-album" data-id="${album.id}"><i class="bi bi-trash"></i></button></td> | |
| `; | |
| }); | |
| 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(); | |
| }); | |