From f2cf831ad4d95f66bdb9e2d5ee7af17736b4beec Mon Sep 17 00:00:00 2001 From: Tomas Dvorak Date: Wed, 11 Jun 2025 22:25:13 +0200 Subject: [PATCH] te --- admin-dashboard.html | 99 ++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 92 insertions(+), 7 deletions(-) diff --git a/admin-dashboard.html b/admin-dashboard.html index 1785c89..0d213ea 100644 --- a/admin-dashboard.html +++ b/admin-dashboard.html @@ -4356,17 +4356,27 @@ function displayReservations(reservations) { function filterReservations() { if (!window.allReservations) return; - const vehicleFilter = document.getElementById('vehicleFilter').value; - const dateFilter = document.getElementById('dateFilter').value; + const vehicleFilter = document.getElementById('vehicleFilter')?.value || ''; + const dateFilter = document.getElementById('dateFilter')?.value || ''; - let filtered = window.allReservations; + let filtered = [...window.allReservations]; + // Apply vehicle filter if (vehicleFilter) { - filtered = filtered.filter(res => res.vehicle === vehicleFilter); + filtered = filtered.filter(res => res.vehicle && res.vehicle.trim() === vehicleFilter); } + // Apply date filter if (dateFilter) { - filtered = filtered.filter(res => res.startDate === dateFilter); + filtered = filtered.filter(res => { + if (!res.start) return false; + const reservationDate = new Date(res.start); + const filterDate = new Date(dateFilter); + + return reservationDate.getFullYear() === filterDate.getFullYear() && + reservationDate.getMonth() === filterDate.getMonth() && + reservationDate.getDate() === filterDate.getDate(); + }); } displayReservations(filtered); @@ -4500,18 +4510,93 @@ function calculateDuration(reservation) { return duration; } +// Function to edit a reservation +function editReservation(id) { + // Find the reservation by id + const reservation = window.allReservations.find(r => r.id === id); + if (!reservation) { + showNotification('Rezervaci se nepodařilo najít', 'error'); + return; + } + + // Redirect to the reservation page with the reservation ID + window.location.href = `/rezervace-aut?edit=${id}`; +} + +// Function to delete a reservation +async function deleteReservation(id) { + if (!confirm('Opravdu chcete smazat tuto rezervaci?')) { + return; + } + + try { + const response = await fetch(`/api/reservations/${id}`, { + method: 'DELETE', + headers: { + 'Content-Type': 'application/json', + }, + }); + + if (!response.ok) { + throw new Error('Nepodařilo se smazat rezervaci'); + } + + // Remove the reservation from the local array and update the display + window.allReservations = window.allReservations.filter(r => r.id !== id); + updateVehicleFilter(window.allReservations); + filterReservations(); + showNotification('Rezervace byla úspěšně smazána', 'success'); + } catch (error) { + console.error('Error deleting reservation:', error); + showNotification(`Chyba při mazání rezervace: ${error.message}`, 'error'); + } +} + // Function to update vehicle filter options function updateVehicleFilter(reservations) { const vehicleFilter = document.getElementById('vehicleFilter'); if (!vehicleFilter) return; - const vehicles = [...new Set(reservations.map(r => r.vehicle))]; + // Get unique vehicles from reservations + const vehicles = [...new Set(reservations + .filter(r => r.vehicle) // Filter out undefined/null vehicles + .map(r => r.vehicle.trim()) // Trim whitespace + .filter(Boolean) // Remove any empty strings + )]; + + // Save current selection + const currentValue = vehicleFilter.value; + + // Update options vehicleFilter.innerHTML = ` - ${vehicles.map(v => ``).join('')} + ${vehicles.map(v => ``).join('')} `; } +// Add event listeners when the page loads +document.addEventListener('DOMContentLoaded', function() { + // Initialize filters + const vehicleFilter = document.getElementById('vehicleFilter'); + const dateFilter = document.getElementById('dateFilter'); + const exportButton = document.getElementById('exportButton'); + + if (vehicleFilter) { + vehicleFilter.addEventListener('change', filterReservations); + } + + if (dateFilter) { + dateFilter.addEventListener('change', filterReservations); + } + + if (exportButton) { + exportButton.addEventListener('click', exportReservations); + } + + // Load initial data + loadReservations(); +}); + // Load reservations when page loads document.addEventListener('DOMContentLoaded', () => { // ...existing code...