1if(document.getElementById("trainer-widget"))var trainerWidget=new Vue({el:"#trainer-widget",data:{trainerList:trainerList,searchQuery:"",filters:[],selectedFilters:[],filterElements:[],visibleTrainerElements:[],noTrainers:!1},methods:{renderFilters:function(){const e=document.getElementById("Filters");for(let t of this.filters){const i=t.replaceAll(" ","_"),l=document.createElement("div");l.className="Filter";const r=document.createElement("div");r.className="FilterInput",r.dataset.selected="false",r.id=i;const s=this;r.addEventListener("click",(e=>{const t=e.target,i=t.id.replaceAll("_"," ");if(this.selectedFilters.includes(i)&&this.filterElements.includes(t))this.selectedFilters.splice(this.selectedFilters.indexOf(i),1),this.filterElements.splice(this.filterElements.indexOf(t),1),e.target.dataset.selected="false";else{this.selectedFilters.push(i),this.filterElements.push(t),e.target.dataset.selected="true";let l=!1;if(window.dataLayer)for(let e of window.dataLayer)e.event_label&&e.event_label===t&&(l=!0);if(!l)try{window.dataLayer.push({event_category:"Personal Trainer Search Filter",event_action:"Click",event_label:t})}catch{}}s.filterResults()}));const a=document.createElement("i");a.className="fas fa-check";const n=document.createElement("label");n.htmlFor=i,n.innerText=t,n.className="FilterLabel",r.appendChild(a),l.appendChild(r),l.appendChild(n),e.appendChild(l)}},retrieveFilters:function(){const e=[];for(let t of this.trainerList)for(let i of t.specialties){let t=!1;for(let l of e)l.toLowerCase()===i.toLowerCase().trim()&&(t=!0);t||e.push(i.trim())}return e},resetFilters:function(){for(let e of this.filterElements)e.dataset.selected="false";this.searchQuery="",this.selectedFilters=[],this.filterResults()},filterResults:function(){const e=[...this.trainerList],t=[];for(let i of this.selectedFilters)for(let l of e)l.specialties.includes(i)||t.includes(l)||t.push(l);for(let i of e){let e=i.name.trim().toLowerCase(),l="";for(let e of i.qualifications)l+=e.replaceAll("-","").replaceAll(" ","");const r=e+l.trim().toLowerCase(),s=this.searchQuery.trim().toLowerCase().replaceAll(" ","");r.includes(s.toLowerCase())||t.includes(i)||t.push(i)}for(let i of t)e.splice(e.indexOf(i),1);const i=document.getElementById("TrainerCardContainer");for(let e of i.children)e.style.display="none";for(let t of e){document.getElementById(t.id).style.display="block"}this.noTrainers=this.trainerList.length==t.length;try{window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"Personal Trainer Search",data:{search_term:this.searchQuery.trim()}})}catch{}},goToPage:function(e,t){if(void 0!==t&&null!=t&&t.length>0){try{window.dataLayer=window.dataLayer||[],window.dataLayer.push({event_category:"PT Profile",event_action:"Click",event_label:e+" Profile"})}catch{}window.location=t}},keyHandler:function(e){"Enter"===e.key&&this.filterResults()}},mounted:function(){this.trainerList.sort(((e,t)=>e.name<t.name?-1:e.name>t.name?1:0)),this.filters=this.retrieveFilters(),this.renderFilters()}});
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.