Ce widget permet d’afficher un champ de recherche avec auto-complétion ayant pour cible un varset ou un dictionnaire (ce dernier point est à vérifier).
Hérite de WidgetField.
Fonction
Rendu
Obsolescence
Il ne faut pas l’utiliser. Utiliser plutôt WidgetAutocomplete
Utilisation
Le widget se base sur un dataquery dédié à la recherche, qui contient deux sections:
- Une section utile au widget, les principaux éléments qu’elle contient sont les champs pour l’affichage des résultats et l’algorithme de recherche.
- Une autre section pour décrire les données qui seront envoyées au dataset cible.
Lorsque l’utilisateur entre une chaine de caractère, celle-ci est transmise au serveur en tant que paramètre du dataquery dédié à la recherche, comme pour un rafraîchissmenet standard de dataset. Le contenu du dataset renvoyé par le serveur est utilisé pour afficher les résultats de la recherche, attention le code actuel ne met pas à jour le dataset, les données sont directement interprétéespar le widget. La sélection d’une réponse dans toutes celles qui ont été renvoyées provoque l’envoi des données relatives à la réponse dans le dataset cible, en mode insertion (insert), ou en mode mise à jour (replace).
Il est également possible de paramétrer le widget pour que si aucun résultat ne convient, on puisse ajouter la chaine de caractère saisie pour la recherche dans le dataset cible (mode quick add).
Exemple:
Un varset module, et un varset intervention. Une intervention est liée à un module, l’objectif est que l’utilisateur sélectionne le module pour lequel il souhaite saisir son intervention (le varset intervention dispose d’une clé étrangère sur le varset module, nommée id_module).
- Dataset intervention, il s’agit du dataset qui devra être mis à jour, plus particulièrement la variable id_module
- Dataset search_module, dataset utilisé pour la recherche
Mise en place
Cette partie explique comment mettre en place un widget search en se basant sur l’exemlple ci-dessus
Varsets
Varset “Module”
Varset “Intervention”
Formulaire
Dataquery cible
Dataquery utilisé pour la recherche
La première section est constituée
- Du noeud match, il faut mettre ici la requête qui sert à faire la recherche. Coté serveur, la chaine de caractère est découpée en mot, la requête sql décrite est répétée autant de fois qu’il y a de mots, avec utilisation à chaque fois du mot correspondant. Voir la méthode _getSQLExpr de la class Core_Library_Resource_XML_DataQuery.
- Des noeuds utilisés pour la présentation, il s’agit de colonnes qui doivent être nommées (alias): head, body et footer. La colonne body est obligatoire, les deux autres sont facultatives, elles servent à mettre en forme les réponses.
- Un noeud de type colonne nommé field_value, le contenu de cette variable sera mis dans le champ de recherche au chargement de la page, et après la sélection d’une réponse. Il est optionnel.
- D’une condition, utilisée pour initialiser le contenu du champ de recherche au chargement de la page. On fournit un paramètre pour que le champ se mette à jour dynamiquement en cas de changements sur le dataset
intervention
.
Widget search: la balise
- search_param : chaine saisie par l’utilisateur qui sera envoyé au dataquery de recherche pour exécuter la requête
- search_dataset : identifiant du dataquery de recherche
- target_dataset : identifiant du dataquery cible de la recherche
Attributs
Les attributs nécessaires au bon fonctionnement du widget sont signalés par un astérisque.
Ce widget hérite de fonctionnalités issues d’un autre widget. Consultez la documentation dédiée au WidgetField pour vérifier si d’autres attributs sont disponibles.
search_data_set*
Identifiant du dataquery de recherche
-
Version : >=2.15
-
Valeurs possibles : String
search_param*
Chaine saisie par l’utilisateur qui sera envoyé au dataquery de recherche pour exécuter la requête
-
Version : >=2.15
-
Valeurs possibles : String
target_data_set*
Identifiant du dataquery cible de la recherche
-
Version : >=2.15
-
Valeurs possibles : String
Options
Les options nécessaires au bon fonctionnement du widget sont signalées par un astérisque.
Ce widget hérite de fonctionnalités issues d’un autre widget. Consultez la documentation dédiée au WidgetField pour vérifier si d’autres options sont disponibles.
action_on_target
Met à jour l’enregistrement courant (“replace”) ou ajoute un nouvel enregistrement (“insert”)
-
Version : >=2.15
-
Valeurs possibles : replace,insert
-
Valeur par défaut : replace
delete_button
Permet de rajouter un bouton pour supprimer la valeur du widgetsearch
-
Version : >=2.26
-
Valeurs possibles : Boolean
enable_quick_add
Ne fonctionne que si l’option “action_on_target” vaut “insert”, requiert l’option “quick_add_key”. Cette option permet d’ajouter la chaine de caractère utilisée pour la recherche dans le dataset cible. Cela revient à dire que l’élément recherché n’existe pas en base, et qu’on souhaite l’ajouter.
-
Version : >=2.15
-
Valeurs possibles : Boolean
filter_field
Permet de filtrer les résultats pour ne pas proposer ce qui existe déjà dans le target_dataset. Si le widgetsearch sert à ajouter des rows dans le target_dataset, le champ défini dans cette option servira de clé pour masquer les résultats “doublons”.
-
Version : >=2.15
-
Valeurs possibles : String
max_results
Nombre de résultats à afficher dans la réponse
-
Version : >=2.15
-
Valeurs possibles : Integer
-
Valeur par défaut : 5
quick_add_key
Champ dans le dataset cible qui recevra la chaine de caractère entrée pour la recherche.
-
Version : >=2.15
-
Valeurs possibles : String