JezK
Edit File: delivery-slots-admin.js
jQuery(document).ready(function($) { const form = $('#delivery-slot-form'); const resultContainer = $('<div class="notice"></div>').insertAfter(form); form.on('submit', function(e) { e.preventDefault(); const formData = new FormData(this); formData.append('action', 'save_delivery_slot'); $.ajax({ url: deliverySlots.ajaxUrl, type: 'POST', data: formData, processData: false, contentType: false, beforeSend: function() { form.find('button[type="submit"]').prop('disabled', true); resultContainer.removeClass('notice-success notice-error').empty(); }, success: function(response) { if (response.success) { resultContainer .addClass('notice-success') .html('<p>' + response.data.message + '</p>'); form[0].reset(); // Reload the page to show updated data setTimeout(function() { window.location.reload(); }, 1500); } else { resultContainer .addClass('notice-error') .html('<p>' + response.data + '</p>'); } }, error: function(xhr, status, error) { resultContainer .addClass('notice-error') .html('<p>Error: ' + error + '</p>'); }, complete: function() { form.find('button[type="submit"]').prop('disabled', false); } }); }); // Handle edit button clicks $('.edit-slot').on('click', function() { const id = $(this).data('id'); const row = $(this).closest('tr'); const pincode = row.find('td:first').text(); const timeSlot = row.find('td:nth-child(2)').text(); $('#pincode').val(pincode); $('#time_slot').val(timeSlot); // Scroll to form $('html, body').animate({ scrollTop: form.offset().top - 50 }, 500); }); // Handle delete button clicks $('.delete-slot').on('click', function() { if (!confirm('Are you sure you want to delete this delivery slot?')) { return; } const id = $(this).data('id'); const row = $(this).closest('tr'); $.ajax({ url: deliverySlots.ajaxUrl, type: 'POST', data: { action: 'delete_delivery_slot', id: id, nonce: deliverySlots.nonce }, success: function(response) { if (response.success) { row.fadeOut(400, function() { $(this).remove(); }); } else { alert(response.data); } }, error: function() { alert('Error occurred while deleting the slot'); } }); }); });