92 lines
3.1 KiB
JavaScript
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);
|
|
});
|
|
}
|
|
});
|
|
});
|