1(function ($) { 2 "use strict"; 3 4 $(function () { 5 var selector = "#trv-search-route"; 6 var errorClass = "trv-search-route-request-error"; 7 8 $(document).off("submit", selector); 9 $(document).on("submit.trvSearchHotfix", selector, function (event) { 10 event.preventDefault(); 11 12 var form = this; 13 var $form = $(form); 14 var $submit = $form.find(".search_route_btn"); 15 var formData = new FormData(form); 16 var session = new URLSearchParams(window.location.search).get("session"); 17 18 formData.append("action", "route_selection"); 19 formData.append("nonce", trv_obj.nonce); 20 if (session) { 21 formData.append("session", session); 22 } 23 24 $form.find(".trv-error-message, ." + errorClass).remove(); 25 $form.find(".error").removeClass("error"); 26 $submit.addClass("loading").prop("disabled", true); 27 28 function showRequestError(message) { 29 $("<span>", { 30 "class": "trv-error-message " + errorClass, 31 text: message || trv_obj.messages.load_error 32 }).insertAfter($submit); 33 } 34 35 $.ajax({ 36 url: trv_obj.ajax_url, 37 type: "POST", 38 data: formData, 39 processData: false, 40 contentType: false, 41 dataType: "json", 42 timeout: 15000 43 }).done(function (response) { 44 var data = response && response.data ? response.data : {}; 45 46 if (!response || !response.success) { 47 if (data.errors) { 48 $.each(data.errors, function (field, message) { 49 $form.find('[name="' + field + '"]') 50 .addClass("error") 51 .after($("<span>", { 52 "class": "trv-error-message", 53 text: message 54 })); 55 }); 56 } else { 57 showRequestError(data.message); 58 } 59 return; 60 } 61 62 if (!data.redirect_url) { 63 showRequestError(trv_obj.messages.load_error); 64 return; 65 } 66 67 try { 68 if (typeof window.__gtagTracker === "function") { 69 window.__gtagTracker("event", "start_route_search", { 70 event_category: "Route", 71 event_action: "start_route_search", 72 event_label: "Route search started", 73 transport_type: "beacon", 74 value: 1 75 }); 76 } else if (window.dataLayer) { 77 window.dataLayer.push({ 78 event: "start_route_search", 79 event_category: "Route", 80 event_action: "start_route_search", 81 event_label: "Route search started", 82 value: 1 83 }); 84 } 85 } catch (analyticsError) { 86 // Analytics must never block route navigation. 87 } 88 89 window.location.assign(data.redirect_url); 90 }).fail(function (xhr, status) { 91 var message = status === "timeout" 92 ? (window.location.pathname.indexOf("/en/") === 0 93 ? "The search took too long. Please try again." 94 : "La búsqueda está tardando demasiado. Inténtalo de nuevo.") 95 : trv_obj.messages.load_error; 96 showRequestError(message); 97 }).always(function () { 98 $submit.removeClass("loading").prop("disabled", false); 99 }); 100 }); 101 }); 102})(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.