La source de donnée utilisée par le Widget Autocomplete
Bulk pour le Widget Autocomplete
Exemple : Recherche au sein d’un varset
Au sein d’un formulaire patient, rechercher un médecin pour stocker son ID dans la fiche patient.
Le varset patient
Le varset médecin
Le formulaire Patient
Redirection vers le formulaire Médecin avec envoi de la chaîne de caractère de recherche
Pour passer la chaîne de caractère de recherche en paramètre dans les liens de redirection, ajouter /nom_du_paramètre/{valeur passée à l’option search_param_name} au lien (voir exemple ci-dessous).
Pour remplir un champ avec ce paramètre dans le formulaire ciblé par le lien de redirection, penser à ajouter l’attribut auto_add_record=”true” au dataquery cible (voir l’article Customs).
Pour récupérer le paramètre dans le formulaire cible, voir l’exemple ci-dessous.
Le lien de redirection : form/frame/get/sid/id du formulaire medecin/nom du parametre/{valeur de l’option search_param_name}
Soit, en suivant l’exemple ci-dessus : “form/frame/get/sid/ogyhrwfwci1544172/nom_med/{recherche_nom_medecin}”
Exemple : Recherche au sein d’un dictionnaire
Au sein d’un formulaire patient, rechercher le nom d’une maladie via un dictionnaire “maladies”.
Le varset patient
Le formulaire Patient
Procédure via Epicraft
Pour une recherche sur un varset
1 - Ajouter une relation 1-N entre le varset cible (qui va récupérer l’information recherchée) et le varset au sein duquel la recherche est effectuée. Pour ce faire, se référer à l’article Comment exploiter une relation 1-N dans des formulaires ?.
2 - Ajouter la variable issue de la relation au dataquery principal.
3 - Ajouter une source de données libre sur la page et y insérer le xml correspondant au dataquery de recherche.
4 - Ajouter un Bulk à la page et lui appliquer une propriété personnalisée incluant le WidgetAutocomplete.
Pour une recherche sur un dictionnaire
1 - Ajouter une source de données libre sur la page et y insérer le xml correspondant au dataquery de recherche.
2 - Ajouter un composant choix avec affichage en Radio Boutons sur la page.
3 - Sélectionner le dictionnaire désiré.
4 - Ajouter une propriété personnalisée de type “form.widget.value.option” sur le Widget afin de surcharger le choix avec un WidgetAutocomplete.
5 - Ajouter une propriété personnalisée de type “form.widget.value.option” sur le Widget pour chacune des options du WidgetAutocomplete.
Le cas particulier d’un formulaire stocké sur disque (incompatiblité avec la balise “search_on”)
La balise search_on est en fait un raccourci pour simplifier l’écriture du dataquery de recherche. Pour reconstruire le dataquery avec une syntaxe compréhensible pour Voozanoo4, nous avons besoin de récupérer des informations dans la partie “layout” du formulaire (par exemple, le nom du champ et du dataset corespondant au WidgetAutocomplete), or, ces informations ne sont pas accessibles à ce moment-là. Il nous faut donc recharger le formulaire pour en extraire les informations nécessaires.
Dans le cas d’un formulaire sur disque, le problème est que l’emplacement du formulaire n’est pas non plus disponible lors de l’exécution du dataquery, ce qui rend impossible l’utilisation de la balise <search_on/>. Dans ce cas de figure, et toujours selon le même exemple, le dataquery de recherche ressemble donc à ceci :
A NOTER
Le WidgetAutocomplete hérite du WidgetField, les attributs et options du WidgetField peuvent donc s’appliquer, à l’exception :
des options on_key_up_refresh, on_key_up_timeout, random_order, n_first_values, n_last_values
de l’attribut size (non appliqué)
Pour être compatible avec le WidgetAutocomplete, l’attribut field n’accepte pas les variables de type primary_key, fkey_varset_ext, fkey_dico_ext, fkey_sys_dico_ext. Si une variable de ce type est attribuée au field, le widget se mettra en erreur (voir WidgetErrors).
Pour effectuer une recherche de type “mot commençant par”, la requête sql pour la condition à appliquer au dataquery de recherche est la suivante : “{med.nom} LIKE CONCAT({recherche_nom_medecin}, ‘%’)”
Si plusieurs WidgetAutocompletes sont présents sur une même page, chaque widget doit avoir son propre dataquery de recherche pour que chacun fonctionne correctement.
Le champ passé à l’option value_field ne doit contenir que des valeurs uniques et non nulles. Dans le cas contraire, le widget ne saura pas retrouver la fiche correspondant à la valeur stockée.
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.
L’attribut size (non appliqué) n’est pas paramétrable pour le WidgetAutocomplete.
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.
search_dataset*
Option obligatoire. Dataset utilisé pour peupler les résultats. Le widget se mettra en ereur si : l’option n’est pas renseignée, si valeur passée à l’option n’est pas une string, si le dataset n’existe pas
Version :
>=2.26
Valeurs possibles :
string
display_field
Champ du dataset qui contient la valeur d’affichage. Ce champ est utilisé pour la valeur affichée dans le champ autocomplete et dans les titres des résultats. Si aucun champ n’est précisé, la valeur affichée sera celle contenue dans value_field. Le widget se mettra en erreur si : la valeur passée à l’option n’est pas une string ou si le field n’existe pas au sein du dataset search_dataset.
Version :
>=2.26
Valeurs possibles :
string
display_field_comp
Champ du dataset qui contient les informations complémentaires à afficher dans les résultats. Le widget se mettra en erreur si : la valeur passée à l’option n’est pas une string ou si le field n’existe pas au sein du dataset search_dataset.
Version :
>=2.26
Valeurs possibles :
string
min_nb_characters
Nombre de caractères à partir duquel des recherches sont lancées. Le widget se mettra en erreur si : la valeur passée à l’option ne correspond pas à un nombre ou si ce nombre est inférieur ou égal à zéro.
Version :
>=2.26
Valeurs possibles :
string représentant un nombre entier
Valeur par défaut :
3
nb_results_show
Nombre de résultats à afficher. Le widget se mettra en erreur si : la valeur passée à l’option ne correspond pas à un nombre ou si ce nombre est inférieur ou égal à zéro.
Version :
>=2.26
Valeurs possibles :
string
Valeur par défaut :
5
redirect
Paramètres des liens de redirection. Le widget se mettra en erreur si : le champ correspondant au WidgetAutocomplete est nécessaire à l’enregistrement du formulaire (soit, dans le varset, <var […] mandatory=”true”/>), si une option redirect_label_n ou redirect_always_show_n a été précisée mais qu’aucun redirect_path_n correspondant n’a été précisé et si n manque à l’une des options groupées redirect.
Version :
null
Valeurs possibles :
string
redirect_always_show_n
Si la valeur est à true, le lien de redirection est proposé que le widget ait des résultats ou non. Si des résultats sont trouvés, le lien sera proposé en fin de liste. Le widget se mettra en erreur si : la valeur passée à l’option ne correspond pas à un booléen (true, false, 0 ou 1).
Version :
>=2.26
Valeurs possibles :
booléen ou string représentant un booléen
redirect_label_n
Libellé de la redirection. Si aucun libellé n’est précisé, ce sera l’url qui sera affichée. Le widget se mettra en erreur si : la valeur passée à l’option n’est pas une string.
Version :
>=2.26
Valeurs possibles :
string
redirect_path_n
Lien de redirection. Le widget se mettra en erreur si : la valeur passée à l’option n’est pas une string.
Version :
>=2.26
Valeurs possibles :
string (lien complet, ex : https://epiconcept.fr, ou module/controleur/action/paramètres)
search_param_name
Nom du paramètre à utiliser dans le dataquery qui retourne les résultats de recherche. Le widget se mettra en erreur si : la valeur passée à l’option n’est pas une string.
Version :
>=2.26
Valeurs possibles :
string
Valeur par défaut :
search_string
value_field
Champ du dataset spécifié via l’option search_dataset contenant la valeur à stocker. Le widget se mettra en erreur si : la valeur passée à l’option n’est pas une string ou si le field n’existe pas au sein du dataset search_dataset.