{"version":3,"sources":["Scripts/Forms/address-picker.js"],"names":["$","fn","extend","fwAddressPicker","t","geocoder","that","this","initElements","each","p","v","mapObj","map","undefined","marker","htmlLat","htmlLng","getPosition","value","lat","Number","parseFloat","lng","setPosition","latlng","updateField","fieldName","data","document","getElementById","getFieldValue","fieldCounty","dataset","fieldMunicipality","fieldCity","fieldPostalCode","fieldAddress1","$feedbackElm","idFeedback","fieldLat","fieldLng","elem","google","maps","Geocoder","Map","center","LatLng","defaultCenter","zoom","startZoom","updateMarkerPosition","$address1","$postalCode","checkGeoLookup","val","address","clearAlert","geocode","componentRestrictions","country","results","status","updateMapWithGeoCodeResult","setAlert","geocodeAddress","on","event","addListener","latLng","location","geocodePosition","initGoogleMap","Marker","position","draggable","result","geometry","administrative_area_level_1","administrative_area_level_2","postal_code","postal_town","route","street_number","formatted_address","address_components","i","types","j","type","short_name","long_name","convertAddress","console","log","toString","toUpperCase","setCenter","panTo","setZoom","$elm","text","attr","addClass","html","removeClass","getScript","mapApiKey"],"mappings":"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","file":"form.min.js","sourcesContent":["/* global google, $ */\r\n'use strict'\r\n\r\n$.fn.extend({\r\n fwAddressPicker: function (t) {\r\n var geocoder\r\n var that = this\r\n if (!(typeof google === 'object' && typeof google.maps === 'object')) {\r\n $.getScript('https://maps.googleapis.com/maps/api/js?language=no&key=' + t.mapApiKey + '&libraries=places', function () {\r\n initElements()\r\n // geocodeAddress('Stenklevveien 6, 4846 Arendal, NO', mapObj)\r\n })\r\n } else {\r\n initElements()\r\n }\r\n\r\n function initElements () {\r\n $.each(that, function (p, v) {\r\n var mapObj = {\r\n map: undefined,\r\n marker: false,\r\n htmlLat: undefined,\r\n htmlLng: undefined,\r\n getPosition: function () {\r\n if (this.htmlLat.value && this.htmlLng.value) {\r\n return { lat: Number.parseFloat(this.htmlLat.value), lng: Number.parseFloat(this.htmlLng.value) }\r\n } else {\r\n return undefined\r\n }\r\n },\r\n setPosition: function (latlng) {\r\n this.htmlLat.value = latlng.lat()\r\n this.htmlLng.value = latlng.lng()\r\n },\r\n updateField: function (fieldName, data) {\r\n document.getElementById(fieldName).value = data\r\n },\r\n getFieldValue: function (fieldName) {\r\n return document.getElementById(fieldName).value\r\n },\r\n fieldCounty: v.dataset.fieldCounty,\r\n fieldMunicipality: v.dataset.fieldMunicipality,\r\n fieldCity: v.dataset.fieldCity,\r\n fieldPostalCode: v.dataset.fieldPostalCode,\r\n fieldAddress1: v.dataset.fieldAddress1,\r\n $feedbackElm: $('#' + v.dataset.idFeedback)\r\n }\r\n\r\n mapObj.htmlLat = document.getElementById(v.dataset.fieldLat)\r\n mapObj.htmlLng = document.getElementById(v.dataset.fieldLng)\r\n\r\n initGoogleMap(v, mapObj)\r\n })\r\n }\r\n\r\n function initGoogleMap (elem, mapObj) {\r\n if (!geocoder) {\r\n geocoder = new google.maps.Geocoder()\r\n }\r\n\r\n mapObj.map = new google.maps.Map(elem, {\r\n center: new google.maps.LatLng(mapObj.getPosition() || t.defaultCenter), // Default initial location\r\n zoom: t.startZoom\r\n })\r\n\r\n // Initial marker position (saved or default)\r\n if (mapObj.getPosition()) {\r\n updateMarkerPosition(mapObj)\r\n }\r\n var $address1 = $('#' + mapObj.fieldAddress1)\r\n var $postalCode = $('#' + mapObj.fieldPostalCode)\r\n\r\n $address1.on('change', function () {\r\n checkGeoLookup()\r\n })\r\n\r\n $postalCode.on('change', function () {\r\n checkGeoLookup()\r\n })\r\n\r\n function checkGeoLookup () {\r\n if ($address1.val() && $postalCode.val()) {\r\n geocodeAddress($address1.val() + ', ' + $postalCode.val(), mapObj)\r\n }\r\n }\r\n\r\n google.maps.event.addListener(mapObj.map, 'click', function (event) {\r\n mapObj.setPosition(event.latLng)\r\n if (!mapObj.getFieldValue(mapObj.fieldCounty) || !mapObj.getFieldValue(mapObj.fieldMunicipality)) {\r\n geocodePosition(mapObj.getPosition(), mapObj)\r\n } else {\r\n updateMarkerPosition(mapObj)\r\n }\r\n })\r\n\r\n return mapObj\r\n }\r\n\r\n function updateMarkerPosition (mapObj) {\r\n if (mapObj.marker === false) {\r\n mapObj.marker = new google.maps.Marker({\r\n position: mapObj.getPosition(),\r\n map: mapObj.map,\r\n draggable: true\r\n })\r\n\r\n google.maps.event.addListener(mapObj.marker, 'dragend', function (event) {\r\n // Get the Current position, where the pointer was dropped\r\n mapObj.setPosition(mapObj.marker.getPosition())\r\n\r\n updateMarkerPosition(mapObj)\r\n })\r\n } else {\r\n mapObj.marker.setPosition(mapObj.getPosition())\r\n }\r\n return mapObj\r\n }\r\n\r\n function geocodeAddress (address, mapObj) {\r\n clearAlert(mapObj.$feedbackElm)\r\n\r\n geocoder.geocode({\r\n address: address,\r\n componentRestrictions: {\r\n country: 'NO'\r\n }\r\n }, function (results, status) {\r\n if (status === 'OK') {\r\n updateMapWithGeoCodeResult(mapObj, results[0])\r\n } else {\r\n setAlert(mapObj.$feedbackElm, 'Vi kan ikke finne adressen du har oppgitt. Sjekk at den stemmer, eller trykk i kartet for å sett posisjon manuelt.')\r\n }\r\n })\r\n }\r\n\r\n function geocodePosition (location, mapObj) {\r\n clearAlert(mapObj.$feedbackElm)\r\n\r\n geocoder.geocode({\r\n location: location\r\n }, function (results, status) {\r\n if (status === 'OK') {\r\n updateMapWithGeoCodeResult(mapObj, results[0])\r\n } else {\r\n setAlert(mapObj.$feedbackElm, 'Vi fant ingen adresse informasjon for punktet du har valgt')\r\n }\r\n })\r\n }\r\n\r\n function updateMapWithGeoCodeResult (mapObj, result) {\r\n mapObj.setPosition(result.geometry.location)\r\n var address = convertAddress(result)\r\n console.log(address)\r\n mapObj.updateField(mapObj.fieldCounty, address.administrative_area_level_1)\r\n mapObj.updateField(mapObj.fieldMunicipality, address.administrative_area_level_2.toString().toUpperCase())\r\n mapObj.updateField(mapObj.fieldCity, address.postal_town.toString().toUpperCase())\r\n\r\n if (!mapObj.getFieldValue(mapObj.fieldPostalCode)) {\r\n mapObj.updateField(mapObj.fieldPostalCode, address.postal_code)\r\n }\r\n\r\n if (!mapObj.getFieldValue(mapObj.fieldAddress1)) {\r\n mapObj.updateField(mapObj.fieldAddress1, address.route + ' ' + address.street_number)\r\n }\r\n // Update map\r\n mapObj.map.setCenter(result.geometry.location)\r\n mapObj.map.panTo(result.geometry.location)\r\n mapObj.map.setZoom(17)\r\n\r\n // Place a marker in the coordinates\r\n updateMarkerPosition(mapObj)\r\n }\r\n\r\n function setAlert ($elm, text) {\r\n $elm.attr('role', 'alert')\r\n $elm.addClass('alert alert-danger mb-2')\r\n $elm.html(text)\r\n }\r\n\r\n function clearAlert ($elm) {\r\n $elm.html('')\r\n $elm.removeClass()\r\n $elm.attr('role', '')\r\n }\r\n\r\n function convertAddress (result) {\r\n var data = []\r\n data.country = ''\r\n data.administrative_area_level_1 = ''\r\n data.administrative_area_level_2 = ''\r\n data.postal_code = ''\r\n data.postal_town = ''\r\n data.route = ''\r\n data.street_number = ''\r\n data.formatted_address = result.formatted_address\r\n\r\n $(result.address_components).each(function (i, address) {\r\n $(address.types).each(function (j, type) {\r\n if (type === 'country') {\r\n data[type] = address.short_name\r\n } else {\r\n data[type] = address.long_name\r\n }\r\n })\r\n })\r\n return data\r\n }\r\n }\r\n})\r\n"]}