Aller au contenu principal

Écrans — vue d'ensemble

Un écran dans Liberty est la page que voit l'utilisateur : un tableau de lignes, des filtres optionnels, un dialogue d'ajout/modification optionnel, des actions optionnelles, un menu contextuel ligne optionnel. Un écran = une requête <base>_get + (optionnellement) <base>_put / <base>_post / <base>_delete pour les écritures + un formulaire de dialogue par-dessus.

La page qui gère les écrans est Paramètres → Écrans. Cette vue d'ensemble la cartographie ; les pages suivantes décrivent chaque tâche.


La page Écrans en un coup d'œil

Paramètres · Écranscrmnomajdenomasx1+ Ajouter des écrans pour un connecteurAnnulerEnregistrer🔎 Filtrer les écrans…customersClients · 2 onglets · 9 champs · 3 actionsread_query=customers_get✎ Renommer⎘ Dupliquer🗑dealsPipeline d'affaires · 1 onglet · 6 champs · menu contextuelread_query=deals_get✎ Renommer⎘ Dupliquer🗑+ Ajouter un écran (apparaît en haut de la liste)

Trois régions :

RégionContenu
Barre de portée en hautUne puce par application (un connecteur disposant d'un menu). Cliquer sur une puce → ses écrans se chargent en dessous. Le bouton + Ajouter des écrans pour un connecteur enregistre un connecteur tout neuf dans l'espace de nommage Écrans. Annuler / Enregistrer à droite valident ou annulent les modifications de toute la page.
Barre de filtreUn champ de recherche pour la liste d'écrans. Visible quand l'application sélectionnée comporte plus de quelques écrans.
Liste des écransUne carte par écran, défilement vertical. Chaque carte affiche l'identifiant, le libellé, la requête de lecture, le nombre d'onglets, le nombre de champs et les actions par carte : Renommer, Dupliquer, Supprimer. Cliquer sur une carte ouvre la boîte de dialogue modale du Concepteur d'écran.

La boîte de dialogue modale du Concepteur d'écran

Cliquer sur une carte ouvre une boîte de dialogue modale quasi plein écran qui héberge le ScreenEditor. L'en-tête présente Agrandir / Restaurer (plein écran par défaut), Annuler et Enregistrer — Enregistrer valide uniquement les modifications de cet écran et ferme ; Annuler demande confirmation en cas de modifications non enregistrées.

À l'intérieur de la modale, sept onglets organisent l'ensemble :

Concepteur d'écran · crm.customersGénéralRequêtesColonnesDialogueActionsMenu ligneExportContenu de l'onglet
OngletContenu
GénéralIdentité, surcharge du connecteur, table d'audit, plafond de lignes, colonnes clés, indicateurs de comportement (chargement automatique, éditable, importable), regroupement, vue arborescente, graphique par défaut, comportement au clic sur une ligne.
RequêtesLes quatre références de requêtes CRUD — lecture (obligatoire), mise à jour, insertion, suppression. Le sélecteur s'alimente depuis la liste des requêtes du connecteur.
ColonnesUne ligne par indication de colonne — libellés, formats, valeurs par défaut, références dictionnaire, filtrage, règles d'édition. Cliquer sur une colonne pour accéder à son éditeur complet.
DialogueLe Constructeur visuel — un canevas à trois colonnes style Figma (Palette / Canevas / Inspecteur) où l'on glisse des champs sur des onglets. Optionnel — un écran sans dialogue fonctionne quand même comme un tableau en lecture seule ou en édition de grille.
ActionsTrois groupes : Hooks de dialogue (on_load / on_save / on_cancel), Barre d'outils (boutons au-dessus du tableau), Hooks de ligne (on_insert / on_update / on_delete).
Menu ligneActions du menu contextuel ouvert par clic droit sur une ligne.
ExportConfiguration d'export xlsx multi-feuilles — optionnel.

Les pages suivantes de cette section décrivent chaque onglet comme une tâche distincte.


Ce que porte un écran

Les champs de premier niveau du schéma, regroupés par finalité :

GroupeChamps
Identitéid, label, description, connector (vide = le connecteur de l'application)
Requête de lectureread_query (obligatoire), auto_load, max_rows, key_columns
Requêtes d'écritureupdate_query, insert_query, delete_query
Édition et affichagecolumns, editable, uploadable, initial_group_by, treeview, chart_id
Auditaudit_table (ex. AUD_USERS — duplique les écritures avec AUD_ACTION / AUD_USER / AUD_DATE)
Formulairedialog (optionnel — le formulaire posé sur le tableau)
Actions / hooksactions (barre d'outils), row_menu (clic droit), on_insert / on_update / on_delete (hooks de ligne)
Cible au clic sur une lignerow_click_screen + row_click_connector + row_click_binds (ouvre un écran voisin comme dialogue) OU row_click_route (ouvre une route SPA)
Exportexport (configuration du classeur xlsx)

Types d'écrans — selon les champs renseignés

Il n'y a pas de discriminant kind ; les différentes formes d'écran proviennent des champs que l'on remplit :

Champs renseignésComportement
read_query seulGrille en lecture seule. L'utilisateur voit les lignes ; pas d'édition, pas d'ajout.
read_query + editable = trueÉdition en ligne dans la grille — l'utilisateur édite les cellules sur place, le bouton Enregistrer de la grille écrit en retour. Nécessite update_query.
read_query + dialogGrille + dialogue. L'utilisateur ajoute/modifie les lignes via le formulaire. Nécessite les insert_query / update_query correspondantes.
read_query + row_click_screenMaître/détail. Cliquer sur une ligne ouvre le dialogue d'un écran voisin restreint à cette ligne.
read_query + row_click_routeMaître/page. Cliquer sur une ligne navigue vers une route SPA — échappatoire pour les pages React écrites à la main (logs diffusés en direct, fusions multi-sources).
Tout ce qui précède + treeviewBascule en vue arborescente en complément des bascules Tableau / Graphique par défaut. Les colonnes parent/enfant construisent un arbre récursif.

Un même écran peut superposer plusieurs : un écran avec dialog ET row_click_route ouvre la route au clic (la route gagne), et le dialogue n'est accessible que via le bouton + Ajouter de la barre d'outils.


Permissions — pilotées par la requête de lecture

L'écran lui-même n'a pas sa propre chaîne de permission. Un utilisateur peut voir un écran quand il a la permission d'exécuter sa requête de lecture :

sql:<connector>:<read_query>

Ainsi, un écran customers sur le connecteur crm avec read_query = customers_get est visible par toute personne disposant de sql:crm:customers_get. Accorder sql:crm:* ouvre toutes les requêtes du connecteur — et donc tous les écrans qui les utilisent.

La même logique s'applique aux écritures : le Enregistrer du dialogue et le Enregistrer de la grille n'aboutissent que si l'utilisateur a sql:<connector>:<update_query> / <insert_query> / <delete_query>. Un utilisateur avec la lecture mais sans permission d'écriture voit la grille mais pas de bouton + Ajouter et obtient un dialogue en lecture seule.


Enregistrement et rechargement

Le bouton Enregistrer de la page Écrans écrit l'intégralité de screens.toml (la table [screens] est remplacée intégralement) et déclenche un rechargement à chaud. La bannière de statut indique quelles applications ont été touchées.

Le rechargement à chaud signifie aucun redémarrage de processus — un nouvel écran est appelable immédiatement à /screen/<app>/<id>, et le menu le prend en compte si une entrée de menu pointe sur lui.


Ce que l'on fait concrètement — carte rapide

ObjectifLire
Câbler un nouvel écran sur une requête _get et voir la grille.Créer un écran à partir d'une requête.
Configurer les colonnes — libellés, formats, valeurs par défaut, filtrage.Colonnes.
Construire le dialogue d'ajout/modification avec le concepteur visuel.Constructeur de dialogue.
Faire apparaître / rendre obligatoires / verrouiller des champs sous conditions.Champs conditionnels.
Ajouter des boutons de barre d'outils, des menus contextuels et des hooks de cycle de vie.Actions et cycle de vie.
Intégrer un formulaire d'enregistrement enfant ou une grille de lignes liées dans un onglet.Onglets imbriqués.

Étapes suivantes