PageSourceSearch

https://www.albertahealthservices.ca/h-wt/homepage-wt.js

js albertahealthservices.ca collected 2026-09-24 08:35:38 UTC 10,078 bytes, 1 lines download raw bytes

1const API_URL="https://www.albertahealthservices.ca/Webapps/WaitTimes/api/waittimes/",WAIT_TIMES_WELL=".wait-times-well",SWIPER=".swiper-container",LAST_SWIPER_SLIDE="#last-swiper-slide",SELECTOR_DROPDOWN="#dd-city-ab",CATEGORY_COLORS={"URGENT CARE":"#eba900",EMERGENCY:"#c73a32"},MOBILE_WINDOW_MAX_WIDTH=764,MOBILE_WINDOW_MIN_WIDTH=525,MAX_RESULTS=3,DUAL_TIME_DELIMITER="[;]";let waitTimesWells,swiper,cardArr=[];customSelect=document.querySelector(".custom-select"),selectedCity=document.querySelector(".selected-city"),selectCity=document.querySelector(".select-city"),arrow=document.querySelector(".arrow-down");const initialize=async()=>{waitTimesWells=document.querySelectorAll(WAIT_TIMES_WELL);const e=document.querySelector("#dd-city-ab");try{swiper=initializeSwiper();const t=await fetchData();updateDropdown(t),selectCity.querySelectorAll("div").forEach((function(i){i.addEventListener("click",(function(){buildWaittimesCards(t,i.getAttribute("data-value")),displayCards(),e.value=i.getAttribute("data-value")}))})),e.addEventListener("change",(()=>{buildWaittimesCards(t,e.value),displayCards(),selectCity.querySelectorAll("div").forEach((function(t){t.getAttribute("data-value")==e.value&&(selectedCity.textContent=t.textContent,selectedCity.setAttribute("data-value",t.getAttribute("data-value")),selectedCity.style.padding="4px 12px",selectCity.style.display="none",selectedCity.appendChild(arrow))}))})),window.addEventListener("resize",(()=>{const e=cardArr.length;updateSwiper(e)}))}catch(e){console.error("Error fetching data:",e)}},fetchData=async()=>{try{const e=await fetch(API_URL);return await e.json()}catch(e){throw e}},buildWaittimesCards=(e,t)=>{cardArr.length=0;const i=e[t.replace(/\s/g,"")];i&&Object.values(i).forEach((e=>{e.forEach((e=>{const t=waitTimesCard(e);cardArr.push(t)}))})),updateSelectedHeading(cardArr.length,t),updateViewAll(t),cardArr=filterByTime(cardArr),updateCards(cardArr),removeCards(cardArr),updateResultTime()},waitTimesCard=e=>{const t=splitDualTimeData(e.WaitTime),i=splitAndModifyNote(e.Note);let a=0,s=null;t.length>1&&(s=0,a=1);const{hrsNote:r,infoNote:l}=constructHoursAndInfoNote(e,a,s,i),[o,n]=null!==s?getWaitTimeDetails(t,s):[null,null],[d,c]=getWaitTimeDetails(t,a);return{WaitTimeHours:d,WaitTimeMinutes:c,childWaitTimeHours:o,childWaitTimeMinutes:n,Address:splitDualTimeData(e.Address)[a],Category:splitDualTimeData(e.Category)[a],Name:splitDualTimeData(e.Name)[a],hospitalURL:splitDualTimeData(e.URL)[a],Maps:splitDualTimeData(e.GoogleMapsLinkDirection)[a],Hours:r||"",Info:l||"",TimesUnavailable:splitDualTimeData(e.TimesUnavailable)}},splitDualTimeData=e=>e.split("[;]"),getWaitTimeDetails=(e,t)=>{const i=e[t].split(" ");let a=2;return"Closing soon"!=e[t]&&"Closed"!=e[t]||(a=1),[i[0],i[a]]},constructHoursAndInfoNote=(e,t,i,a)=>{let s=a.hrsNote,r=a.infoNote;if(null!==i){const a=splitDualTimeData(e.Note)[i],l=splitDualTimeData(e.Note)[t],o="Children's Emergency: "+a.split(":")[1];s=`${l.includes("Open 24 hours")?"Adult Emergency: 24 hours":"Adult Emergency: "+l}<br>${o}`,r="Children's Emergency for 17 and Under"}return{hrsNote:s,infoNote:r}},splitAndModifyNote=e=>{const t=["for","For","This","this"];let i=e,a="";for(const s of t)if(null!=e&&e.includes(s)){[i,a]=e.split(s),a=s.charAt(0).toUpperCase()+s.slice(1)+a,i=i.replace(/<br\s*\/?>/g,""),a=a.replace(/<br\s*\/?>/g,""),a=a.replace(/&amp;/g,"&");break}return{hrsNote:i?i.trim():"",infoNote:a?a.trim():""}},updateCards=e=>{e.forEach(((e,t)=>updateAttributes(e,waitTimesWells[t])))},updateAttributes=(e,t)=>{updateWaitTimeContainer(e,t);const{waitTimeElement:i,clockIcon:a,categoryElement:s}=selectElementsForCard(t,e.childWaitTimeHours),r=t.querySelector(".wait-times-dblTime.dbl-wt-two .wait-times-time span"),l=t.querySelector(".wait-times-hospital"),o=t.querySelector(".wait-times-hospital-attribute-address span"),n=t.querySelector(".wait-times-hospital-attribute-map a"),d=t.querySelector(".wait-times-hospital-attribute-hours span"),c=t.querySelector(".wait-times-hospital-attribute-more-info span"),u=t.querySelector(".dbl-wt-two .wait-times-type span"),p=t.querySelector(".fa-solid.fa-circle"),m=t.querySelector(".wait-times-dblTime.dbl-wt-two .fa-regular.fa-clock"),y=t.querySelector(".wait-times-hospital-attribute-hours .fa-regular.fa-clock"),w=t.querySelector(".fa-regular.fa-circle-info");updateWaitTimeInfo(e,i,r,a,m),updateHospitalInfo(e,l,o,n,d,c,s,u,p,y,w)},selectElementsForCard=(e,t)=>{let i,a,s;if(t)i=e.querySelector(".wait-times-dblTime.dbl-wt-one .wait-times-time span"),a=e.querySelector(".wait-times-dblTime.dbl-wt-one .fa-regular.fa-clock"),s=e.querySelector(".dbl-wt-one .wait-times-type span");else{const t=e.querySelectorAll('[class=""]')[1];i=t.querySelector("span"),a=t.querySelector(".fa-regular.fa-clock"),s=t.querySelector(".wait-times-type span")}
1return{waitTimeElement:i,clockIcon:a,categoryElement:s}},updateHospitalInfo=(e,t,i,a,s,r,l,o,n,d,c)=>{updateHospitalName(t,e),i.textContent=e.Address,a.href=e.Maps,d.style.display=""===e.Hours?"none":"inline-block",s.innerHTML=e.Hours,r&&(r.textContent=e.Info,c.style.display=""===e.Info?"none":"inline-block"),updateCategory(l,o,e),n.style.color=CATEGORY_COLORS[e.Category.toUpperCase()]},updateHospitalName=(e,t)=>{const i=document.createElement("a");i.href=t.hospitalURL,i.textContent=t.Name,e.innerHTML="",e.appendChild(i)},updateCategory=(e,t,i)=>{i.childWaitTimeHours?(e.innerHTML=`<strong>Adult's ${i.Category}</strong>`,t.innerHTML=`<strong>Children's ${i.Category}</strong>`):e.textContent=i.Category.toUpperCase()},updateWaitTimeInfo=(e,t,i,a,s)=>{updateWaitTime(e,t,a,e.WaitTimeHours,e.WaitTimeMinutes,e.childWaitTimeHours?1:0),e.childWaitTimeHours&&updateWaitTime(e,i,s,e.childWaitTimeHours,e.childWaitTimeMinutes,0)},updateWaitTime=(e,t,i,a,s,r)=>{"True"===e.TimesUnavailable[r]?(i.style.display="none",t.innerHTML='<span style="font-weight: bold; color: grey; font-size: medium;">Wait times unavailable</span>'):(i.style.display="inline-block",t.innerHTML="Closing"==a?`<strong>${a}</strong> <strong>${s}</strong>`:"Closed"==a?`<strong>${a}</strong>`:`<strong>${a}</strong>hr <strong>${s}</strong>min`)},updateWaitTimeContainer=(e,t)=>{e.childWaitTimeHours?displayContainer(t):hideContainer(t)},displayContainer=e=>{const t=e.querySelector('[class=""]'),i=e.querySelectorAll('[class=""]')[1],a=e.querySelector(".dblwait-times-timetype");t&&t.classList.add("wait-time-dbl-container"),i&&i.classList.add("wait-times-dblTime","dbl-wt-one"),a.classList.remove("wait-times-timetype"),e.querySelector(".dbl-wt-two").style.display="flex"},hideContainer=e=>{const t=e.querySelector(".wait-time-dbl-container"),i=e.querySelector(".dbl-wt-two"),a=e.querySelector(".dblwait-times-timetype"),s=e.querySelector(".wait-times-dblTime");t?.classList.remove("wait-time-dbl-container"),i?.style.setProperty("display","none"),a?.classList.add("wait-times-timetype"),s?.classList.remove("wait-times-dblTime","dbl-wt-one")},updateSelectedHeading=(e,t)=>{const i=document.querySelector(".wait-times-selected-heading h3"),a=document.querySelector("#mbl-heading"),s=document.querySelector(".wait-times-selected-heading p");i.textContent=`Locations with estimated wait times in ${t}`,a.textContent=`Results for  ${t}`,s.innerHTML=e>3?`<strong>3</strong> out of <strong>${e}</strong> <span id="resultsSpan">results <span>`:`<strong>${e}</strong> out of <strong>${e}</strong> <span id="resultsSpan">results <span>`},filterByTime=e=>e.sort(((e,t)=>e.Name.localeCompare(t.Name))).slice(0,3),parseWaitTime=(e,t)=>60*e+parseInt(t),removeCards=e=>{const t=e.length,i=document.querySelector(".swiper-container .swiper-slide:nth-child(2)"),a=document.querySelector(".swiper-container .swiper-slide:nth-child(3)"),s=waitTimesWells[1],r=waitTimesWells[2];3===t?(i||addSlide(s),a||addSlide(r)):2===t?(removeSlide(a),i||addSlide(s)):1===t&&(removeSlide(a),removeSlide(i)),updateSwiper(t)},removeSlide=e=>{e&&e.parentNode.removeChild(e)},addSlide=e=>{const t=document.querySelector(".swiper-wrapper"),i=document.createElement("div");i.classList.add("swiper-slide"),i.appendChild(e),t.appendChild(i)},initializeSwiper=()=>new Swiper(SWIPER,{slidesPerView:1.25,spaceBetween:4,pagination:{el:".swiper-pagination",clickable:!0,autoHeight:!0},breakpoints:{525:{slidesPerView:2,spaceBetween:24,allowTouchMove:!0},764:{slidesPerView:3,spaceBetween:40,allowTouchMove:!1}}}),updateSwiper=e=>{1===e||window.innerWidth>=764?swiper.pagination.el.style.display="none":swiper.pagination.el.style.display="block",swiper.update()},updateDropdown=e=>{const t=Object.keys(e).map((e=>e.toLowerCase()));document.getElementById("dd-city-ab").querySelectorAll("option").forEach((e=>{const i=e.getAttribute("data-city");i&&!t.includes(i.toLowerCase())&&(e.style.display="none")}))},updateResultTime=()=>{document.querySelector(".wait-times-results-time").innerHTML=`Results as of <b>${getTime()}</b>`},getTime=()=>{const e=new Date;let t=e.getHours();const i=t>=12?"PM":"AM";return t%=12,0==t&&(t=12),`${t}:${e.getMinutes().toString().padStart(2,"0")} ${i}`},updateViewAll=e=>{const t=document.querySelector(".wait-times-view-all"),i=document.querySelector("#dd-city-ab");t&&t.addEventListener("click",(function(){const a=t.getAttribute("href"),s=new URL(a);s.searchParams.delete("city"),s.searchParams.set("city",e),t.setAttribute("href",s.toString()),i.selectedIndex=0}))};selectedCity.addEventListener("click",(function(){selectCity.style.display="inline"===selectCity.style.display?"none":"inline"})),selectCity.querySelectorAll("div").forEach((function(e){e.addEventListener("click",(function(){selectedCity.textContent=e.textContent,selectedCity.setAttribute("data-value",e.getAttribute("data-value")),selectedCity.style.padding="0px 9px",selectCity.style.display="none",selectedCity.appendChild(arrow)}))})),document.addEventListener("click",(function(e){customSelect.contains(e.target)||(selectCity.style.display="none")}));const displayCards=()=>{document.querySelector(".wait-times-cards").style.display="block",updateSwiper(cardArr.length)};document.addEventListener("DOMContentLoaded",initialize);

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.