Reservasi-Cafe/public/js/table-modal.js

92 lines
3.1 KiB
JavaScript

document.addEventListener('DOMContentLoaded', function() {
// Modal functions
window.openModal = function(modalId) {
const modal = document.getElementById(modalId);
if (modal) {
modal.classList.remove('hidden');
modal.classList.add('flex');
// Prevent body scrolling when modal is open
document.body.style.overflow = 'hidden';
}
};
window.closeModal = function(modalId) {
const modal = document.getElementById(modalId);
if (modal) {
modal.classList.remove('flex');
modal.classList.add('hidden');
// Restore body scrolling
document.body.style.overflow = 'auto';
}
};
// Close modal when clicking outside
const modals = document.querySelectorAll('.modal');
modals.forEach(modal => {
modal.addEventListener('click', function(event) {
if (event.target === this) {
closeModal(this.id);
}
});
});
// Handle edit modal
window.openEditModal = function(tableId) {
const table = window.tables.find(t => t.id === parseInt(tableId));
if (table) {
// Set form values
document.getElementById('edit_nomor_meja').value = table.nomor_meja;
document.getElementById('edit_kapasitas').value = table.kapasitas;
document.getElementById('edit_kategori').value = table.kategori;
document.getElementById('edit_status').value = table.status;
// Set form action URL
const form = document.getElementById('editTableForm');
form.action = `/admin/tables/${tableId}`;
// Open modal
openModal('editTableModal');
}
};
// Handle form submission
const editForm = document.getElementById('editTableForm');
if (editForm) {
editForm.addEventListener('submit', function(e) {
e.preventDefault();
// Submit form using fetch
fetch(this.action, {
method: 'POST',
body: new FormData(this),
headers: {
'X-Requested-With': 'XMLHttpRequest'
}
})
.then(response => response.json())
.then(data => {
if (data.success) {
// Reload page to show updated data
window.location.reload();
} else {
// Show error message
alert('Terjadi kesalahan saat memperbarui meja');
}
})
.catch(error => {
console.error('Error:', error);
alert('Terjadi kesalahan saat memperbarui meja');
});
});
}
// Close modals with Escape key
document.addEventListener('keydown', function(event) {
if (event.key === 'Escape') {
const visibleModals = document.querySelectorAll('.modal.flex');
visibleModals.forEach(modal => {
closeModal(modal.id);
});
}
});
});