Search Criteria UI est un plugin permettant de générer un ensemble de critères de recherche en se basant sur la définition d'un ensemble d'éléments appartenant à une ou plusieurs familles.
Search Criteria est construit sur le le pattern widget de jquery-ui et se comporte donc comme un widget jquery-ui (initialisation, options, évènements, etc.) et est basée sur divers plugins de jQueryUI.
Lors de la création d'un criteria le plugin génère la DOM et injecte les différents éléments de recherche.
L'intégration du plugin requiert l'ajout dans la page web des composants suivants :
lib/data/json2.js
JSON
.lib/jquery/jquery.js
lib/jquery-ui/js/jquery-ui-1.8.21.custom.min.js
& lib/jquery-ui/css/smoothness/jquery-ui-1.8.21.custom.css
SEARCH_CRITERIA_UI/Layout/jquery.criterias-prod.js
& SEARCH_CRITERIA_UI/Layout/jquery.criterias.css
json2 : cet élément est nécessaire pour faire fonctionner le plugin sur les navigateurs ne possédant pas l'objet JSON.
Les adresses des éléments sont données à titre indicatif et sont valable dans l'optique d'une intégration au sein d'une action/application.
note: Dans la version finale du produit les dépendances à criteria seront fournies dans un seul fichier js.
Les utilisateurs devant avoir accès à Search Criteria et ses actions associées doivent avoir l'ACL : BASIC de l'application SEARCH_CRITERIA_UI.
Idéalement l'initialisation du plugin doit avoir lieu sur l'évènement ready de la page en cours pour permettre à la DOM et aux dépendances d'être chargées.
L'initialisation de la Search Criteria se fait sur une balise <table>
. Celle-ci doit être pré-existante à l'initialisation.
On doit ensuite la sélectionner à l'aide de jQuery et l'initialiser.
Exemple d'initialisation des criterias en utilisant une table pour les présenter sur deux colonnes :
<html> <head> <title>CriteriasUI</title> <link href="lib/jquery-ui/css/smoothness/jquery-ui.css" rel="stylesheet" type="text/css"/> <link href="SEARCH_CRITERIA_UI/Layout/jquery.criterias.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="lib/jquery/jquery-debug.js"></script> <script type="text/javascript" src="lib/jquery-ui/js/jquery-ui.js"></script> <script type="text/javascript" src="SEARCH_CRITERIA_UI/Layout/jquery.criterias-prod.js"></script> <script type="text/javascript"> $("#criterias").criterias({ criteriasDef : { defaultFam : "TST_FMTCOL", criterias : [ {"id" : "title"}, {"id" : "tst_rellatest"}, {"id" : "tst_enum"}, {"id" : "tst_rellatests"}, {"id" : "tst_doubles"} ] }, preDefaultInsertRender : function(nb, ct) { var pre = ""; if ((nb % 2) == 0) { pre = "<tr style='width : 50%;'><td>"; }else { pre = "<td>"; } return pre; }, postDefaultInsertRender : function(nb, ct) { var pre = ""; if ((nb % 2) == 1) { pre = "</td></tr>"; }else { pre = "</td>"; } return pre; } }); $("#result").on("click", function() { console.log($("#criterias").criterias("getValue")); }); </script> </head> <body> <table id="criterias" class="ui-widget" style="width : 100%; table-layout: fixed;"> </table> <button id="result">Get Me Some Results</button> </body> </html>
Les éléments en gras sont obligatoires.
configuration des critères
type : objet javascript,
fonction ou chaîne de caractères qui est insérée devant chaque critère :
fonction ou chaîne de caractères qui est insérée après chaque critère :
note : aucune option ne peut être modifiée après la création des critères.
cet objet de configuration donne les éléments permettant d'établir la configuration des critères.
Pour ce faire, il possède deux propriétés :
tableau de définition de critères.
Chaque élément est un objet composé des éléments suivants :
note : les id de type account et color ne sont pas encore pris en compte.
Plusieurs méthodes sont associées à l'objet Search Criteria :
Permet de retrouver les valeurs des critères, cette valeur est retournée sous la forme d'un array javaScript qui contient pour chacun de ses éléments les points suivants :
getValues
mais prend en entrée l'id d'un critère et ne retourne que la valeur de celui-ci,Permet d'indiquer la valeur d'un critère. Cette fonction a comme paramètres entrant :
valeur à donner au critère :
Ces méthodes sont appelées avec la syntaxe suivante :
$("#criterias").criterias("fonction_name");
note : Suite à l'évolution de la docGrid les critères pourront lui être passée directement et ensuite être utilisés par la grid pour filtrer ses résultats.
Des évènements sont déclenchés à 2 niveaux :
Les évènements peuvent être écoutés de deux manières différentes :
$("#criterias").on("criteriaserror", function(e, ui) { console.log(ui);});
$("#criterias").criterias({ error : function(e, ui) { console.log(ui);}};
preGetValues : function(evt, ui) { ui.additionnalSourceParams = { myNewProp : 'theValue' }; }
Il est possible de s'attacher aux évènements des critères lors de la création du widget critère de la manière suivante :
$("#criterias").criterias({ criteriasDef : { defaultFam : "TST_FMTCOL", criterias : [ {"id" : "title", change : function(evt, ui) { console.log(ui); }}, {"id" : "tst_rellatest"}, {"id" : "tst_enum", change : function(evt, ui) { console.log(ui); }}, {"id" : "tst_rellatests", preGetValues : function(evt, ui) { ui.additionnalSourceParams = { myNewProp : 'theValue' }; }, postGetValues : function(evt, ui) { console.log(ui); }, change : function(evt, ui) { console.log(ui); } }, {"id" : "tst_double"}, {"id" : "tst_date"} ] } });
Les critères sont construits de telle manière à pouvoir être simplement intégré avec le plugin docGrid.
Pour ce faire, il suffit de modifier l'option "criterias" d'une docGrid en lui donnant le retour du getValues d'un criterias. Soit :
$("#result").on("click", function() { $("#myTable").docGrid("option","criterias",$("#criterias").criterias("getValues")); });
Le plugin criterias est fourni avec une application permettant de la tester sans faire l'ensemble de l'intégration.
Cette application est accessible aux utilisateurs ayant le droit TEST de l'application SEARCH_CRITERIA_TEST à l'adresse http://host?app=SEARCH_CRITERIA_TEST
La partie de gauche permet de saisir du code JS et celle de droite du HTML, au clic sur le [publish] le code est exécuté dans la partie basse de la page.
Il est à noter que le code est sauvé sur la page et que celle-ci peut-être rechargée sans perdre le JS ni le HTML.
Ce document est publié sous licence CC http://creativecommons.org/licenses/by-nc-sa/2.0/fr/
Vous êtes libres :
Selon les conditions suivantes :
Guide d'intégration
© Anakeen, Anakeen Labs <labs@anakeen.com>
Module Search Criteria UI, version 1.0
Édition 2
Publié le 03/08/2018
Ce livre a été produit avec easybook 4.8, logiciel libre et open source développé par Javier Eguiluz à l'aide de différents composants Symfony.