minor: community addresses implementation with Nominatim

This commit is contained in:
Jean-Baptiste Pasquier 2021-04-14 00:17:03 +02:00
parent f5e7be99c1
commit 1bb70effa5
7 changed files with 58 additions and 7 deletions

View File

@ -183,7 +183,8 @@
"noPermission": "You don't have access to this page", "noPermission": "You don't have access to this page",
"tableHeader1": "Address line 1", "tableHeader1": "Address line 1",
"tableHeader2": "Address line 2", "tableHeader2": "Address line 2",
"buttonDelete": "Delete" "buttonDelete": "Delete",
"buttonAdd": "Add"
} }
}, },
"project": { "project": {

View File

@ -183,7 +183,8 @@
"noPermission": "No tiene permiso", "noPermission": "No tiene permiso",
"tableHeader1": "Dirección línea 1", "tableHeader1": "Dirección línea 1",
"tableHeader2": "Dirección línea 2", "tableHeader2": "Dirección línea 2",
"buttonDelete": "Eliminar" "buttonDelete": "Eliminar",
"buttonAdd": "Añadir"
} }
}, },
"project": { "project": {

View File

@ -181,7 +181,8 @@
"noPermission": "Vous n'avez pas la permission", "noPermission": "Vous n'avez pas la permission",
"tableHeader1": "Adresse ligne 1", "tableHeader1": "Adresse ligne 1",
"tableHeader2": "Adresse ligne 2", "tableHeader2": "Adresse ligne 2",
"buttonDelete": "Effacer" "buttonDelete": "Effacer",
"buttonAdd": "Ajouter"
} }
}, },
"project": { "project": {

View File

@ -0,0 +1,33 @@
/*
Geocoord helper using Nominatim
Usage:
const madrid = await hubl.geocoord('Madrid');
madrid == ["-3.7035825", "40.4167047"]
*/
window.hubl.geocoord = async (address = false) => {
if (address) {
const nominatim = await fetch('https://nominatim.openstreetmap.org/?format=geocodejson&limit=1&q=' + encodeURI(address));
const response = await nominatim.json();
if (response.features[0]) {
const coords = response.features[0].geometry.coordinates;
if (coords[0] && coords[1]) {
return [String(coords[0]), String(coords[1])];
}
} else {
console.error("Address not found");
}
} else {
console.error("Missing address");
}
return ["-47.15", "-123.716667"];
}
window.hubl.geocalc = (element) => {
const editionForm = element.parentElement.parentElement.parentElement.parentElement;
window.hubl.geocoord(editionForm.querySelector('input[name="address_line1"]').value + " " + editionForm.querySelector('input[name="address_line2"]').value).then(coords => {
editionForm.querySelector('input[name="lat"]').value = coords[0];
editionForm.querySelector('input[name="lng"]').value = coords[1];
editionForm.querySelector('input[type="submit"]').click();
});
return false;
}

View File

@ -133,7 +133,7 @@ div.bg-color-white
solid-form.form.table-body.edit-address( solid-form.form.table-body.edit-address(
bind-resources bind-resources
nested-field="addresses" nested-field="addresses"
fields="segment1(address_line1), segment2(address_line2), segment3(deleteButton)" fields="segment1(address_line1), segment2(address_line2), lat, lng, segment3(addButton)"
placeholder-address_line1="" placeholder-address_line1=""
placeholder-address_line2="" placeholder-address_line2=""
@ -145,12 +145,15 @@ div.bg-color-white
class-address_line1="segment full text-small" class-address_line1="segment full text-small"
class-address_line2="segment full text-small" class-address_line2="segment full text-small"
class-lat="hidden"
class-lng="hidden"
widget-community="solid-form-hidden" widget-community="solid-form-hidden"
widget-address_line1="solid-form-placeholder-text" widget-address_line1="solid-form-placeholder-text"
widget-address_line2="solid-form-placeholder-text" widget-address_line2="solid-form-placeholder-text"
widget-lat="solid-form-hidden"
action-deleteButton="" widget-lng="solid-form-hidden"
widget-deleteButton=`hubl-communities-edit-delete-button` widget-addButton=`hubl-communities-edit-add-button`
data-trans="placeholder-address_line1=communities.edit.labelAddressLine1;placeholder-address_line2=communities.edit.labelAddressLine2" data-trans="placeholder-address_line1=communities.edit.labelAddressLine1;placeholder-address_line2=communities.edit.labelAddressLine2"
) )

View File

@ -22,6 +22,7 @@ include widgets/hubl-circle-team-contact.pug
include widgets/hubl-circle-user-admin.pug include widgets/hubl-circle-user-admin.pug
include widgets/hubl-communities-counter-alternate.pug include widgets/hubl-communities-counter-alternate.pug
include widgets/hubl-communities-edit-button.pug include widgets/hubl-communities-edit-button.pug
include widgets/hubl-communities-edit-add-button.pug
include widgets/hubl-communities-edit-email.pug include widgets/hubl-communities-edit-email.pug
include widgets/hubl-communities-edit-website.pug include widgets/hubl-communities-edit-website.pug
include widgets/hubl-communities-logo.pug include widgets/hubl-communities-logo.pug

View File

@ -0,0 +1,11 @@
if componentSet.has('communities') && getRoute('communities')
solid-widget(name='hubl-communities-edit-add-button')
template
div(
class="segment text-xsmall children-link-button children-link-text-bold children-link-text-uppercase children-link-color-secondary bordered"
)
button.form-sub(
data-trans="communities.edit.buttonAdd"
type="button"
onclick="window.hubl.geocalc(this);"
)