{"version":3,"sources":["js-locations.js"],"names":["cardsHolder","document","querySelector","elLoadSpinner","elLoadMoreContainer","loadBtns","loadFunction","urls","loader","querySelectorAll","next","all","startSpinner","startLoadSpinner","stopSpinner","stopLoadSpinner","setNextUrl","load","loadMore","toggle","data","dataNextUrl","nextPageUrl","dataAllUrl","allUrl","length","classList","remove","add","init","loaderFunction","firstUrl","i","addEventListener","loadMoreBtnHandler","url","arguments","undefined","e","preventDefault","loadType","target","getAttribute","urlNext","urlAll","gettingClockwise","templateWaitTime","element","children","func","card","attributes","attr","value","clockwiseId","contentKey","templateMain","heading","cards","distance","hasWaitTime","Array","isArray","addresses","map","str","innerhtml","contactNumbers","cont","text","isPhone","cardNumber","replace","checkIsPhone","number","clockwiseHandler","loading","queue","waitTimeController","initUpdateWaitTime","push","ajax","get","success","hospital_waits","elCurrentWait","timeDisplayFormat","timeOptions","waitTimeDisplayStyle","timeDisplayHoursMins","waitTimeIsHoursAndMinutes","timeConvert","n","hours","rhours","Math","floor","minutes","rminutes","round","numHours","getHourString","nHours","numMins","getMinuteString","createRangedTime","minTime","maxTime","waitInfoObj","parentElement","innerHTML","next_available_visit","nextAvailable","parseInt","getWaitTimeText","pop","nextWait","xhr","firstLoadUrl","allLoadUrl","options","async","Error","XMLHttpRequest","open","setRequestHeader","onreadystatechange","readyState","responseText","JSON","parse","status","console","error","statusText","send","createTemplateElement","obj","doctorObj","createElement","checkAndSetParameter","param","_len2","args","_key2","apply","concat","cssClassList","forEach","cssClass","key","_ref","_ref$value","contentValue","checkForAltAttr","setAttribute","kid","hasSpecial","item","childElement","dataset","clockwise","appendChild","getSectionHolder","section","getLastChildOfClass","classname","slice","call","lastHeading","sectionHolder","group","newCardSection","Append","el","initializeLocations","locations","holder","loc","setRepeatParameters","getLocations","content","getCoords","callback","queryCords","isLoading","setQueryString","val","loadedCoords","pos","coords","latitude","longitude","failedCoords","log","navigator","geolocation","getCurrentPosition","distanceBtnHandler","href","c","window","location","distanceBtn","mobileSortDropDown","contains","initializeSortBtnListeners"],"mappings":"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","file":"js-locations.js","sourcesContent":["'use strict'; /* eslint-disable wrap-iife */\n(function Institute() {\n // Global selectors\n var cardsHolder = document.querySelector('[rel=\"js-cards-container\"]');\n //const sortHolder = document.querySelector('.c-result-bar ul');\n //const sortNumber = document.querySelector('[rel=\"js-cardCountTotal\"]');\n\n function l() {for (var _len = arguments.length, anything = Array(_len), _key = 0; _key < _len; _key++) {anything[_key] = arguments[_key];}\n console.log(anything);\n }\n\n var loader = function myLoader() {\n var elLoadSpinner = document.querySelector('[rel=\"js-load-spinner\"]');\n var elLoadMoreContainer = document.querySelector(\n '[rel=\"js-load-container\"]');\n\n //const btnLoadMore = elLoadMoreContainer.querySelector('button');\n\n var loadBtns = elLoadMoreContainer.querySelectorAll('button');\n var loadFunction = void 0;\n //let nextUrl;\n var urls = {\n next: '',\n all: '' };\n\n\n function startLoadSpinner() {\n elLoadSpinner.classList.remove('u-display--none');\n elLoadMoreContainer.classList.add('u-display--none');\n }\n\n function stopLoadSpinner() {\n elLoadSpinner.classList.add('u-display--none');\n }\n\n function loadMore() {var url = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : urls.next;\n startLoadSpinner();\n loadFunction(url);\n }\n\n function loadMoreBtnHandler(e) {\n e.preventDefault();\n var loadType = e.target.getAttribute('data-load-type');\n loadMore(urls[loadType]);\n }\n\n function setNextUrl(urlNext, urlAll) {\n urls.next = urlNext;\n urls.all = urlAll;\n }\n\n function toggleLoadMore(data) {\n // internal\n var dataNextUrl = data.nextPageUrl;\n var dataAllUrl = data.allUrl;\n\n function hasNextPageUrl() {\n return dataNextUrl && dataNextUrl.length > 0;\n }\n\n if (hasNextPageUrl()) {\n setNextUrl(dataNextUrl, dataAllUrl);\n elLoadMoreContainer.classList.remove('u-display--none');\n } else {\n elLoadMoreContainer.classList.add('u-display--none');\n }\n\n stopLoadSpinner();\n }\n\n function init(loaderFunction, firstUrl, allUrl) {\n for (var i = 0; i < loadBtns.length; i++) {\n var btn = loadBtns[i];\n btn.addEventListener('click', loadMoreBtnHandler);\n }\n urls.all = allUrl;\n loadFunction = loaderFunction;\n loadMore(firstUrl);\n }\n\n return {\n startSpinner: startLoadSpinner,\n stopSpinner: stopLoadSpinner,\n setNextUrl: setNextUrl,\n load: loadMore,\n toggle: toggleLoadMore,\n init: init };\n\n }();\n\n var templateImageLink = {\n element: 'a',\n classList: ['c-img-card__anchor'],\n attributes: [\n {\n attr: 'href',\n contentKey: 'detailHref' }],\n\n\n children: [\n {\n element: 'figure',\n children: [\n {\n element: 'img',\n classList: [],\n attributes: [\n {\n attr: 'src',\n contentKey: 'imageSrc' },\n\n {\n attr: 'alt',\n contentKey: 'name' }] },\n\n\n\n {\n element: 'figcaption',\n classList: [],\n contentKey: 'textImageBtn' }] }] };\n\n\n\n\n\n\n var templateWaitTime = {\n element: 'p',\n classList: [],\n children: [\n {\n element: 'span',\n classList: ['c-img-card__special', 'u-display--none'],\n\n children: [\n {\n func: function func(card) {\n return [\n {\n element: 'span',\n classList: ['clockwise_current_wait'],\n attributes: [\n {\n attr: 'data-clockwise',\n value: '' + card.clockwiseId }] }];\n\n\n\n\n } },\n\n {\n element: 'span',\n classList: ['c-img-card__wait-text'],\n contentKey: 'textWaitTimes' }] }] };\n\n\n\n\n\n\n var templateDetails = {\n element: 'div',\n classList: ['c-img-card__details'],\n children: [\n {\n element: 'h2',\n classList: ['c-img-card__name'],\n children: [\n {\n element: 'a',\n classList: [],\n contentKey: 'name',\n attributes: [\n {\n attr: 'href',\n contentKey: 'detailHref' }] }] },\n\n\n\n\n\n {\n func: function func(card) {\n if (card.distance !== null) {\n return [{\n element: 'p',\n classList: ['c-img-card__distance'],\n contentKey: 'distance' }];\n\n }\n } },\n\n {\n func: function func(card) {\n if (card.hasWaitTime === true) {\n return [templateWaitTime];\n }\n } },\n\n {\n func: function func(card) {\n if (Array.isArray(card.addresses)) {\n return card.addresses.map(function (str) {return {\n element: 'p',\n classList: ['c-img-card__address'],\n contentKey: 'innerhtml',\n innerhtml: str,\n attributes: [\n {\n attr: 'translate',\n value: 'no' }] };});\n\n\n\n }\n } },\n\n {\n func: function func(card) {\n if (Array.isArray(card.contactNumbers)) {var\n checkIsPhone = function checkIsPhone(isPhone, cardNumber) {\n if (!isPhone) {\n return {\n element: 'p',\n classList: ['c-img-card__number-not-phone'],\n contentKey: 'innerhtml',\n innerhtml: cardNumber };\n\n }\n //returns formatted a tag with tel:number\n return {\n element: 'a',\n contentKey: 'innerhtml',\n innerhtml: cardNumber,\n attributes: [\n {\n attr: 'href',\n value: 'tel:+1' + cardNumber.replace(/-/g, '') }] };\n\n\n\n };\n\n return card.contactNumbers.map(function (cont) {return {\n element: 'p',\n classList: ['c-img-card__number'],\n children: [\n {\n element: 'span',\n classList: ['c-img-card__number-text'],\n innerhtml: cont.text,\n contentKey: 'innerhtml' },\n\n checkIsPhone(cont.isPhone, cont.number)] };});\n\n\n }\n } }] };\n\n\n\n\n var templateMain = {\n heading: {\n element: 'div',\n classList: ['c-img-cards__heading'],\n contentKey: 'group' },\n\n cards: {\n element: 'div',\n classList: ['c-img-cards'] },\n\n card: {\n element: 'article',\n classList: ['c-img-card'],\n children: [templateImageLink, templateDetails] } };\n\n\n /* +------------------------+\n | CLOCKWISE |\n +------------------------+ */\n var clockwiseHandler = function () {\n var gettingClockwise = {\n loading: false,\n queue: [] };\n\n\n function initUpdateWaitTime(elCurrentWait) {\n\n var timeDisplayFormat = clockwiseHandler.timeOptions.waitTimeDisplayStyle;\n var timeDisplayHoursMins = clockwiseHandler.timeOptions.waitTimeIsHoursAndMinutes;\n\n function getHourString(numHours) {\n if (numHours === 0) return '';\n var strHours = numHours > 1 ? ' hours ' : ' hour ';\n return numHours + strHours;\n }\n\n function getMinuteString(nHours, numMins) {\n if (nHours > 0 && numMins === 0) return '';\n return numMins + ' min';\n }\n\n function timeConvert(n) {\n var num = n;\n var hours = num / 60;\n var rhours = Math.floor(hours);\n var minutes = (hours - rhours) * 60;\n var rminutes = Math.round(minutes);\n return getHourString(rhours) + getMinuteString(rhours, rminutes);\n }\n\n function createRangedTime(minTime, maxTime) {var delimiter = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '-';\n return minTime + ' ' + delimiter + ' ' + maxTime;\n }\n\n return function UpdateWaitTimes(waitInfoObj) {\n\n function getWaitTimeText() {\n if (waitInfoObj.next_available_visit === 'N/A') {\n return waitInfoObj.next_available_visit;\n }\n\n var nextAvailable = waitInfoObj.next_available_visit;\n var maxTime = parseInt(nextAvailable, 10) + 15;\n\n if (timeDisplayHoursMins !== 'true') {\n return timeDisplayFormat === 'range' ? createRangedTime(nextAvailable, maxTime) : nextAvailable;\n }\n\n return timeDisplayFormat === 'range' ? createRangedTime(timeConvert(nextAvailable), timeConvert(maxTime), 'to') : timeConvert(nextAvailable);\n }\n\n elCurrentWait.parentElement.classList.remove('u-display--none');\n elCurrentWait.innerHTML = getWaitTimeText();\n };\n }\n\n function next() {\n if (gettingClockwise.queue.length > 0 && gettingClockwise.loading === true) {\n var nextWait = gettingClockwise.queue.pop();\n nextWait();\n } else {\n //if last end\n gettingClockwise.loading = false;\n }\n }\n\n function add(clockwiseId, element) {\n var waitTimeController = initUpdateWaitTime(element);\n var queueClockwise = function queueClockwise() {\n var url = 'https://api.clockwisemd.com/v1/hospitals/' + clockwiseId + '/waits';\n\n function success(data) {\n\n waitTimeController(data.hospital_waits);\n // element.innerHTML = `${data.hospital_waits.current_wait} `;\n next();\n }\n\n return ajax.get(url, { success: success }, true);\n };\n\n gettingClockwise.queue.push(queueClockwise);\n\n if (gettingClockwise.loading === false) {\n //if first start\n gettingClockwise.loading = true;\n next();\n }\n }\n\n return {\n add: add };\n\n }();\n /* +-----------------------+\n | AJAX |\n +-----------------------+ */\n var ajax = function Ajax() {\n var xhr = void 0;\n\n function get(url, options) {var async = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n if (!url || url.length === 0) {\n throw new Error('Bad Get URL');\n }\n\n function getStateChangeListener() {\n if (xhr.readyState === 4) {\n var responseText = JSON.parse(xhr.responseText);\n if (xhr.status === 200) {\n options.success(responseText);\n } else {\n console.error('An error occurred during your request!\\n status: ' +\n xhr.status + '\\n status text: ' +\n xhr.statusText);\n options.error(responseText);\n }\n }\n }\n\n xhr = new XMLHttpRequest();\n xhr.open('GET', url, async);\n xhr.setRequestHeader(\n 'Content-Type',\n 'application/x-www-form-urlencoded; charset=UTF-8');\n\n xhr.onreadystatechange = getStateChangeListener;\n xhr.send(options.data);\n }\n\n return {\n get: get };\n\n }();\n\n function createTemplateElement(obj) {var doctorObj = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var element = document.createElement(obj.element);\n // internal\n function checkAndSetParameter(param, func) {\n if (param) {for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {args[_key2 - 2] = arguments[_key2];}\n func.apply(undefined, [param].concat(args));\n }\n }\n // internal\n function setCssClass(cssClassList) {\n cssClassList.forEach(function (cssClass) {\n element.classList.add(cssClass);\n });\n }\n // internal\n function setContent(key) {\n element.innerHTML = key === 'innerhtml' ? obj.innerhtml : doctorObj[key];\n }\n // internal\n function setAttributes(attributes) {\n // internal\n function checkForAltAttr(attr, contentValue) {\n return attr !== 'alt' ? contentValue : 'Photo of ' + contentValue;\n }\n // action\n attributes.forEach(function (_ref) {var attr = _ref.attr,contentKey = _ref.contentKey,_ref$value = _ref.value,value = _ref$value === undefined ? false : _ref$value;\n var contentValue =\n value !== false ?\n value :\n checkForAltAttr(attr, doctorObj[contentKey]);\n element.setAttribute(attr, contentValue);\n });\n }\n\n function birthChildren(children) {\n children.forEach(function (kid) {\n if (kid.func) {\n var hasSpecial = kid.func(doctorObj);\n if (hasSpecial) {\n hasSpecial.forEach(function (item) {\n var childElement = createTemplateElement(item, doctorObj);\n if (childElement.dataset.clockwise) {\n clockwiseHandler.add(doctorObj.clockwiseId, childElement);\n }\n element.appendChild(childElement);\n });\n }\n } else {\n element.appendChild(createTemplateElement(kid, doctorObj));\n }\n });\n }\n\n // Sets Css classes\n checkAndSetParameter(obj.classList, setCssClass);\n // Copies content from data to innerHTML of element\n checkAndSetParameter(obj.contentKey, setContent);\n // Sets html attributes (src, href....)\n checkAndSetParameter(obj.attributes, setAttributes);\n // loops child elemnts in template to create html structure\n checkAndSetParameter(obj.children, birthChildren);\n\n return element;\n }\n\n function getSectionHolder(section) {\n // internal\n function getLastChildOfClass(classname) {\n return [].slice.call(cardsHolder.querySelectorAll(classname)).pop();\n }\n // internal\n function lastCardSection() {\n return getLastChildOfClass('.c-img-cards');\n }\n // internal\n function newCardSection() {\n cardsHolder.appendChild(\n createTemplateElement(templateMain.heading, section));\n\n var cards = createTemplateElement(templateMain.cards);\n cardsHolder.appendChild(cards);\n return cards;\n }\n // internal\n function isNewSection() {\n var lastHeading = getLastChildOfClass('.c-img-cards__heading');\n return !lastHeading || lastHeading.innerHTML !== section.group;\n }\n // action\n var sectionHolder = isNewSection() ? newCardSection() : lastCardSection();\n\n return {\n Append: function Append(el) {\n sectionHolder.appendChild(el);\n } };\n\n }\n\n function initializeLocations(data, locations, holder) {\n /* takes global parameters and applies them to individual\n cards (reused button text) */\n function setRepeatParameters(loc) {\n var repeatParameters = ['textImageBtn', 'textWaitTimes', 'waitTimeDisplayStyle', 'waitTimeIsHoursAndMinutes'];\n repeatParameters.forEach(function (param) {\n if (data[param]) {\n loc[param] = data[param];\n }\n });\n return loc;\n }\n\n clockwiseHandler.timeOptions = {\n 'waitTimeDisplayStyle': data.waitTimeDisplayStyle,\n 'waitTimeIsHoursAndMinutes': data.waitTimeIsHoursAndMinutes\n\n // action\n };locations.forEach(function (loc) {\n loc = setRepeatParameters(loc, data);\n holder.Append(createTemplateElement(templateMain.card, loc));\n });\n }\n\n function getLocations(url) {\n return ajax.get(\n url,\n {\n success: function success(data) {\n loader.toggle(data);\n // sortHolder.classList.add(`sort--${data.sort.sortOrder}`);\n // if(data.cardCountTotal){\n // sortNumber.innerHTML = data.cardCountTotal;\n // }\n // action\n data.content.forEach(function (section) {\n initializeLocations(data, section.cards, getSectionHolder(section));\n });\n },\n error: function error(er) {\n loader.stopSpinner();\n } },\n\n true);\n\n }\n\n function getCoords(callback) {\n var queryCords;\n\n var isLoading = false;\n\n function setQueryString(val) {\n queryCords = val;\n isLoading = false;\n }\n\n function loadedCoords(pos) {\n setQueryString('&lat=' + pos.coords.latitude + '&lon=' + pos.coords.longitude);\n callback(queryCords);\n }\n\n function failedCoords() {\n console.log('failed loading coords');\n setQueryString('');\n callback(queryCords);\n }\n\n function getLocation() {\n isLoading = true;\n navigator.geolocation.getCurrentPosition(loadedCoords, failedCoords);\n }\n\n if (!navigator.geolocation) {\n failedCoords();\n }\n\n function getQueryString() {\n if (!queryCords && isLoading === false) {\n getLocation();\n } else {\n callback(queryCords);\n }\n }\n\n getQueryString();\n }\n\n function distanceBtnHandler(e) {\n e.preventDefault();\n var url = e.target.href;\n getCoords(function (c) {\n url = '' + url + c;\n window.location.href = url;\n });\n //sortHolder.classList.remove(sortHolder.classList.item(0));\n }\n\n function initializeSortBtnListeners() {\n var distanceBtn = document.querySelector('a[data-sort=\"distance\"]');\n if (!distanceBtn) return;\n distanceBtn.addEventListener('click', distanceBtnHandler);\n\n var mobileSortDropDown = document.querySelector('[rel=\"js-sortDropDown\"]');\n\n mobileSortDropDown.addEventListener('click', function (e) {\n if (mobileSortDropDown.classList.contains('active')) {\n mobileSortDropDown.classList.remove('active');\n } else {\n mobileSortDropDown.classList.add('active');\n }\n });\n }\n\n function intializeLoader() {\n var firstLoadUrl = cardsHolder.getAttribute('data-url');\n var allLoadUrl = cardsHolder.getAttribute('data-url-all');\n if (!firstLoadUrl) {\n console.error('No url on container to load');\n return;\n }\n\n loader.init(getLocations, firstLoadUrl, allLoadUrl);\n }\n\n (function Init() {\n intializeLoader();\n initializeSortBtnListeners();\n })();\n\n})();"]}