Ce widget sert à créer un tableau d’enregistrements à partir d’un dataset.
Utilisation
Dans cet exemple, nous avons un dataset d’une requête des patients. Il y a une relation de un doctor à N patients.
Cela donne le résultat suivant :
Note 1 : La valeur {listing_page.cit}
va conditionner la classe pour le rendu de la colonne citoyennete_fr
, donc les classes pour les colonnes peuvent être dynamiques.
Note 2 : Si l’option text_in_modal
est vrai, toutes colonnes de vartype text-multiligne seront un hyperlien à cliquer pour afficher le texte dans une modale.
La colonne menu
Si les options custom_url_###
, edit_url
ou enable_delete
sont utilisées, une colonne, appelée communément “colonne d’actions”, est ajoutée au WidgetTable. A partir de la version 21w37
de Voozanoo4, il est possible de manipuler cette colonne de la même façon que les colonnes “simples” du tableau. C’est à dire qu’il est possible de :
- choisir un titre pour la colonne
- appliquer un style particulier à la colonne via l’attribut
class
- choisir la position de cette colonne au sein du tableau
Pour ce faire, il suffit d’ajouter une balise column
avec un attribut action="menu"
au tableau :
La syntaxe simplifiée pour la colonne menu
A partir de la version 21w41
de Voozanoo 4, une nouvelle syntaxe est disponible pour les actions de la colonne de menu. Celle-ci permet de ne pas utiliser de nombreuses options custom_url_x
, mais plus simplement des balises imbriquées.
Ainsi le widget Table ci-dessus peut aussi s’écrire ainsi :
Voici la correspondance avec la syntaxe utilisant les custom_url_x
:
Attribut de la balise <column_action> (nouvelle syntaxe) |
Correspondance en option custom_url_x (ancienne syntaxe) |
---|---|
type |
Une seule valeur possible : delete . Une colonne avec type=delete équivaut à un enable_deletion |
url |
custom_url_x |
label |
custom_url_label_x |
show_on |
custom_url_show_x |
L’attribut position
L’attribut position
ne s’utilise que sur les columns de type action
qui ont pour valeur edit
, view
ou delete
. Cet attribut donne la possibilité de choisir la position de la colonne en question au sein du widgetTable.Les règles sont les suivantes :
- Dans l’éventualité où la même position a été définie pour plusieurs colonnes, la dernière colonne dans le XML avec la position
x
se présentera en positionx
, l’avant dernière enx+1
et ainsi de suite. - Si la valeur de la position est négative, l’attribut est ignoré et l’ordre du XML prime.
- Si la valeur de la position est supérieure au nombre de colonnes, la colonne est positionnée à la fin du widgetTable.
Personnaliser le rendu d’une ou plusieurs colonne(s)
Il est possible de prendre la main sur le rendu d’une ou plusieurs colonne(s) via une surcharge légère dans l’application.
Pour ce faire :
1 - Surcharger le WidgetTable dans l’application avec un WidgetTableCustom vide (le nom du widget n’est pas important).
2 - Dans EpiCraft, ajouter un WidgetTable surchargé par votre WidgetTableCustom et placer un attribut action
sur la/les colonne(s) concernée(s) dans le tableau avec une valeur différente de “edit”, “view” et “delete”. Chaque colonne ayant un rendu différent doit avoir un attribut action
avec une valeur différente.
3 - Créer des méthodes de rendu pour la/les colonne(s) concernée(s). Ces méthodes doivent respecter la règle de nommage et la signature suivantes : “_create[mon_action]TD(oTr, oColumn, sId)” :
- action doit être remplacé par la valeur attribuée à l’attribut action de la/des colonne(s) cible(s)),
- oTr : DOM object faisant référence à la ligne courante du tableau
- oColumn : objet contenant les attributs la colonne ainsi que sa position (oCloumn.iPos = 1 pour la première colonne, 2 pour la deuxième, etc.)
- sId : identifiant unique à attribuer à la cellule <td/>
Exemple :
<table id="liste_travail" dataset="liste_travail" mode="r">
<columns>
<column field="num_dnsm" mode="r" title="N° dnsm" class="col-sm-1" action="dnsm" />
<column field="identite" mode="r" title="Nom" class="col-sm-1"/>
<column field="affectation" mode="r" title="Affectation" class="col-sm-1"/>
<column field="statut" mode="r" title="Statut" class="col-sm-1"/>
<column field="id_data_patient" mode="r" title="Todo" action="to_do" class="no-sort col-sm-4"/>
<column field="id_data_patient" mode="r" title="Actions" action="actions" class="no-sort col-sm-4"/>
</columns>
<options>
<option output="html" option_name="widget" value="WidgetTableCustom" />
<option output="html" option_name="escape_html" value="false" />
</options>
</table>
<paginator dataset="liste_travail" />
YUI.add("widgettablecustom", function (Y) {
/**
* Layout
*
* @module layout
* @submodule widget
*/
/**
* WidgetTableCustom
*
* @class WidgetTableCustom
* @extends WidgetTable
* @constructor
*/
function WidgetTableCustom() {
WidgetTableCustom.superclass.constructor.apply(this, arguments);
}
WidgetTableCustom.NAME = 'WidgetTableCustom';
WidgetTableCustom.VERSION = '>=2.26';
WidgetTableCustom.NO_OPTION = false;
WidgetTableCustom.DEPRECATED = false;
WidgetTableCustom.DESCRIPTION = 'This widget displays a working list with status, todos and actions to undertake.';
WidgetTableCustom.ATTRS = {
// [...]
};
Y.WidgetTableCustom = Y.extend(WidgetTableCustom, Y.WidgetTable,
{
/**
* Construction logic executed during object instantiation.
*
* @method initializer
* @protected
*/
initializer: function () {
WidgetTableCustom.superclass.initializer.apply(this, arguments);
},
/**
* @param {object} oTr - DOM element - Current row
* @param {object} oColumn - Attributes of current column
* @param {string} sId - Unique id to be assigned to the current cell
* @private
*/
_createDnsmTD: function (oTr, oColumn, sId) {
// render logic
},
/**
* @param {object} oTr - DOM element - Current row
* @param {object} oColumn - Attributes of current column
* @param {string} sId - Unique id to be assigned to the current cell
* @private
*/
_createToDoTD: function (oTr, oColumn, sId) {
// render logic
},
/**
* @param {object} oTr - DOM element - Current row
* @param {object} oColumn - Attributes of current column
* @param {string} sId - Unique id to be assigned to the current cell
* @private
*/
_createActionsTD: function (oTr, oColumn, sId) {
// render logic
},
}, '0.0.1', {
requires: ['widgettable']
})
});
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 WidgetBase pour vérifier si d’autres attributs sont disponibles.
data_set*
Indique le nom du dataset dont les données seront affichées dans le tableau.
-
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 WidgetBase pour vérifier si d’autres options sont disponibles.
begin
Début de la pagination.
-
Version : >=2.15
-
Valeurs possibles : Integer
bool_as_glyphicon
Pour les types boolean, des glyphicons sont affichées (✔ pour 1, ✘ pour 0, rien pour NULL).
-
Version : >=2.15
-
Valeurs possibles : Boolean
custom_u_r_l
Custom_url_# : Il faut remplacer # par un integer. Permet d’ajouter des actions supplémentaires au bouton d’actions. S’utilise avec l’option custom_url_label_#.
-
Version : >=2.15
-
Valeurs possibles : String
custom_u_r_l_label
Custom_url_label_# : S’utilise avec l’option custom_url_#. Label de l’URL custom.
-
Version : >=2.15
-
Valeurs possibles : String
custom_u_r_l_mode
Custom_url_show_# : S’utilise avec l’option custom_url_#. Permet d’ajouter un mode de redirection à l’action (“frame” ou non).
-
Version : >=2.15
-
Valeurs possibles : frame,window
-
Valeur par défaut : frame
custom_u_r_l_show
Custom_url_show_# : S’utilise avec l’option custom_url_#. Permet d’ajouter une condition d’affichage à l’action (/! pas de gestion de DataSetChangeEvent ou ValueChangeEvent ).
-
Version : >=2.15
-
Valeurs possibles : String
delete_action_label
Permet de remplacer le libellé par défaut de l’action “Delete”.
-
Version : >=2.26
-
Valeurs possibles : String
edit_url
Détermine l’URL de redirection pour éditer une ligne du tableau.
-
Version : >=2.15
-
Valeurs possibles : String
edit_url_label
Permet de remplacer le libellé par défaut de l’action “Editer”.
-
Version : >=2.15
-
Valeurs possibles : String
enable_deletion
Ajoute la suppression aux actions listées dans le bouton d’actions présent sur chaque ligne du tableau.
-
Version : >=2.15
-
Valeurs possibles : Boolean
escape_html
Indique s’il faut échapper le code HTML des valeurs affichées dans le tableau.
-
Version : >=2.15
-
Valeurs possibles : Boolean
-
Valeur par défaut : true
modal_action_label
Permet de modifier le libellé de l’action d’ouverture de modale (par défaut : “Read the text”).
-
Version : >=2.26
-
Valeurs possibles : String
-
Valeur par défaut : Read the text
range
Interval de la pagination.
-
Version : >=2.15
-
Valeurs possibles : Integer
save_before_action
Indique au système de sauvegarder le formulaire courant avant de rediriger vers une autre page.
-
Version : >=2.26
-
Valeurs possibles : Boolean
save_before_edit
OBSOLETE (l’utilisation de save_before_action est à privilégier) - Indique au système de sauvegarder le formulaire courant avant de rediriger vers le formulaire d’édition.
-
Version : >=2.15
-
Valeurs possibles : Boolean
text_in_modal
Affiche le contenu des champs de type “text” dans une modale plutôt que dans la colonne correspondante.
-
Version : >=2.15
-
Valeurs possibles : Boolean