Projet

Général

Profil

Development #88205

synchro carte / autocomplétion adresse

Ajouté par Frédéric Péters il y a environ 2 mois. Mis à jour il y a environ un mois.

Statut:
Solution déployée
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
14 mars 2024
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Non
Planning:
Non

Description

De #88168, il apparait nécessaire désormais de configurer un préremplissage "géolocalisation" sur le champ avec l'autocomplétion.

Ça n'était pas nécessaire "avant", la régression vient de l'affaire des évènements javascript, on a

1/ des champs prêts à réagir

$('div[data-geolocation]').on('change', 'input[type=text], textarea, select', function(event) {

2/ une sélection d'adresse qui amène les champs décomposés (numéro, rue, code postal, commune) à être remplis :

      $input_widget.val(element_value)
      $input_widget.each((idx, elt) => elt.dispatchEvent(new Event('change')))

Précédemment on faisait

      $input_widget.val(element_value).trigger('change');

et ça faisait que le 1/ se déclenchait, et ça amenait la synchro de la carte.

Avec la modification sur les évènements (#78997), l'évènement ne déclenche plus le 1/, et il n'y plus de synchro de la carte.

Je restaure un comportement correct en envoyant à nouveau l'évènement via jquery (et en gardant l'autre) :

--- a/wcs/qommon/static/js/qommon.geolocation.js
+++ b/wcs/qommon/static/js/qommon.geolocation.js
@@ -16,7 +16,7 @@ function geoloc_prefill(element_type, element_values, widget_name=null)
       continue;
     }
     if ($input_widget.length) {
-      $input_widget.val(element_value)
+      $input_widget.val(element_value).trigger('change')
       $input_widget.each((idx, elt) => elt.dispatchEvent(new Event('change')))
       found = true;
     } else if ($text_widget.length) {
@@ -204,7 +204,7 @@ $(function() {
     if ($form.length == 0) return;  // probably a geolocation map in sidebar
     $form[0].wait_for_changes = false;
     if (! $map.data('address-sync')) return;
-    $('div[data-geolocation]').on('change', 'input[type=text], textarea, select', function(event) {
+    $('div[data-geolocation]').on('change', 'input[type=text], textarea, select', function(event) {
       if ($('.wcs-manual-address:checked').length && $(this).parents('.template-address').length == 0) {
         // do not sync address and map is the address is being entered manually
         // as it probably means the address isn't known and reverse/geocoding

mais ça ne me semble pas normal de devoir faire ça ainsi.

Révisions associées

Révision cf0ee0ca (diff)
Ajouté par Corentin Séchet il y a environ un mois

js: fix map and address synchronization (#88205)

Historique

#1

Mis à jour par Robot Gitea il y a environ un mois

  • Statut changé de Nouveau à Solution proposée

Corentin Sechet (csechet) a ouvert une pull request sur Gitea concernant cette demande :

#2

Mis à jour par Robot Gitea il y a environ un mois

  • Statut changé de Solution proposée à Solution validée

Frédéric Péters (fpeters) a approuvé une pull request sur Gitea concernant cette demande :

#3

Mis à jour par Robot Gitea il y a environ un mois

  • Statut changé de Solution validée à Résolu (à déployer)

Corentin Sechet (csechet) a mergé une pull request sur Gitea concernant cette demande :

#4

Mis à jour par Transition automatique il y a environ un mois

  • Statut changé de Résolu (à déployer) à Solution déployée
#5

Mis à jour par Emmanuel Cazenave il y a environ un mois

Est-ce que le déploiement de ce patch rend la remarque de Fred dans #88168#note-1 caduque ?

Frédéric Péters a écrit :

J'ai ajouté l'info qui manquait à la documentation : dans l’onglet « Avancé », configurer le préremplissage avec « géolocalisation » et « identifiant d’adresse ».

#6

Mis à jour par Emmanuel Cazenave il y a environ un mois

| J'ai ajouté l'info qui manquait à la documentation : dans l’onglet « Avancé », configurer le préremplissage avec « géolocalisation » et « identifiant d’adresse ».

Reste utile pour que le champ adresse en autocomplétion soit bien raccord avec un point placé manuellement sur la carte (sinon les champs rue/numéro/etc se mettent à jour mais pas le champ en autocomplétion).

Bref tout est bien raccord comme ça je ne touche pas à la doc.

Formats disponibles : Atom PDF