1(function ($) { 2 'use strict'; 3 function bindServicePartnerHandler() { 4 const container = document.querySelector('.woocommerce-wildrobot-pickuppoint-checkout-inline'); 5 if (!container) return; 6 7 let servicePartnerData; 8 try { 9 servicePartnerData = JSON.parse(container.dataset.logistraServicePartner); 10 // Validate the expected structure 11 if (!servicePartnerData || !Array.isArray(servicePartnerData.servicePartners) || !servicePartnerData.ajaxUrl || !servicePartnerData.nonce) { 12 console.error('Invalid service partner data structure'); 13 return; 14 } 15 } catch (e) { 16 console.error('Failed to parse service partner data:', e); 17 return; 18 } 19 // Now you can use servicePartnerData.servicePartners, servicePartnerData.ajaxUrl, etc. 20 $('.logistra_robots_select_servicepartner').each(function () { 21 console.log("RUNNING logistra_robots_select_servicepartner"); 22 // Remove existing handler to prevent duplicates 23 $(this).off('change.logistra'); 24 25 // Add new handler 26 $(this).on('change.logistra', function () { 27 const selectedOption = $(this).find('option:selected'); 28 console.log("selectedOption: ", selectedOption); 29 const servicePartners = servicePartnerData.servicePartners; 30 console.log("servicePartners: ", servicePartners); 31 const servicePartner = servicePartners.find(sp => 32 selectedOption.val() === sp.number + "@@@" + 33 (typeof sp["customer-number"] === 'string' ? sp["customer-number"] : "") 34 ); 35 36 if (!servicePartner?.number) { 37 console.log("No service partner found for option: ", selectedOption); 38 return; 39 } 40 41 $.ajax({ 42 url: servicePartnerData.ajaxUrl, 43 type: 'POST', 44 data: { 45 action: 'logistra_save_service_partner', 46 service_partner_number: servicePartner.number, 47 service_partner_customer_number: servicePartner["customer-number"], 48 service_partner_name: servicePartner.name, 49 service_partner_postcode: servicePartner.postcode, 50 service_partner_city: servicePartner.city, 51 service_partner_country: servicePartner.country, 52 nonce: servicePartnerData.nonce 53 }, 54 success: function (response) { 55 if (response.success) { 56 if (typeof wc_checkout_params !== 'undefined') { 57 $(document.body).trigger('update_checkout'); 58 } 59 } else { 60 console.error("Error saving service partner"); 61 } 62 } 63 }); 64 }); 65 }); 66 } 67 68 // Initial binding when document is ready 69 $(document).ready(bindServicePartnerHandler); 70 71 // Rebind after WooCommerce updates 72 $(document.body).on('wc_fragments_refreshed', bindServicePartnerHandler); 73 $(document.body).on('updated_checkout', bindServicePartnerHandler); 74 $(document.body).on('updated_shipping_method', bindServicePartnerHandler); 75 76 77})(jQuery);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.