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
-
+
+
- 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