
Filtre
-
Rendu en HTML
-
Rendu en PDF
-
Rendu en Mail
-
Rendu en CSV

Le Filter DSL est toujours associé à un tableau ou à un graphique. Un bloc ne peut pas contenir uniquement un filtre au plus.
Exemple de code
UiFilterSpecifier f = new UiFilterSpecifier() (1)
f.ui User, { (2)
section "User", { (3)
filterField u.username_ (4)
filterField u.lastName_
filterField u.firstName_
filterField u.manager_, u.manager.username_ (5)
filterField u.mainSubsidiary_
filterField u.allowedSubsidiaries_
filterField u.enabled_
filterFieldExpressionBool "My Team", (6)
new FilterExpression(u.selfObject_,
Operator.IN,
cu.allManagedUsers_),
true
}
}
1 | Créer le filtre |
2 | Transmettre la classe d’objet et la fermeture contenant les spécifications du filtre via la méthode ui |
3 | Créer une section intitulée "Utilisateur" |
4 | Ajouter un champ au filtre, noter le soulignement à la fin du nom du champ |
5 | si le champ est un objet, transmettre un tableau avec toutes les étapes nécessaires pour cibler le champ sur lequel vous souhaitez filtrer |
6 | filterFieldExpressionBool permet un filtre plus complexe |
UiFilterSpecifier f = new UiFilterSpecifier()
CmsImage i = new CmsImage(cmsPage: new CmsPage())
f.ui CmsImage, cmsPage ? [id: cmsPage.id] : null, { (1)
section "Image", {
filterField i.hide_
filterField i.filePath_
filterField i.imageType_
}
section "Origin", {
filterField i.cmsPage_, i.cmsPage.name_
filterField i.cmsPage_, i.cmsPage.subsidiary_
filterField i.cmsPage_, i.cmsPage.pageLayout_
filterField i.cmsPage_, i.cmsPage.pageType_
}
}
f
1 | Nous pouvons passer des paramètres optionnels à l’action |
Hiérarchie des symboles du DSL
Éléments DSL
Racine
-
ui
: une version permet de passer des paramètres supplémentaires à l’action de filtrage (voir Filter Exemple 2)
Entrées
-
filterField
: ajouter un champ d’objet à transmettre à l’action de filtrage -
filterFieldInverse
: filtrer les objets si un autre objet pointe dessus. -
filterFieldExpressionBool
: permet de modifier la clause where dans l’action de filtrage en utilisant FilterExpression, le dernier paramètre est la valeur par défaut.
Structure
-
section
: ajouter une section de filtre graphique
Tableau
-
Rendu en HTML
-
Rendu en PDF
-
Rendu en CSV

Exemple de code
La partie droite de l’aperçu correspond à l’exemple DSL ci-dessous. Le filtre se trouve à gauche de l’image, voir DslDescriptions/FilterDSL.html pour le code correspondant.
Le tableau comporte une pagination, il est trié par défaut par rapport à la colonne Date de création, toutes les colonnes sont triables sauf Image et Rôles. Une colonne peut contenir plusieurs cellules. La date de création est vide pour les anciens utilisateurs, et les cellules du gestionnaire sont également vides pour certains utilisateurs.
new UiTableSpecifier().ui {
User u = new User(manager: new User(), enabled: true)
header { (1)
columnSelect "selectedUsers", { (2)
columnSelectButton tr("action.label"), CrewController.&doSomethingForSelectedUsers as MC
}
column {
label tr('picture.header.label') (3)
}
column {
sortableFieldHeader u.username_ (4)
sortableFieldHeader u.dateCreated_
}
column {
sortableFieldHeader u.subsidiary_
sortableFieldHeader u.manager_, u.manager.username_
}
column {
sortableFieldHeader u.lastName_
sortableFieldHeader u.firstName_
}
label tr('default.roles.label') (5)
}
TaackFilter tf = taackFilterService.getBuilder(User)
.setSortOrder(TaackFilter.Order.DESC, u.dateCreated_)
.setMaxNumberOfLine(20).addFilter(f).build()
iterate(tf) { User ru -> (6)
rowSelect ru.id.toString(), true (7)
rowField attachmentUiService.preview(ru.mainPicture?.id)
rowColumn {
rowField ru.username_
rowField ru.dateCreated_
}
rowColumn {
rowField ru.subsidiary_
rowField ru.manager_
}
rowColumn {
rowField ru.lastName_
rowField ru.firstName_
}
rowField ru.authorities*.authority.join(', ')
}
}
1 | Partie en-tête des spécifications de la table |
2 | Partie de sélection multiple de la table |
3 | En-tête de champ non triable |
4 | En-tête de champ triable |
5 | Il pourrait être enveloppé sans column s’il n’y a qu’un seul champ |
6 | iterate , spécifiant le tri, la pagination et le filtrage |
7 | Case à cocher dans la colonne correspondant à columnSelect dans l’en-tête |
ActionIcon
peut être modifié par ActionIconModifier
Le style de tableau est spécifié par Style
, un paramètre facultatif sur l’élément row
ou rowField
.