{"version":3,"file":"js/containers/locations.js","mappings":"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","sources":["webpack://Worthington/./js/containers/locations.ts"],"sourcesContent":["namespace Worthington.Locations {\r\n let latitude: number = 0;\r\n let longitude: number = 0;\r\n let baseUrl: string = null;\r\n let apiKey: string = null;\r\n\r\n const getCurrentLatitudeLongitude = (callback) => {\r\n let viewAll = (document.getElementById('ViewAll') as HTMLInputElement).value.toLowerCase() === 'true';\r\n\r\n navigator.geolocation.getCurrentPosition(function(position) {\r\n latitude = position.coords.latitude;\r\n longitude = position.coords.longitude;\r\n\r\n if (!viewAll) {\r\n // Get locations based on lat/long\r\n if (callback) callback();\r\n }\r\n });\r\n };\r\n\r\n const getLocations = (callback = null) => {\r\n // Get user selections\r\n let business = (document.getElementById('Business') as HTMLInputElement).value;\r\n let country = (document.getElementById('Country') as HTMLInputElement).value;\r\n let region = (document.getElementById('Region') as HTMLInputElement).value;\r\n let state = (document.getElementById('State') as HTMLInputElement).value;\r\n\r\n // Construct URL based on selections\r\n const url = `${baseUrl}/results?latitude=${latitude}&longitude=${longitude}&business=${business}&country=${country}®ion=${region}&state=${state}`;\r\n\r\n // Load div tag with results\r\n fetch(url)\r\n .then(response => response.text())\r\n .then(data => {\r\n document.getElementById('locationResults').innerHTML = data;\r\n setupFiltering();\r\n if (callback) callback();\r\n });\r\n };\r\n\r\n const setupFiltering = () => {\r\n document.querySelectorAll('.js-dropdown').forEach(item => {\r\n\t\t\titem.addEventListener('change', event => {\r\n\t\t\t\tgetLocations();\r\n\t\t\t});\r\n\t\t});\r\n\r\n // HOLDING ON THE ADDRESS IMPLEMENTATION\r\n // document.getElementById('locationSearch').addEventListener('keyup', (event) => {\r\n // if (event.key === 'Enter') {\r\n // let address = (event.target as HTMLInputElement).value;\r\n\r\n // fetch(`https://maps.googleapis.com/maps/api/geocode/json?address=${address}&key=${apiKey}`)\r\n // .then(response => response.json())\r\n // .then(data => {\r\n // if (data.results) {\r\n // latitude = data.results[0].geometry.location.lat;\r\n // longitude = data.results[0].geometry.location.lng;\r\n\r\n // // Refresh list of locations based on lat/long\r\n // getLocations(() => {\r\n // // Add the address back after refresh\r\n // (document.getElementById('locationSearch') as HTMLInputElement).value = address;\r\n // });\r\n // }\r\n // });\r\n // }\r\n // });\r\n\r\n // Update Maps\r\n setupGoogleMaps();\r\n };\r\n\r\n const setupGoogleMaps = () => {\r\n let mapOptions = {\r\n center: new google.maps.LatLng(30, -25),\r\n zoom: 2,\r\n disableDefaultUI: true,\r\n mapTypeId: google.maps.MapTypeId.ROADMAP\r\n };\r\n\r\n let map = new google.maps.Map(document.getElementById('map'), mapOptions);\r\n let infowindow = new google.maps.InfoWindow();\r\n let bounds = new google.maps.LatLngBounds();\r\n let pinSVGHole = \"M12,11.5A2.5,2.5 0 0,1 9.5,9A2.5,2.5 0 0,1 12,6.5A2.5,2.5 0 0,1 14.5,9A2.5,2.5 0 0,1 12,11.5M12,2A7,7 0 0,0 5,9C5,14.25 12,22 12,22C12,22 19,14.25 19,9A7,7 0 0,0 12,2Z\";\r\n let pinColor = '#81bc00'; // default pin color for corporate\r\n let locations = document.querySelectorAll('.js-location');\r\n let center;\r\n\r\n locations.forEach(item => {\r\n let location = item as HTMLElement;\r\n let locationLat = parseFloat(location.dataset.latitude);\r\n let locationLong = parseFloat(location.dataset.longitude);\r\n let position = new google.maps.LatLng(locationLat, locationLong);\r\n let business = location.dataset.business;\r\n let contentMarker = location.querySelector('.js-map-marker');\r\n\r\n if (business === 'consumerProducts') {\r\n pinColor = '#d29f13';\r\n } else if (business === 'buildingProducts') {\r\n pinColor = \"#0072ce\";\r\n } else if (business === 'sustainableEnergySolutions') {\r\n pinColor = \"#00B2a9\";\r\n } else if (business === 'steelProcessing') {\r\n pinColor = \"#54565b\"; //$gray-dark\r\n } else if (business === 'other') {\r\n pinColor = \"#ba271f\"; //$red\r\n } else if (business === 'globalHeadquarters') {\r\n pinColor = \"#000000\"; //$green\r\n }\r\n\r\n contentMarker.setAttribute(\"fill\", pinColor);\r\n\r\n let markerImage = {\r\n path: pinSVGHole,\r\n anchor: new google.maps.Point(12,17),\r\n fillOpacity: 1,\r\n fillColor: pinColor,\r\n strokeWeight: 2,\r\n strokeColor: \"white\",\r\n scale: 2\r\n };\r\n\r\n let marker = new google.maps.Marker({\r\n position: position,\r\n map: map,\r\n animation: google.maps.Animation.DROP,\r\n icon: markerImage\r\n });\r\n\r\n bounds.extend(position);\r\n center = position;\r\n\r\n google.maps.event.addListener(marker, 'click', (function(marker) {\r\n return function() {\r\n infowindow.setContent(location.innerHTML);\r\n infowindow.open(map, marker);\r\n }\r\n })(marker));\r\n });\r\n\r\n if (locations.length > 1) {\r\n map.fitBounds(bounds);\r\n } else {\r\n map.setCenter(center);\r\n map.setZoom(11);\r\n }\r\n };\r\n\r\n export const init = () => {\r\n\r\n let locationResults = document.getElementById('locationResults');\r\n baseUrl = locationResults.dataset.baseurl;\r\n apiKey = locationResults.dataset.apikey;\r\n\r\n getCurrentLatitudeLongitude(getLocations);\r\n setupFiltering();\r\n setupGoogleMaps();\r\n\t};\r\n}\r\n\r\ndocument.addEventListener(\"DOMContentLoaded\", () => {\r\n\tWorthington.Locations.init();\r\n});\r\n"],"names":["Worthington","Locations","latitude","longitude","baseUrl","apiKey","getLocations","callback","business","document","getElementById","value","country","region","state","fetch","then","response","text","data","innerHTML","setupFiltering","querySelectorAll","forEach","item","addEventListener","event","setupGoogleMaps","center","mapOptions","google","maps","LatLng","zoom","disableDefaultUI","mapTypeId","MapTypeId","ROADMAP","map","Map","infowindow","InfoWindow","bounds","LatLngBounds","pinColor","locations","location","locationLat","parseFloat","dataset","locationLong","position","contentMarker","querySelector","setAttribute","markerImage","path","anchor","Point","fillOpacity","fillColor","strokeWeight","strokeColor","scale","marker","Marker","animation","Animation","DROP","icon","extend","addListener","setContent","open","length","fitBounds","setCenter","setZoom","init","locationResults","baseurl","apikey","viewAll","toLowerCase","navigator","geolocation","getCurrentPosition","coords","getCurrentLatitudeLongitude"],"sourceRoot":""}