Vues de liste
L'éditeur Vues de liste est la page de configuration des quatre pages de liste pilotées par spécification : Factures, Erreurs d'intégration, E-Reporting et Journal de traitement. Une spec JSON par vue pilote la forme des colonnes sur chaque page — libellés, type, format, alignement, largeur, tri par défaut et la liste blanche des filtres — modifiable ici sans toucher au code.
Un second concept vit à côté de la spec : le catalogue de colonnes. Chaque vue livre un catalogue de toutes les colonnes que les tables sous-jacentes peuvent produire — le catalogue est la source de vérité de ce qui est adressable, la spec en sélectionne un sous-ensemble et le présente. Le picker + Ajouter une colonne est juste une vue filtrée du catalogue.
Vue d'ensemble
Sélecteur de vue
Une barre de pastilles en haut de page bascule entre les quatre vues actuellement pilotées par une spec :
| Vue | Page pilotée |
|---|---|
| Factures | Factures — view.invoices. |
| Erreurs d'intégration | Erreurs d'intégration — view.integration-errors. |
| E-Reporting | E-Reporting — view.ereporting. |
| Journal de traitement | Journal de traitement — view.processing-log. |
Une seule vue à la fois est chargée dans l'éditeur. Le changement de vue ne perd pas les modifications non enregistrées sur la vue précédente tant que la page reste ouverte ; Enregistrer écrit uniquement la carte active.
Un petit badge à côté du nom de vue indique si la spec active vient du défaut embarqué dans le JAR (default) ou d'une entrée stockée sur db-nomaubl (override) :
- default — aucune propriété
view.<nom>n'existe surdb-nomaubl. C'est le JSON embarqué dansconfig/list-views/view.<nom>.jsonqui pilote l'affichage. Enregistrer depuis l'éditeur écrit une propriété et fait basculer le badge enoverride. - override — une propriété a été stockée. L'éditeur lit la valeur stockée, la page lit la valeur stockée, le défaut embarqué est ignoré.
Lignes de colonne
Chaque carte porte une table des colonnes actuellement dans la spec. Une ligne par colonne.
| Colonne | Description |
|---|---|
| ⠿ (poignée) | Glisser-déposer pour réordonner. L'ordre dans l'éditeur est l'ordre dans la grille. |
| Nom | Le nom de colonne de la spec — doit correspondre à une colonne du catalogue de la vue. Lecture seule sur les lignes existantes (le nom est la clé de jointure avec le catalogue) ; modifiable uniquement à l'ajout via le picker. |
| Libellé EN / Libellé FR | Les libellés affichés dans l'en-tête de la grille. Libellé FR est utilisé quand la locale active commence par fr, sinon Libellé EN. Les deux champs sont libres. |
| Type | string / number / date / datetime. Pilote le tri et l'alignement par défaut des cellules. |
| Format | Renderer optionnel : date / datetime / amount / percent / badge. Appliqué par-dessus le type. |
| Largeur | Largeur en pixels passée au <colgroup> de la table. Les colonnes sans largeur se partagent l'espace horizontal restant. |
| Visible | Bascule maître. Désactivé = la colonne est dans la spec mais cachée dans la grille (toujours interrogeable). |
| Filtre | Liste blanche pour le panneau Filtres avancés. Désactivé = aucune pastille de filtre n'est proposée pour cette colonne. |
| ⌫ (retirer) | Retire la colonne de la spec. L'entrée du catalogue est intacte — la rajouter plus tard reproduit la même forme. |
Le tri par défaut vit sur la spec mais se définit ailleurs (aujourd'hui en modifiant le JSON embarqué ou la propriété stockée directement ; un toggle UI est prévu pour une version future). Chaque vue livre un défaut adapté.
+ Ajouter une colonne
Le bouton sous la liste des lignes ouvre le picker du catalogue — une liste recherchable de toutes les entrées de catalogue absentes de la spec courante. Chaque entrée affiche :
| Champ | Contenu |
|---|---|
| Nom | Le nom de colonne dans le catalogue — c'est la valeur que la spec stocke. |
| Libellé | Le libellé anglais par défaut proposé par le catalogue. Le libellé français dérive du labelFr du catalogue s'il existe ; les deux libellés sont modifiables une fois la colonne dans la spec. |
| Type | STRING / NUMBER / DATE / JDE_DATE / JDE_DATETIME. Pilote le type par défaut de la ligne de spec. Les dates JDE intègrent un décodeur (julien ou composite UPMJ+UPMT). |
Choisir une entrée insère une nouvelle ligne en bas de la table, amorcée avec les défauts du catalogue. Enregistrer valide ; la colonne apparaît dans la page au prochain rendu.
Le catalogue lui-même est côté serveur et n'est pas modifiable depuis l'IHM. Ajouter une colonne réellement nouvelle (que le back-end ne sait pas projeter) demande une modification de code dans le handler Java.
Panneau Filtres avancés
La liste blanche filter: true de la spec alimente une seconde IHM sur la page destination : le panneau Filtres avancés — pliable, indexé par nom de colonne de spec, avec un sélecteur d'opérateur par colonne (contains, equals, ≠, <, ≤, >, ≥, between, empty, not empty). Le panneau émet un état brouillon ; un bouton Exécuter explicite le valide en appliedFilters — taper ne sature pas le back-end.
La liste d'opérateurs proposée par colonne dépend du comportement de filtre de l'entrée du catalogue :
filterKind du catalogue | Opérateurs proposés |
|---|---|
exact | equals, ≠, empty, not empty. |
LIKE | contains, equals, ≠, empty, not empty. |
inList | equals (multi-choix — le catalogue éclate les buckets séparés par virgule en clause IN (?,?,?,?,?)). |
between | <, ≤, >, ≥, between. S'applique aux colonnes numériques et de date. |
Marquer une colonne Filtre = désactivé dans la spec la laisse visible dans la grille mais retire sa pastille du panneau — utile pour les champs en lecture seule que l'opérateur n'a pas besoin d'interroger.
Référence du schéma
Le fichier de spec ressemble à ceci (extrait) :
{
"name": "view.invoices",
"defaultSort": [{"column": "creationDate", "direction": "desc"}],
"columns": [
{
"name": "statusCode",
"label": "Status",
"labelFr": "Statut",
"type": "string",
"format": "badge",
"align": "left",
"width": 90,
"visible": true,
"filter": true
},
{
"name": "customerName",
"label": "Customer",
"labelFr": "Client",
"type": "string",
"width": 180,
"visible": true,
"filter": true
}
]
}
Le name se joint à l'entrée de catalogue qui a la clé correspondante ; tout le reste de la ligne est de la présentation. Enregistrer depuis l'éditeur écrit la même forme sous db-nomaubl.view.<nom>. Réinitialiser la propriété — plus simple via Configuration → Système → Global quand il porte les propriétés JSON — fait basculer la page vers le défaut embarqué et le badge passe à default.
Conseils & bonnes pratiques
- Partir du défaut embarqué. Chaque vue livre un défaut soigné ; ne modifier que quand un besoin spécifique apparaît. Le badge
overridesignale à l'opérateur que la spec s'écarte de la configuration livrée. - Utiliser le catalogue avant de demander une modification de code. Quand la colonne souhaitée est déjà dans le catalogue (par ex.
logBusinessUnit,logDueDate),+ Ajouter une colonnerègle le sujet en quelques clics. Une modification de code n'est nécessaire que quand la colonne est absente du catalogue. - Garder la liste blanche de filtres courte. Marquer toutes les colonnes
filter: trueencombre le panneau Filtres avancés — limiter la liste aux colonnes que les opérateurs interrogent réellement. - Définir une largeur pour les colonnes qui en ont besoin. Les badges de statut, les dates, les codes ont des largeurs naturelles ; les longues chaînes restent sans largeur pour prendre l'espace restant.
widthest aussi lemin-widthCSS de la colonne — une valeur trop grande écrase le reste de la grille. - Caché ≠ retiré. Mettre
Visible = désactivégarde la colonne interrogeable par le panneau Filtres avancés. À utiliser pour les champs techniques que l'opérateur filtre sans avoir besoin de les lire.