mirror of
https://github.com/Dvorinka/PPve.git
synced 2026-06-04 04:22:58 +00:00
te
This commit is contained in:
+92
-7
@@ -4356,17 +4356,27 @@ function displayReservations(reservations) {
|
|||||||
function filterReservations() {
|
function filterReservations() {
|
||||||
if (!window.allReservations) return;
|
if (!window.allReservations) return;
|
||||||
|
|
||||||
const vehicleFilter = document.getElementById('vehicleFilter').value;
|
const vehicleFilter = document.getElementById('vehicleFilter')?.value || '';
|
||||||
const dateFilter = document.getElementById('dateFilter').value;
|
const dateFilter = document.getElementById('dateFilter')?.value || '';
|
||||||
|
|
||||||
let filtered = window.allReservations;
|
let filtered = [...window.allReservations];
|
||||||
|
|
||||||
|
// Apply vehicle filter
|
||||||
if (vehicleFilter) {
|
if (vehicleFilter) {
|
||||||
filtered = filtered.filter(res => res.vehicle === vehicleFilter);
|
filtered = filtered.filter(res => res.vehicle && res.vehicle.trim() === vehicleFilter);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Apply date filter
|
||||||
if (dateFilter) {
|
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);
|
displayReservations(filtered);
|
||||||
@@ -4500,18 +4510,93 @@ function calculateDuration(reservation) {
|
|||||||
return duration;
|
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 to update vehicle filter options
|
||||||
function updateVehicleFilter(reservations) {
|
function updateVehicleFilter(reservations) {
|
||||||
const vehicleFilter = document.getElementById('vehicleFilter');
|
const vehicleFilter = document.getElementById('vehicleFilter');
|
||||||
if (!vehicleFilter) return;
|
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 = `
|
vehicleFilter.innerHTML = `
|
||||||
<option value="">Všechna vozidla</option>
|
<option value="">Všechna vozidla</option>
|
||||||
${vehicles.map(v => `<option value="${v}">${v}</option>`).join('')}
|
${vehicles.map(v => `<option value="${v}" ${v === currentValue ? 'selected' : ''}>${v}</option>`).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
|
// Load reservations when page loads
|
||||||
document.addEventListener('DOMContentLoaded', () => {
|
document.addEventListener('DOMContentLoaded', () => {
|
||||||
// ...existing code...
|
// ...existing code...
|
||||||
|
|||||||
Reference in New Issue
Block a user