Comment obliger l'utilisateur à sélectionner une commune récupérée via API par fieldCompletion

Tags: #<Tag:0x00007f80f55ccd58>

Bonjour,

dans un grand nombre de nos applications, les utilisateurs doivent saisir une commune.
Ce que nous avons mis en place depuis toujours :

  • un attribut texte
  • hook fieldcompletion qui fait un appel de websservice pour afficher la liste des communes issues de notre référentiel

notre pb est le suivant : de nombreux utilisateurs ne sélectionnent pas la commune dans la liste affichée et font de la saisie libre.

comment les forcer à attendre l’affichage et sélectionner une commune dans la liste ?

On parle d’ajouter une intégrité des données sur des champs libres / avec assistance de saisie par complétion avec des données d’un autre référentiel (on aurait pu aussi implémenter ce besoin via un Datamap).

On peut imaginer passer les champs liés (la commune du seul code postal saisissable) en lecture seule en front. Et mettre un contrôle au validate qui ne passera pas si le champ (commune) est vide = la personne n’a pas sélectionné un item pour le valoriser.

Mais ça ne corrigera pas la cohérence si la personne sélectionne une commune, puis rechange le code postal sans resélectionner une autre commune valide…

Il faut donc obligatoirement que le validate refasse une appel à votre web-service en back pour vérifier la cohérence des données (revaloriser les champs liés ou les remettre à vide si la commune n’existe pas) et retourner un message utilisateur.

Il y aurait peut être un axe d’amélioration de la complétion (pas que dans ce cas là) = automatiquement sélectionner le record proposé quand il n’y en a qu’un et qu’on tape [enter] ou [tab]

C’est vrai que c’est troublant que quand on a tapé un truc qui identifie un seul record on soit quand même obligé de cliquer à la souris pour le sélectionner.

nous n’autorisons pas à sélectionner le code postal mais uniquement la commune. Le code postal est alimenté avec la sélection de la commune

Ok donc c’est le même raisonnement mais avec le code postal en lecture et la commune en saisie.
Il faut à minima refaire l’appel de service + contrôle d’intégrité dans le postValidate des 2 champs.

Ca marche comme ça déjà, le “single row” est bien géré
ou alors il y a eu une régression quelque part.

Oui effectivement ça marche désormais avec enter et tab et sur le clic ailleurs. Parfait !
Désolé

Ca marche peut être pas sur toutes les complétions, peut être juste les FK. Je vais vérifier.

effectivement, ça ne fonctionne pas sur les complétions.
je n’ai pas d’objet lié.

Ok j’ai vérifié l’autoselect en completion est activé que sur une FK ou un Datamap.

On va ajouter cette option en completion de champ libre, je ne sais plus pourquoi ça n’avait pas été fait, mais je vois pas de raison de ne pas le faire, historiquement on ne voulait peut être assurer une compatibilité ascendante qui ne le faisait pas par défaut.

bien.
et du coup, je fais comment pour obliger la sélection sur la liste quand il y en a plusieurs ?