yeswiki icon indicating copy to clipboard operation
yeswiki copied to clipboard

Inputs conflict with MapField autocompletion and map rendering

Open VeveQNV opened this issue 2 years ago • 6 comments

Bug / Bogue

When there is several MapField on a page (ex : 2 creation/update forms with geolocation rendered on the same page ), the MapField doesn't take into account the form to which it is belonging and update all the inputs he founds with the required attribute name. Ex : autocompletion or rendering of the map, fills or renders all the associated fields (bf_ville, bf_latitude, osmmap, ...) on the page.

Solution : add a unique identifier to the form and refactor MapField so he select the inputs belonging to his form.

Note 1 : I correct this bug on my localhost. I added an attribute uid to the form and updated MapField.php. Note 2 : I recently refactored all the geolocation mechanisms in order to enhance the geolocation and autocompletion mechanisms (multiple postal code per cities, accent and case insensitive, ...). It works fine and it extends the functionnality : autocompletion of county, state and country. Rendering of shapes on the map (contours of county, etc...) The behaviour is transparent with the previous one and it ensures retro compatibility. Il will commit and propose these change soon.

VeveQNV avatar Aug 23 '22 14:08 VeveQNV

Hello @VeveQNV ,

I am not sure that the described bug is a bug because it is not waited in doryphore 4.2.x that several MapField are possible in the same form see #828 .

I transform the current issue with labels concertation not urgent because #828 need to be solved in the core .

Maybe the current Issue is a duplicate of #828 so I propose to close the current one and keep the older one

J9rem avatar Aug 25 '22 09:08 J9rem

Bonjour @J9rem,

Il y a confusion : il ne s'agit pas d'avoir plusieurs champs map dans un formulaire.

Il s'agit d'avoir plusieurs formulaires contenant un champ map sur une meme page.

Il s'agit bel et bien d'un bug que vous pouvez reproduire en créant une page contenant l'édition de plusieurs formulaires contenant une map :

L'autocompletion mettra à jour les champs indépendamment du formulaire.

Je pense qu'il y a d'autres impacts.

Le 25/08/2022 à 11:27, Jérémy Dufraisse a écrit :

Hello @VeveQNV https://github.com/VeveQNV ,

I am not sure that the described bug is a bug because it is not waited in |doryphore 4.2.x| that several |MapField| are possible in the same form see #828 https://github.com/YesWiki/yeswiki/issues/828 .

I transform the current issue with labels |concertation| |not urgent| because #828 https://github.com/YesWiki/yeswiki/issues/828 need to be solved in the core .

Maybe the current Issue is a duplicate of #828 https://github.com/YesWiki/yeswiki/issues/828 so I propose to close the current one and keep the older one

— Reply to this email directly, view it on GitHub https://github.com/YesWiki/yeswiki/issues/992#issuecomment-1227013849, or unsubscribe https://github.com/notifications/unsubscribe-auth/AKLWGR7LNGG2X3GHT7MKZZTV244BZANCNFSM57LVZY4Q. You are receiving this because you were mentioned.Message ID: @.***>

VeveQNV avatar Aug 25 '22 10:08 VeveQNV

OK thanks for details.

Indeed, currently, YesWiki is not done to have several forms on same page. So the trouble is that we could work on be able to have several forms on same page.

Because searching to fix fields by fields will be complex. I keep the labels. And I invite to change the title with something like "Allow several bazar forms on same page" =>

  • first step, be sure that MapField javascript catch only its form

J9rem avatar Aug 25 '22 14:08 J9rem

Mais @VeveQNV je me rends compte que mon précédent message peut porter à confusion. Je reformule.

Merci d'avoir trouvé le souci. Effectivement, la PR #828 concerne la presence de plusieurs MapField dans un même formulaire Le souci que tu amènes est la presence d'au moins un MapField dans chaque formulaire sur une même page.

Comme YesWiki n'a pas été pensé par défaut pour afficher plusieurs formulaires sur la même page, il ne me semble pas prioritaire de gérer ces cas particuliers (mais ceci est mon avis).

Les pistes pour résoudre le souci :

  • retrouver le code javascript qui s'occupe de mettre à jour la localisation
  • s'assurer que ce code attrape bien la carte qui concerne son formulaire (et son champ) plutôt que faire une recherche globale du MapField (qui trouvera alors le premier disponible)

a priori, résoudre le souci que tu amènes est une première brique pour résoudre #868.

a voir qui aura le temps de s'y pencher dessus

J9rem avatar Aug 25 '22 16:08 J9rem

@J9rem J'ai revu la partie geolocalisation (autocompletion, affichage des cartes en mode édition).

Cela améliore notamment l'autocomplétion : accent et case insensitive, ..

le comportement de la carte est identique avec des fonctionnalités supplémentaires notamment l'affiche des polygones.

Et j'ai traité le probleme des forms multiples en rajoutant un uid aux forms afin que MapField puisse générer le code javascript qui va chercher dans le bon form.

Pour la #868, il me semble que le probleme principal est qu'on ne peut pas spécifier le nom des champs utilisés (bf_adresse, ...).

Comme cela fait beaucoup de champs : adresse, codepostal, ville, departement, région, pays et qu'il faut pouvoir spécifier le nom du champ ainsi que si on veut qu'il soit autocompléter,

je propose qu'on renomme les textbox du type "Nom du champ pour l'autocompletion de la ville" par "nom du champ pour la ville, autocompléter"

Et le format à l'intérieur des champs est ", <à autocompléter oui/non>"

On peut facilement savoir si on est sur une ancienne spec en checkant l'existence de 2 parametres dans l'editbox.

Dans le cas ou le champ est vide on considère qu'il n'y a pas autocomplétion et on utiliser les anciens nom de champs : bf_adresse notamment

C'est la solution la plus simple et qui reste relativement facile à faire sans tous modifier.

Le 25/08/2022 à 18:05, Jérémy Dufraisse a écrit :

/Mais @VeveQNV https://github.com/VeveQNV je me rends compte que mon précédent message peut porter à confusion. Je reformule./

Merci d'avoir trouvé le souci. Effectivement, la PR #828 https://github.com/YesWiki/yeswiki/issues/828 concerne la presence de plusieurs |MapField| dans un même formulaire Le souci que tu amènes est la presence d'au moins un |MapField| dans chaque formulaire sur une même page.

Comme YesWiki n'a pas été pensé par défaut pour afficher plusieurs formulaires sur la même page, il ne me semble pas prioritaire de gérer ces cas particuliers (mais ceci est mon avis).

Les pistes pour résoudre le souci :

  • retrouver le code javascript qui s'occupe de mettre à jour la localisation
  • s'assurer que ce code attrape bien la carte qui concerne son formulaire (et son champ) plutôt que faire une recherche globale du MapField (qui trouvera alors le premier disponible)

a priori, résoudre le souci que tu amènes est une première brique pour résoudre #868 https://github.com/YesWiki/yeswiki/pull/868.

a voir qui aura le temps de s'y pencher dessus

— Reply to this email directly, view it on GitHub https://github.com/YesWiki/yeswiki/issues/992#issuecomment-1227474459, or unsubscribe https://github.com/notifications/unsubscribe-auth/AKLWGR4ZFQFUM4T4SD47Q73V26KWNANCNFSM57LVZY4Q. You are receiving this because you were mentioned.Message ID: @.***>

VeveQNV avatar Aug 25 '22 18:08 VeveQNV

@J9rem Je précise que j'ai eu ce soucis non pas parce que j'avais 2 formulaires YesWiki sur 1 seul page,

mais parce que j'avais 2 inputs nommées bf_latitude (, bf_ville, etc...) dans 2 forms HTML différents (dont celui de MapField) :

MapField mettait à jour tous les champs de ma page indépendamment de si c'était son champ ou nom.

J'ai donc rajouté un uid lors de la création des formulaires et modifié MapField afin qu'il n'utilise que les sens, ce qui a permis de résoudre mon probleme.

Je ne sais pas si tu as eu vents de nos échanges avec Florian : j'ai rajouté des champs pour l'autocomplétion du département, de la région et du pays.

MapField utilise l'extension geolocation qui traite notamment les problèmes liés à l'autocomplétion (sensible aux accents, à la casse etc.., pas de prise en compte de plusieurs code postaux par ville, etc...)

geolocation s'occupe aussi de l'affichage de carte pour MapField (elle ne s'occupe pas de l'affichage de la liste en mode carto).

elle gère également l'affichage des contours de zone fournis par nominatim.

Le 25/08/2022 à 18:05, Jérémy Dufraisse a écrit :

/Mais @VeveQNV https://github.com/VeveQNV je me rends compte que mon précédent message peut porter à confusion. Je reformule./

Merci d'avoir trouvé le souci. Effectivement, la PR #828 https://github.com/YesWiki/yeswiki/issues/828 concerne la presence de plusieurs |MapField| dans un même formulaire Le souci que tu amènes est la presence d'au moins un |MapField| dans chaque formulaire sur une même page.

Comme YesWiki n'a pas été pensé par défaut pour afficher plusieurs formulaires sur la même page, il ne me semble pas prioritaire de gérer ces cas particuliers (mais ceci est mon avis).

Les pistes pour résoudre le souci :

  • retrouver le code javascript qui s'occupe de mettre à jour la localisation
  • s'assurer que ce code attrape bien la carte qui concerne son formulaire (et son champ) plutôt que faire une recherche globale du MapField (qui trouvera alors le premier disponible)

a priori, résoudre le souci que tu amènes est une première brique pour résoudre #868 https://github.com/YesWiki/yeswiki/pull/868.

a voir qui aura le temps de s'y pencher dessus

— Reply to this email directly, view it on GitHub https://github.com/YesWiki/yeswiki/issues/992#issuecomment-1227474459, or unsubscribe https://github.com/notifications/unsubscribe-auth/AKLWGR4ZFQFUM4T4SD47Q73V26KWNANCNFSM57LVZY4Q. You are receiving this because you were mentioned.Message ID: @.***>

VeveQNV avatar Aug 25 '22 19:08 VeveQNV

@VeveQNV j'a pas lu tous les (long) échanges, est ce que tu peux me dire si il y a toujours un bug? si oui merci de réouvrir le ticket, en reformulant/synthétisant :)

seballot avatar Dec 20 '23 05:12 seballot

Je ne sais pas où ca en est dans la version en cours.

en résumé, et de mémoire, il y a un bout de code javascript qui accède au mapfield sans identifiant afin de le mettre à jour.

S'il y a plusieurs mapfield tous les mapfields sont mis à jour.

D'après Jérémy ce n'est pas un bug puisqu'il n'y est pas censé avoir plusieurs mapfield dans une meme page.

Pour les besoins de mon appli, j'ai modifié la création des formulaires afin de rajouter un identifiant et j'indique cet id dans le code javascript pour le mettre à jour exclusivement.

Le 20/12/2023 à 06:18, Sebastian Castro a écrit :

@VeveQNV https://github.com/VeveQNV j'a pas lu tous les (long) échanges, est ce que tu peux me dire si il y a toujours un bug? si oui merci de réouvrir le ticket, en reformulant/synthétisant :)

— Reply to this email directly, view it on GitHub https://github.com/YesWiki/yeswiki/issues/992#issuecomment-1863869254, or unsubscribe https://github.com/notifications/unsubscribe-auth/AKLWGR2ZYXNMGZFYUC42KE3YKJYMHAVCNFSM57LVZY42U5DIOJSWCZC7NNSXTN2JONZXKZKDN5WW2ZLOOQ5TCOBWGM4DMOJSGU2A. You are receiving this because you were mentioned.Message ID: @.***>

--------------yL8Ycd3j2SVBQFnc6ptiAUcM Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: 8bit

Je ne sais pas où ca en est dans la version en cours.

en résumé, et de mémoire, il y a un bout de code javascript qui accède au mapfield sans identifiant afin de le mettre à jour.

S'il y a plusieurs mapfield tous les mapfields sont mis à jour.

D'après Jérémy ce n'est pas un bug puisqu'il n'y est pas censé avoir plusieurs mapfield dans une meme page.

Pour les besoins de mon appli, j'ai modifié la création des formulaires afin de rajouter un identifiant et j'indique cet id dans le code javascript pour le mettre à jour exclusivement.



Le 20/12/2023 à 06:18, Sebastian Castro a écrit :

j'a pas lu tous les (long) échanges, est ce que tu peux me dire si il y a toujours un bug? si oui merci de réouvrir le ticket, en reformulant/synthétisant :)


Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you were mentioned.Message ID: <YesWiki/yeswiki/issues/992/1863869254@github.com>

--------------yL8Ycd3j2SVBQFnc6ptiAUcM--

VeveQNV avatar Dec 20 '23 11:12 VeveQNV

a priori l'issue https://github.com/YesWiki/yeswiki/issues/828 permet de laisser une trace sur le besoin d'avoir plusieurs champs map dans un même formulaire et donc il n'y aurait pas besoin de re-ouvrir la présente Issue

J9rem avatar Dec 20 '23 11:12 J9rem