| Personnalisation et paramétrage | |
Ce document décrit la mise en place des tris multiples au niveau de la couche de présentation (feuilles de style). Cette possibilité est induite par une amélioration au niveau du socle technique.
Le tri final est réalisé en concaténant les clés publiques de tris et en les séparant par le caractère « | ».
Exemple : cinematic=sort(0,-NOM|COD|TYP)
Il n’y a pas de limite quant au nombre de tris que l’on peut proposer. Si un tri n’existe pas (clé publique), il n’est pas pris en compte.
Par contre, si une clé privée demandée n’est pas définie dans la configuration, le socle remonte une erreur : il s’agit d’une erreur de conception.
Le caractère « – » provoque un tri descendant sur cette clé sauf si une clé contenant le « – » existe déjà. Dans ce cas, elle est prise en compte sans changement.
Le concept de paramètre passé à une action évolue et fait apparaître la notion de paramètre multi-valeurs, et donc d’occurrences.
Nouvelle déclaration de l’action sort :
< action name =" sort " class =" fr.ACE.technicalframework.application.action.Sort ">
< required >
< param name =" businessView " maxOccurs =" 1 " minOccurs =" 1 " type =" BusinessView "/>
</ required >
< optional >
< param name =" key " maxOccurs =" unbounded " minOccurs =" 1 " type =" String "/>
</ optional >
</ action >
Les tris doivent être définis sur un seul champ afin de faciliter la compréhension finale (mais ce n’est néanmoins pas une obligation).
Les clés définis dans la section ViewDef doivent donc être définies sur un seul champ (ascendant et descendant) dans un but de lisibilité.
D’autre part, la norme ACE est de positionner les tris descendants avec le préfixe « - ». Par exemple, si « NOMPRO » est le tri ascendant, alors « –NOMPRO » sera le tri descendant.
Un template (dans « e-GX.xsl ») permet de définir le helper Javascript définissant le contexte des tris. Le code est le suivant :
< xsl:template name =" GnxSortButton ">
< xsl:param name =" sort_key " select =" '' "/>
< script type =" text/javascript " charset =" iso-8859-1 ">
gnx.MultiSort.getInstance().setEntity( < xsl:value-of select =" $ENTITY "/> );
gnx.MultiSort.getInstance().setFrame(" < xsl:value-of select =" $FRAME "/> ");
gnx.MultiSort.getInstance().setTarget("_self");
gnx.MultiSort.getInstance().setParams(" < xsl:call-template name =" GnxTemporaire "/> ");
gnx.MultiSort.getInstance().setDefaultSort(" < xsl:value-of select =" $sort_key "/> ");
</ script >
< a href =" # " onclick =" gnx.MultiSort.getInstance().switchDisplay(); " class =" picto ">< img alt =" Tris multiples " src =" ../langue/media/ACE_standard/multisort.gif "/></ a >
</ xsl:template >
Il dispose d’un paramètre optionnel : sort_key.
Ce paramètre doit être passé lors de l’appel pour connaître la valeur publique du tri « courant », afin de proposer les tris par défaut dans le popup de sélection. Cette valeur est habituellement donnée par l’attribut sort_key du premier niveau de vue dans une ViewStruct (dans le flux de présentation).
Le template GnxSort a lui aussi été adapté afin de fournir la stricte définition de chaque tri en définissant un objet par tri.
Pour fonctionner, le Javascript à besoin de misc.js et de dragDrop.js qui centralisent certains nouveaux Javascript, en particulier la gestion des HashMap et la possibilité de « dragger » et repositionner un élément (un conteneur de type div par exemple) à l’écran.
Il a été prévu de pouvoir piloter plusieurs « multi-tris » dans la même page, le template XSL défini plus haut est une simplification d’accès via une méthode statique s’apparentant à un singleton. Ce singleton permet de récupérer une instance et une seule de l’objet gnx.MultiSort.
Chaque tri est défini via un objet gnx.MultiSort.SortDef, principalement sur les informations suivantes :
Les méthodes principales de l’objet gnx.MultiSort sont les suivantes :
L’exploitation des tris multi-clés nécessite d’être en version 1.3 ou supérieure. La prise en compte étant effectuée en premier lieu au niveau du socle, la librairie impactée est « technical_framework.jar ».
D’autre part, la ACE 1.3 met à disposition le début du framework Javascript proposé par ACE, en particulier :
Un nouveau template est disponible dans le mode web.xsl afin de définir une méthode unique d’accès au multi-tri.
D’autre part, le template GnxSort a lui aussi été modifié afin de générer les helpers de définition pour chacun des tris disponibles à l’écran. Tout tri doit donc être affiché avec ce template, c’est une condition sine qua non à son fonctionnement.
L’appel doit s’effectuer de la manière suivante dans une feuille de style :
< th >
< xsl:call-template name =" GnxSortButton ">
< xsl:with-param name =" sort_key " select =" /layout_data/VueUtilisateurCourantSociete/@sort_key "/>
</ xsl:call-template >
</ th >
Exemple sur la liste des produits dans le portail produits (I_PRO_F) :
Dans cet exemple, l’icône est placé en en-tête de dernière colonne :
Il suffit de cliquer sur l’icône pour faire apparaitre la sélection des colonnes à trier :