diff --git a/admin-dashboard.html b/admin-dashboard.html index 139f89a..d5e8ba6 100644 --- a/admin-dashboard.html +++ b/admin-dashboard.html @@ -4627,22 +4627,26 @@ async function deleteReservation(id) { if (!confirm('Opravdu chcete smazat tuto rezervaci?')) { return; } - + try { - const response = await fetch(`/api/delete-reservation`, { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - }, - body: JSON.stringify({ id: id }) - }); - - const result = await response.json(); - - if (!response.ok) { - throw new Error(result.error || 'Nepodařilo se smazat rezervaci'); + const token = localStorage.getItem('token'); + if (!token) { + window.location.href = '/login.html'; + return; } - + + const response = await fetch(`/api/reservations/${id}`, { + method: 'DELETE', + headers: { + 'Authorization': `Bearer ${token}`, + '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); @@ -4700,29 +4704,32 @@ async function saveReservation(event) { return; } - // Create ISO date strings - const start = new Date(`${startDate}T${startTime}`).toISOString(); - const end = new Date(`${endDate}T${endTime}`).toISOString(); - try { - const response = await fetch('/api/update-reservation', { - method: 'POST', + const token = localStorage.getItem('token'); + if (!token) { + window.location.href = '/login.html'; + return; + } + + const response = await fetch(`/api/reservations/${id}`, { + method: 'PUT', headers: { - 'Content-Type': 'application/json', + 'Authorization': `Bearer ${token}`, + 'Content-Type': 'application/json' }, body: JSON.stringify({ - id, driverName, vehicle, - start, - end, + startDate, + startTime, + endDate, + endTime, purpose }) }); - const result = await response.json(); - if (!response.ok) { + const result = await response.json(); throw new Error(result.error || 'Nepodařilo se uložit změny'); } @@ -4733,8 +4740,10 @@ async function saveReservation(event) { ...window.allReservations[index], driverName, vehicle, - start, - end, + startDate, + startTime, + endDate, + endTime, purpose }; @@ -4792,7 +4801,6 @@ document.addEventListener('DOMContentLoaded', function() { // Load reservations when page loads document.addEventListener('DOMContentLoaded', () => { - // ...existing code... loadReservations(); }); diff --git a/rezervace-aut.html b/rezervace-aut.html index 214afdd..efe5883 100644 --- a/rezervace-aut.html +++ b/rezervace-aut.html @@ -1467,18 +1467,7 @@ eventDidMount: function(info) { const vehicle = info.event.extendedProps.vehicle; const vehicleClass = 'event-' + vehicle.toLowerCase().replace(/\s+/g, '-'); - - // Apply vehicle-specific styling info.el.classList.add(vehicleClass); - - // Apply initial filtering - if (selectedVehicle !== 'all' && vehicle !== selectedVehicle) { - info.el.style.display = 'none'; - info.el.style.visibility = 'hidden'; - } else { - info.el.style.display = 'block'; - info.el.style.visibility = 'visible'; - } }, eventSourceSuccess: function(content, xhr) { // This runs after events are successfully loaded from the API @@ -1516,37 +1505,22 @@ function filterEvents() { const events = calendar.getEvents(); events.forEach(event => { - const eventEl = event.el; + const eventEl = calendar.getEventById(event.id); if (eventEl) { if (selectedVehicle === 'all' || event.extendedProps.vehicle === selectedVehicle) { - eventEl.style.display = 'block'; - eventEl.style.visibility = 'visible'; + // Show event + eventEl.setProp('display', 'auto'); } else { - eventEl.style.display = 'none'; - eventEl.style.visibility = 'hidden'; + // Hide event + eventEl.setProp('display', 'none'); } } }); updateReservationsList(); } - // Update vehicle filter buttons to show active state - document.querySelectorAll('.vehicle-filter-btn').forEach(btn => { - btn.addEventListener('click', function() { - // Update active state - document.querySelectorAll('.vehicle-filter-btn').forEach(b => { - b.classList.remove('active'); - b.querySelector('.vehicle-badge').classList.remove('ring-2', 'ring-brand-blue'); - }); - - this.classList.add('active'); - this.querySelector('.vehicle-badge').classList.add('ring-2', 'ring-brand-blue'); - - // Update selected vehicle and filter - selectedVehicle = this.dataset.vehicle; - filterEvents(); - }); - }); + // Update eventDidMount to not handle filtering + // (eventDidMount is already defined in calendarConfig above) // Fix reservation form show function function showReservationForm(date) {