Désactiver le fieldcompletion dans la fenêtre de recherche

Bonjour,

j’ai un attribut dont l’auto-completion est à oui : numéro de session.
dans le formulaire de l’objet, il est alimenté avec une liste de données récupérées par API : numéro de session + libellé.
A la sélection d’un élément de la liste alimentée, un script ressource permet d’alimenter les attributs numéro et libellé.

Pour le formulaire, ça fonctionne bien.
Par contre, dans la fenêtre de recherche, ça me pose pb :
le script n’est pas exécuté. à priori, on ne passe pas dans p.form.onload dans Simplicite.UI.hooks. du coup, quand je sélectionne, l’alimentation du numéro ne se fait pas bien et contient numero + libellé. la recherche ne ramène donc rien :
image

Pour remédier au pb, j’ai voulu recupérer le context du hook fieldCompletion de l’objet. Il est toujours égal à null.

pouvez vous me dire comment je peux faire. l’idéal serait que le javascript soit exécuté sur la fenêtre de recherche.

Bonjour Rosanne,

A priori il faut que tu fasses de même dans le hook search.onload pour servir les champs via split de la recherche par completion. Pas sûr que les accesseurs getUIField fonctionnent dans le popup, au pire il faudra directement cibler les inputs du dialogue.

Et il y a aussi la recherche en colonne depuis la liste ? hook list.onload ?

j’ai essayer de le faire dans le hook search.onload mais ça ne fonctionne pas.
effectivement, le getUIField ne fonctionne pas

Sans code difficile de t’aider.

oui surement, il faut adresser les champs via jQuery sur le name des input.

Sinon, désactive la completion sur le champ avant de l’afficher dans le search.beforeload

obj.getField("numSession").completion = false;

Et à remettre à true sur le form si c’est la même instance qui bosse.

ça ne fonctionne pas.
j’ai mis :obj.getField(“numSession”).completion = false; dans p.form.onload pour tester et la completion est toujours active

le beforeload est peut être appelé trop tôt.
En V4, sans code ni tests, je nage dans l’inconnu :wink:

l’autre solution est de ne pas déclencher la recherche dans le hook fieldcompletion.
je pensais m’appuyer sur le context mais il est = null

Le search.beforeload est bien appelé après avoir récupéré les metadata de l’objet.
donc ça devrait passer, je vais essayer de reproduire.

Si le context est null dans le cas d’une recherche, mais pas dans celui du formulaire, tu peux effectivement ne rien faire.

Autre idée, au search.onload, il faut désactiver tous les handlers sur l’input (la completion en positionne pas mal keyup, keydown, input et blur), pour tout retirer :

$("input#numSession", ctn).off();

numSession = nom de ton champ

je viens de vérifier : la valeur de context de fieldcompletion est tout le temps vide

Exact, la couche Ajax n’envoie effectivement jamais le contexte au back.
Ca doit dater du l’ancienne UI V3 / iframe.
Ce serait pratique pour qu’en back on sache dans quel contexte est utilisé la completion.
Il faut que ce soit une ano pour qu’on patch la V4 :wink:

C’est corrigé en 4.0, 5.2+

Le paramètre de contexte du hook fieldCompletion sera valorisé à

  • CONTEXT_UPDATE : champ dans un formulaire ou edit list
  • CONTEXT_SEARCH : popup de recherche ou recherche en colonne

@david A-t-on prévu une date de build/maintenance pour la V4 ?

La 4.0 a été buildée ce matin. Sur un SIM ca se met à jour automatiquement la nuit ou en forçant un sim refresh manuel