diff --git a/src/mainapp/templates/index.html b/src/mainapp/templates/index.html index e201a44..fbf2ba8 100644 --- a/src/mainapp/templates/index.html +++ b/src/mainapp/templates/index.html @@ -223,7 +223,62 @@ Post Code or Street Address - + + +
+ +
@@ -244,11 +299,10 @@
-
+
-
@@ -274,7 +328,27 @@
- confirm +
+
+
+ + +
+
+
+
+ + +
+
+
+
+ + +
+
+
+
diff --git a/src/static/js/mainapp/venues.js b/src/static/js/mainapp/venues.js index 98f6366..0c6adee 100644 --- a/src/static/js/mainapp/venues.js +++ b/src/static/js/mainapp/venues.js @@ -98,15 +98,59 @@ function initAutocomplete() { autocomplete = new google.maps.places.Autocomplete( $("#venueSearch")[0], { + componentRestrictions: { country: "gb" }, fields: ["address_components", "geometry"], types: ["address"], strictBounds: false } ) + + autocomplete.addListener("place_changed", () => { + const place = autocomplete.getPlace(); + + if (!place.geometry || !place.geometry.location) { + alert("couldn't find this place"); + return; + } + + alert(JSON.stringify(place, null, 4)); + fillAddress(place); + }); } window.initAutocomplete = initAutocomplete; +function fillAddressControl(component, types, fieldSelector, component_attr="long_name") { + if (types.some(type => component.types.includes(type))) { + $(fieldSelector).val(component[component_attr]); + } +} + +function fillAddress(place) { + + // Clear the fields first, because sometimes we cant find data to replace them. + $("#venueSearchResults").show(); + $("#venueSearchHelper").hide(); + $("#addressContent input[readonly], #addressContent input[readonly='readonly']").val(""); + + place.address_components.forEach(component => { + fillAddressControl(component, ["street_number"], "#venueStreetNum"); + fillAddressControl(component, ["route"], "#venueStreet"); + fillAddressControl(component, ["postal_town", "locality"], "#venueCity"); + fillAddressControl(component, ["administrative_area_level_2"], "#venueCounty"); + fillAddressControl(component, ["postal_code"], "#venuePost"); + fillAddressControl(component, ["country"], "#venueCountry"); + }); + + $("#venueLat").val(place.geometry.location.lat); + $("#venueLng").val(place.geometry.location.lng); + + // place.geometry.forEach(item => { + // fillAddressControl(item, ["lat"], "#venueLat", "lat"); + // fillAddressControl(item, ["lng"], "#venueLng", "lng"); + // }); +} + $(document).ready(function() { initMap(); }); \ No newline at end of file