Structure XML d'un projet
Ce document décrit la grammaire utilisée pour construire le fichier XML d'un projet.
Structure générale d'un projet
Exemple de projet vierge
<project>
<menu>
<item name="produits" icon="leaf" title="TIT_TITLE" subtitle="SUB_SUBTITLE" description="DESC_DESCRIPTION">
<page name="produits" table="produits" type="standard">
<form>
<row>
<col lg="6" sm="12" xs="12">
<label lg="12" align="left">REFERENCE</label>
<field lg="12" type="text" unique="true" wbsLang="PRODUIT" length="255" name="reference"/>
</col>
<col lg="6" sm="12" xs="12">
<label lg="8" align="left">PRIX</label>
<field lg="4" type="number" required="true" unique="true" length="255" name="prix"/>
</col>
</row>
<row>
<col lg="12" sm="12" xs="12">
<label lg="12" align="left">STOCK</label>
<field lg="12" name="in_out_stock" type="link" table="in_out" column="stock"
readonly="true"/>
</col>
</row>
</form>
<descriptor separator="">
<column order="1">reference</column>
</descriptor>
<lists>
<list type="lg">
<column sortable="true" searchable="true" size="4" lang="REFERENCE">reference</column>
<column sortable="true" searchable="true" size="4" lang="PRIX">prix</column>
<column sortable="true" searchable="true" size="4" table="in_out" lang="STOCK">stock</column>
</list>
<list type="sm">
<column sortable="true" searchable="true" size="8" lang="REFERENCE">reference</column>
<column sortable="true" searchable="true" size="4" table="in_out" lang="STOCK">stock</column>
</list>
<list type="xs">
<column sortable="true" searchable="true" size="8" lang="REFERENCE">reference</column>
<column sortable="true" searchable="true" size="4" table="in_out" lang="STOCK">stock</column>
</list>
</lists>
<view>
<orderby>
<column order="asc">prix</column>
</orderby>
<joins>
<join table="produits" otherTable="in_out" column="id" otherColumn="produits_id"/>
</joins>
<groupby>
<column table="produits">id</column>
</groupby>
</view>
</page>
</item>
<item name="in_out" icon="leaf" title="TIT_TITLE2" subtitle="SUB_SUBTITLE2" description="DESC_DESCRIPTION2">
<page name="in_out" table="in_out" type="standard">
<form>
<row>
<col lg="6" sm="12" xs="12">
<label lg="12" align="left">STOCK</label>
<field lg="12" type="number" name="stock"/>
</col>
<col lg="6" sm="12" xs="12">
<label lg="12" align="left">PRODUIT</label>
<field lg="12" name="produits_id" type="relation" table="produits" required="true"/>
</col>
</row>
</form>
<descriptor separator="">
<column order="1">updated_at</column>
</descriptor>
<lists>
<list type="lg">
<column sortable="true" searchable="true" size="12" table="produits" lang="REFERENCE">
reference
</column>
<column sortable="true" searchable="true" size="12" lang="STOCK">stock</column>
</list>
</lists>
</page>
</item>
</menu>
<langs>
<lang fr="Mes produits">TIT_TITLE</lang>
<lang fr="Gestion de mes produits">SUB_SUBTITLE</lang>
<lang fr="Gérer mes produits.">DESC_DESCRIPTION</lang>
<lang fr="Mon stock">TIT_TITLE2</lang>
<lang fr="Gestion de mon stock">SUB_SUBTITLE2</lang>
<lang fr="Gérer le stock de mes produits.">DESC_DESCRIPTION2</lang>
<lang fr="Référence du produit">Référence du produit</lang>
<lang fr="Prix du produit">Prix du produit</lang>
<lang fr="Mon stock">Mon stock</lang>
<lang fr="Mon produit">Mon produit</lang>
</langs>
</project>
Menu
Balise : menu
Chaque projet possède un menu principal composé d'items de menu et de sous items de menu.
Item de menu
Balise : item
Un item de menu correspond à une page de l'application ou bien à définit d'autres items de menu récursivement. Les items de menu de premier niveau sont affichés dans le menu du haut et dans le panneau latéral gauche.
| Attribut | Obligatoire | Commentaire | Valeur |
|---|---|---|---|
| name | Oui | Nom du menu | chaîne de 45 caractères max |
| icon | Oui | Icône du menu et de la page | https://ant.design/components/icon/ |
| title | Oui | Titre du menu et de la page | variable de langue |
| subtitle | Non | Sous-titre du menu et de la page | variable de langue |
| description | Non | Description du menu | variable de langue |
| hidden | Non | Masquage de la page | booléen |
| device | Non | Type de client | "mobile" / "web" |
- Le titre et sous-titre d'un item de menu définissent aussi le titre et le sous-titre de la page vers laquelle il est associé.
- Un item de menu et sa page peuvent être cachés avec l'attribut hidden (utile pour les pages d'association des relations de type N-N).
- Un item de menu peut définir d'autres items de menu grâce à la balise items.
- Si aucun device n'est spécifié, l'affichage se fait par défaut sur tous les clients.
Exemple :
<item name="produits" icon="TagOutlined" title="TITLE" subtitle="SUBTITLE" description="DESCRIPTION"/>
<item name="produits" icon="TagOutlined" title="TITLE" subtitle="SUBTITLE" description="DESCRIPTION" device="web"/>
Page
Balise : page
Une page permet de visualiser les données d'une table sous forme de liste ou d'éditer les données grâce à un formulaire.
| Attribut | Obligatoire | Commentaire | Valeur |
|---|---|---|---|
| type | Oui | Type de la page | standard ou multi |
| name | Oui | Nom de la page | chaîne de 45 caractères max |
| table | Oui | Table MySQL associée | chaîne de 45 caractères max |
| defaultView | Non | vue par défaut | list ou calendar |
- Le titre de la page est le titre du menu parent.
- C'est la page de type standard qui crée la table en base données.
- Une page qui affiche des informations de plusieurs tables à la fois est une table de type
multi.
Spécificité d'une page standard
- La page standard DOIT porter le même nom que la table sous-jacente
- Toutes les tables dans la base de données sont créées à partir de la définition de leur page standard.
- On ne PEUT PAS avoir de champ link éditables dans une page standard.
- Chaque table ne peut avoir qu'une page standard associée.
Calendrier
Balise : calendar
Définit la structure du calendrier d'une page. Les événements du calendrier sont caractérisés par une date de début, une date de fin, une couleur et un libellé. La légende du calendrier est calculée à partir du descripteur de la page standard du champ couleur.
| Attribut | Obligatoire | Commentaire | Valeur par défaut |
|---|---|---|---|
| minTime | Non | Heure minimale de la plage horaire du calendrier | 00:00 |
| maxTime | Non | Heure maximale de la plage horaire du calendrier | 23:59 |
| startTime | Non | Heure à partir de laquelle la plage est affichée | 07:00 |
| day | Non | Permet l'affichage du mode jour | true |
| week | Non | Permet l'affichage du mode semaine | true |
| workWeek | Non | Permet l'affichage du mode semaine ouvrée | false |
| month | Non | Permet l'affichage du mode mois | true |
| agenda | Non | Permet l'affichage du mode agenda | false |
| defaultView | Non | day / week / workWeek / month / agenda | - |
| legendShow | Non | Permet l'affichage ouvert/fermé de la légende | true |
Date de début
Balise : start
Colonne qui définit la date de début de l'événement. Note : on peut utiliser une colonne étrangère en précisant l'attribut
table.
Important: cette colonne doit être présente dans le formulaire (éventuellement cachée) pour fonctionnement en mobile
Date de fin
Balise : end
Colonne qui définit la date de fin de l'événement. Note : on peut utiliser une colonne étrangère en précisant l'attribut
table.
Important : cette colonne doit être présente dans le formulaire (éventuellement cachée) pour fonctionnement en mobile
Couleur
Balise : color
Colonne qui définit la couleur de la ressource associée à l'événement. Note : on peut utiliser une colonne étrangère en précisant l'attribut
table.
Important : cette colonne doit être présente dans le formulaire (éventuellement cachée) pour fonctionnement en mobile
Libellé de l'événement
Balise : label
Définit le libellé de l'événement en concaténant différentes colonnes. Note : on peut utiliser des colonnes étrangères en précisant l'attribut
table.
Important : les colonnes utilisées doivent être présentes dans le formulaire (éventuellement cachée) pour fonctionnement en mobile
Exemple :
<calendar startTime="07:00" minTime="05:00" maxTime="22:00" day="true" workWeek="true">
<start>debut_transport</start>
<end>fin_transport</end>
<color table="grues">couleur</color>
<label>
<column table="chantiers">nom</column>
</label>
</calendar>
Note : si la colonne qui définit la couleur de la ressource n'est pas directement sur la table de la page où est défini le calendrier, il faut l'ajouter sous forme de champ lié dans le formulaire.
Formulaire
Balise : form
Définit la structure du formulaire d'une page. Le formulaire permet d'éditer les données de la(des) table(s) associée(s) à la page.
| Attribut | Obligatoire | Commentaire | Valeur |
|---|---|---|---|
| redirect | Non | Redirection vers la liste après une sauvegarde (création ou édition) | booléen |
| layout | Non | Layout du formulaire | vertical ou horizontal |
- La déclaration du formulaire est aussi la déclaration de la structure de la table MySQL si la page est de type
standard. - L'attribut redirect est pris en compte uniquement en mobile.
- La valeur par défaut de l'attribut redirect est true.
- La valeur par défaut de l'attribut layout est vertical.
Le layout d'un formulaire définit le placement des champs et des labels, il peut être
vertical(libellé au dessus du champ) ouhorizontal(libellé à côté du champ).
Ligne
Balise : row
Permet de créer une ligne dans le formulaire d'une page. Une ligne contient obligatoirement des colonnes.
| Attribut | Obligatoire | Commentaire | Valeur |
|---|---|---|---|
| tabs | Non | Affiche les colonnes de la ligne sous forme d'onglets | booléen |
| group | Non | Nom du groupe de champ | chaîne de caractères |
- L'attribut
grouppermet de définir un groupe de champ pouvant être caché par un déclencheur de formulaire.
Colonne
Balise : col
Permet de créer une colonne dans le formulaire d'une page. Une colonne est toujours enfant d'une ligne.
| Attribut | Obligatoire | Commentaire | Valeur |
|---|---|---|---|
| tab | Non | Nom de l'onglet | variable de langue |
| actions | Non | Afficher la colonne selon le mode du formulaire | chaîne de caractères |
| group | Non | Nom du groupe de champs | chaîne de caractères |
| lg | Oui | Largeur de la colonne pour le web | nombre compris entre 1 et 12 |
| sm | Oui | Largeur de la colonne pour les tablettes | nombre compris entre 1 et 12 |
| xs | Oui | Largeur de la colonne pour les téléphones | nombre compris entre 1 et 12 |
- La somme des largeurs des colonnes d'une ligne doit être égale à 12.
- Le nom de l'onglet est pris en compte uniquement lorsque la ligne s'affiche en mode "onglets".
- Une colonne peut contenir une ligne, il s'agit d'un système récursif.
- Par défaut l'onglet est toujours affiché, quel que soit le mode du formulaire.
- L'attribut
grouppermet de définir un groupe de champ pouvant être caché par un déclencheur de formulaire. - L'attribut
actionspermet d'afficher la colonne selon le mode du formulaire. 3 actions ('create' 'update' 'view') peuvent être définies et se cumuler avec le séparateur,(sans espaces). Exemple : la valeur (par défaut) create,update,viewaffichera la colonne dans tous les modes, et si vous définissez la valeur surupdate, la colonne ne s'affichera qu'en mode mise à jour du formulaire.
Libellé de champ
Balise : label
Permet de définir le libellé d'un champ de type field dans le formulaire d'une page.
| Attribut | Obligatoire | Commentaire | Valeur |
|---|---|---|---|
| lg | Non | Largeur du libellé en web | nombre compris entre 1 et 12 |
| sm | Non | Largeur du libellé sur une tablette | nombre compris entre 1 et 12 |
| xs | Non | Largeur du libellé sur un téléphone | nombre compris entre 1 et 12 |
| align | Non | Alignement du libellé | left / right / center |
- Si la somme de la largeur du libellé et du champ dépasse 12, ils sont affichés l'un en dessous de l'autre.
- Le contenu d'un libellé correspond à une variable de langue.
- La largeur par défaut est 4.
Champs de formulaire
Balise : field
Permet de définir un champ dans le formulaire d'une page.
Il existe trois types de champs :
- les champs simples
- les champs liés
- les champs complexes
Champs simples
Un champ simple correspond à une colonne qui existe en base de données et appartient à la table de la page.
Un champ simple possède un type de données:
| Type | Description |
|---|---|
| text | Champ texte limité à 255 caractères |
| longtext | Champ texte illimité en caractères |
| Champ texte représentant un email | |
| password | Champ texte masqué par des astérisques |
| number | Nombre entier |
| numeric | Nombre décimal |
| currency | Nombre décimal avec préfixe ou suffixe (par ex. monétaire) |
| phone | Nombre représentant un numéro de téléphone |
| address | Champ texte représentant une adresse |
| datetime | Date et heure |
| date | Date |
| time | Heure |
| author | Nom prénom de l'auteur de l'enregistrement |
| autoincrement | Entier auto-incrémenté |
| radiogroup | Groupe de radio boutons |
| checkboxgroup | Groupe de cases à cocher |
| upload_multi | Permet d'uploader un ou plusieurs fichiers |
| upload | Permet d'uploader un seul fichier |
| url | Saisie d'une URL et navigation |
| relation | Clé étrangère sous forme de liste déroulante |
| barcode_1d | Code barre 1D (magasin) |
| qrcode | QR Code |
| nfc_tag | Tag NFC |
| colorpicker | Sélecteur de couleur |
| imageeditor | Image éditable |
| user | Champ utilisateur (relation vers un utilisateur du projet) |
| switch_button | Champ interrupteur / switch |
| checkbox | Champ case à cocher |
| timestamp | Date de création et date de modification |
Attributs d'un champ simple:
| Attribut | Obligatoire | Commentaire | Valeur |
|---|---|---|---|
| name | Oui | Nom du champ | chaîne de 45 caractères max |
| type | Oui | Type du champ | voir tableau |
| unique | Non | Champ unique | booléen |
| required | Non | Champ requis | booléen |
| readonly | Non | Champ en lecture seule | booléen |
| hidden | Non | Visibilité du champ | booléen |
| default | Non | Valeur par défaut du champ | chaîne, nombre ou date |
| length | Non | Taille maximale du champ | nombre compris entre 1 et 255 |
| lg | Non | Largeur du champ en web | nombre compris entre 1 et 12 |
| sm | Non | Largeur du champ sur tablette | nombre compris entre 1 et 12 |
| xs | Non | Largeur du champ sur mobile | nombre compris entre 1 et 12 |
| uniqueConstraintName | Non | Nom de la contrainte d'unicité | chaîne de caractères |
| wbsLang | Non | Le champ est une valeur WBS | chaîne de caractères |
| preset | Non | Nom du champ de pré-remplissage | chaîne de caractères |
- L'attribut preset doit contenir le nom d'un champ du même type.
- Le pré-remplissage se déclenche lors d'une modification du champ du preset.
- Lorsqu'on vide le champ du preset, on ne vide pas les champs dont dépendent le preset.
Text
Type : text
Ce champ affiche un texte.
| Attribut | Obligatoire | Commentaire | Valeur |
|---|---|---|---|
| length | Non | Longueur maximale | 1 < nombre < 255 |
Attention, la longueur définie dans une page multi doit être égale ou inférieur à celle définie dans la page standard.
ex : Si le lenght défini sur la page standard est de 10 et sur la page multi de 30, on pourra taper 30 caractères sur la page multi, mais tous les caractères au-delà des 6 premiers disparaitrons à l'enregistrement.
Exemple:
<field type="text" length="7" required="true" name="code_postal"/>
Longtext
Type : longtext
Ce champ affiche un texte long.
| Attribut | Obligatoire | Commentaire | Valeur |
|---|---|---|---|
| length | Non | Longueur maximale | nombre |
Attention, la longueur définie dans une page multi doit être égale ou inférieur à celle définie dans la page standard.
ex : Si le lenght défini sur la page standard est de 10 et sur la page multi de 30, on pourra taper 30 caractères sur la page multi, mais tous les caractères au-delà des 6 premiers disparaitrons à l'enregistrement.
Exemple:
<field type="longtext" length="1000" required="true" name="description"/>
Type : email
Ce champ affiche et gère la saisie et l'affichage d'un email.
Exemple:
<col lg="4" sm="6" xs="12">
<label lg="4" align="right">TEST_EMAIL</label>
<field type="email" name="email"/>
</col>
Password
Type : password
Ce champ affiche et gère la saisie et l'affichage d'un mot de passe.
Exemple:
<col lg="4" sm="6" xs="12">
<label lg="4" align="right">TEST_PASSWORD</label>
<field type="password" name="password"/>
</col>
Entier
Type : number
Ce champ affiche un entier positif.
| Attribut | Obligatoire | Commentaire | Valeur | |
|---|---|---|---|---|
| separator | Non | Séparateur de millier | caractère | |
| min | Non | Valeur minimale | nombre | |
| max | Non | Valeur maximale | nombre | |
| valueButtons | Non | Présence (ou non) de boutons | true / false | false |
| buttonsStep | Non | Pas (valeur décimale) des boutons | nombre décimal | end |
| buttonsSize | Non | Taille des boutons | small / default / large | false |
| placeholder | Non | Taille des boutons | chaîne de caractères | "" |
Exemple:
<field type="number" seperator="," max="50" required="true" name="entrees"/>
- Pour l'attribut separator, il ne faut pas mettre de "." un message d'erreur apparaîtra dans le traitement du xml.
Numérique
Type : numeric
Ce champ affiche une valeur numérique à plusieurs décimales.
| Attribut | Obligatoire | Commentaire | Valeur | Valeur par défaut |
|---|---|---|---|---|
| separator | Non | Séparateur de milliers | caractère | " " |
| length | Non | Longueur du nombre (décimales comprises) | nombre | 10 |
| precision | Non | Nombre de décimales | nombre | 2 |
| max | Non | Valeur minimale | nombre | 99999999.99 |
| min | Non | Valeur maximale | nombre | -99999999.99 |
| valueButtons | Non | Présence (ou non) de boutons | true / false | false |
| buttonsStep | Non | Pas (valeur décimale) des boutons | nombre décimal | end |
| buttonsSize | Non | Taille des boutons | small / default / large | false |
| placeholder | Non | Taille des boutons | chaîne de caractères | "" |
Exemple:
<field type="numeric" seperator="," min="10" max="50" precision="2" length="10" required="true" name="hauteur"/>
- Pour l'attribut separator, il ne faut pas mettre de "." un message d'erreur apparaîtra dans le traitement du xml.
- Des boutons - et + avec un pas de 0,5 :
<field type="numeric" precision="3" required="true" name="hauteur" valueButtons="true" buttonsStep="0.5" placeholder="Distance..." />
Devise
Type : currency
Ce champ affiche un nombre avec des décimales suivi ou précédé d'un symbole représentant l'unité. Il est utilisable pour représenter, entre autres des valeurs monétaires, des distances, des poids, ...
| Attribut | Obligatoire | Commentaire | Valeur | Valeur par défaut |
|---|---|---|---|---|
| length | Non | Longueur du nombre (décimales comprises) | nombre | 10 |
| precision | Non | Nombre de décimales | nombre | 2 |
| symbol | Oui | Symbole monétaire | chaîne de caractères | aucune |
| symbolPosition | Non | Préfixe ou suffixe | start / end | end |
| separator | Non | Séparateur de milliers | chaîne de caractères | " " |
| max | Non | Valeur maximale | nombre décimal | 99999999.99 |
| min | Non | Valeur minimale | nombre décimal | -99999999.99 |
| valueButtons | Non | Présence (ou non) de boutons | true / false | false |
| buttonsStep | Non | Pas (valeur décimale) des boutons | nombre décimal | end |
| buttonsSize | Non | Taille des boutons | small / default / large | false |
| placeholder | Non | Taille des boutons | chaîne de caractères | "" |
Exemples :
- Un prix en euros avec une précision de deux chiffres (€ en suffixe) :
<field type="currency" symbol="€" required="true" name="price" />
- Un prix en dollars avec une précision de deux chiffres ($ en préfixe) :
<field type="currency" symbol="$" symbolPosition="start" required="true" name="price" />
- Une distance en mètres avec une précision de trois chiffres (m en suffixe). Des boutons - et + avec un pas de 0,5 mètres :
<field type="currency" symbol="m" symbolPosition="end" precision="3" required="true" name="distance" valueButtons="true" buttonsStep="0.5" placeholder="Distance..." />
- Pour l'attribut separator, il ne faut pas mettre de "." un message d'erreur apparaîtra dans le traitement du xml.
Phone
Type : phone
Ce champ affiche et gère la saisie et l'affichage d'un numéro de téléphone.
Exemple:
<col lg="4" sm="6" xs="12">
<label lg="4" align="right">TEST_PHONE</label>
<field type="phone" name="phone"/>
</col>
Address
Type : address
Ce champ affiche et gère la saisie et l'affichage d'une adresse.
Exemple:
<col lg="4" sm="6" xs="12">
<label lg="4" align="right">TEST_ADDRESS</label>
<field type="address" name="address"/>
</col>
Date-time
Type : datetime
Ce champ affiche une date et heure.
Exemple:
<col lg="4" sm="6" xs="12">
<label lg="4" align="right">TEST_DATETIME</label>
<field type="datetime" required="true" name="datetime_emission"/>
</col>
Date
Type : date
Ce champ affiche une date (sans la gestion de l'heure).
Exemple:
<col lg="4" sm="6" xs="12">
<label lg="4" align="right">TEST_DATE</label>
<field type="date" name="date_emission"/>
</col>
Time
Type : time
Ce champ affiche une heure.
Exemple:
<col lg="4" sm="6" xs="12">
<label lg="4" align="right">TEST_TIME</label>
<field type="time" required="true" name="time_emission"/>
</col>
Author
Type : author
Ce champ correspond à un utilisateur du projet qui a modifié ou créé une donnée sur la page.
| Attribut | Obligatoire | Commentaire | Valeur |
|---|---|---|---|
| name | Oui | Nom champ en base de donnée | updated_by / created_by |
- Si le nom de champ est
created_byil s'agit de l'utilisateur qui a créé la donnée - Si le nom de champ est
updated_byil s'agit de l'utilisateur qui a modifié la donnée en dernier
Exemple:
<field type="author" name="updated_by"/>
<field type="author" name="created_by"/>
Auto-incrément
Type : autoincrement
Ce champ affiche un entier auto-incrémenté dont le nombre de caractères peut être fixe.
| Attribut | Obligatoire | Commentaire | Valeur |
|---|---|---|---|
| zerofill | Non | Nombre de caractères du format d'affichage | entier positif |
- Ce champ ne peut pas être requis puisqu'il est rempli automatiquement.
Exemple:
<field type="autoincrement" zerofill="3" name="num_auto"/>
Radio group
Type : radiogroup
Ce champ affiche un ou plusieurs bouton(s) radio.
| Attribut | Obligatoire | Commentaire | Valeur |
|---|---|---|---|
| blindMode | Non | Active le mode "aveugle" | booléen |
| inline | Non | Affiche les cases à cocher sur une ligne | booléen |
| columns | Non | Affiche les cases à cocher sur un nombre de colonne défini | nombre |
- La valeur par défaut de l'attribut blindMode est false.
- La valeur par défaut de l'attribut inline est false (les boutons radio s'affichent les uns en dessous des autres).
- La valeur par défaut de l'attribut columns est 1.
- Si l'attribut columns est utilisé, l'attribut inline ne sera pas pris en compte.
Exemple:
<field type="radiogroup" name="travaux_marche" inline="false" blindMode="true" required="true">
<radio value="oui" checked="true">OUI</radio>
<radio value="non">NON</radio>
</field>
Cases à cocher
Type : checkboxgroup
Ce champ affiche une ou plusieurs case(s) à cocher.
| Attribut | Obligatoire | Commentaire | Valeur |
|---|---|---|---|
| blindMode | Non | Active le mode "aveugle" | booléen |
| inline | Non | Affiche les cases à cocher sur une ligne | booléen |
| columns | Non | Affiche les cases à cocher sur le nombre de colonne défini | nombre |
- La valeur par défaut de l'attribut blindMode est false.
- La valeur par défaut de l'attribut inline est false (les cases à cocher s'affichent les uns en dessous des autres).
- La valeur par défaut de l'attribut columns est 1.
- Si l'attribut columns est utilisé, l'attribut inline ne sera pas pris en compte.
Exemple:
<field type="checkboxgroup" required="true" inline="true" blindMode="false" name="categorie">
<checkbox value="fruit">CAT_FRUIT</checkbox>
<checkbox value="legume">CAT_LEGUME</checkbox>
<checkbox value="autre">CAT_AUTRE</checkbox>
</field>
Upload de fichier
Type : upload ou upload_multi
Ce champ permet de téléverser et télécharger un ou plusieurs fichiers.
| Attribut | Obligatoire | Commentaire | Valeur |
|---|---|---|---|
| autosync | Non | Téléchargement automatique des fichiers lors d'une synchronisation mobile | booléen |
| filetypes | Non | Types de fichiers autorisés (séparés par des espaces) | chaîne |
- La valeur par défaut de l'attribut autosync est false.
- La valeur par défaut de l'attribut filetypes est * (tous types de fichiers autorisés).
- Attention, une fois activé, le téléchargement de plusieurs fichiers volumineux peut alourdir le processus de synchronisation mobile.
- Taille maximale pour un seul fichier - 40 Mo
- Taille maximale de tous les fichiers dans un champ "upload_multi" - 80 Mo
- Attention, sur téléphone et tablette, le bouton pour prendre une photo sera disponible uniquement si filetypes contient image, jpg ou la valeur par défaut.
- Liste des valeurs possibles pour filetypes :
- Il y a 5 groupes de types : application, image, text, video, audio
- Pour accepter tous les types d'un groupe, il suffit de mettre le nom du groupe.
- Pour accepter un type spécifique, il faut préciser le nom du type.
- Pour accepter plusieurs types ou groupes, il faut les séparer par des espaces.
- Groupes : application,
- Types : pdf (.pdf), doc (.doc, .docx), xls (.xls, .xlsx), ppt (.ppt, .pptx), odt (.odt), ods (.ods), odp (.odp), xml (.xml)
- Groupes : image,
- Types : png (.png), jpg (.jpg, .jpeg), svg (.svg), webp (.webp)
- Groupes : text,
- Types : txt (.txt), csv (.csv), xml (.xml)
- Groupes : video,
- Types : mp4 (.mp4), mov (.mov)
- Groupes : audio,
- Types : mp3 (.mp3), wav (.wav)
- Groupes : application,
Exemples:
<field type="upload_multi" autosync="false" name="pj"/>
<field type="upload" autosync="true" required="true" name="pj"/>
<field type="upload" filetypes="image" name="pj"/>
<field type="upload" filetypes="png pdf" name="pj"/>
<field type="upload" filetypes="text pdf" name="pj"/>
URL / lien
Type : url
Ce champ affiche un input avec un bouton pour naviguer vers le lien.
En mode liste, le lien est affiché avec un lien hypertexte sur le label du champ.
Ce champ n'est pas pris en compte en mobile dans un premier temps
Exemple:
<col lg="6" sm="12" xs="12">
<label lg="5" align="right">URL_TEST</label>
<field type="url" name="url_test"/>
</col>
Relation simple
Type : relation
Ce champ affiche une liste déroulante qui permet de définir une relation simple, c'est-à-dire remplir une clé étrangère.
| Attribut | Obligatoire | Commentaire | Valeur |
|---|---|---|---|
| table | Oui | Nom de la table étrangère | chaîne de caractères |
| page | Non | Nom de la page étrangère | chaîne de caractères |
| dependsOn | Non | Nom d'un autre champ de relation | chaîne de caractères |
| radiogroup | Non | Affiche la relation sous forme de cases à cocher | booléen |
| nfcCreation | Non | Active le mode création à partir d'un scan | booléen |
| barcodeCreation | Non | Active le mode création à partir d'un scan | booléen |
- Ce champ génère une clé étrangère si la page est de type standard.
- La page étrangère par défaut est la page standard de la table étrangère.
- Les options affichées correspondent aux descripteurs des données de la page étrangère.
- Définissez un champ de relation dependsOn pour filtrer les options de ce champ.
- Le champ dependsOn doit être de type "relation"
- La "table" définie doit définir une relation vers le champ "dependsOn"
- Exemple :
le champ de relation "ville" ("table" = "villes") peut dépendre du champ de relation "pays".
La table "villes" doit définir une relation vers la table "pays".
- La valeur par défaut de l'attribut radiogroup est false.
- Lorsque l'attribut nfcCreation est activé et qu'une occurrence est trouvée, l'utilisateur est redirigé vers un formulaire de création avec le champ relation pré-rempli.
- Lorsque l'attribut barcodeCreation est activé et qu'une occurrence est trouvée, l'utilisateur est redirigé vers un formulaire de création avec le champ relation pré-rempli.
Exemple:
<field type="relation" name="dps" radiogroup="true" required="true" table="dps"/>
Code barre
Type : barcode_1d
Ce champ affiche un code barre 1D (qui peut être rempli par un scan avec l’appareil photo du téléphone).
| Attribut | Obligatoire | Commentaire | Valeur |
|---|---|---|---|
| barcodeType | Non | Format de barcode ('ean8' / 'ean13') | chaîne de caractères |
- La valeur par défaut de l'attribut barcodeType est ean13.
Exemples:
<field type="barcode_1d" required="true" name="repere"/>
Code qr
Type : qrcode
Ce champ affiche un QR code (qui peut être rempli par un scan avec l’appareil photo du téléphone).
Exemple :
<field type="qrcode" required="true" name="repere"/>
Tag NFC
Type : nfc_tag
Ce champ affiche la valeur d'un tag NFC (qui peut être rempli grâce un scan NFC si le téléphone est compatible).
Exemple:
<field type="nfc_tag" required="true" name="montag"/>
Colorpicker
Type : colorpicker
Ce champ affiche un outil de sélection de couleur et l'enregistre au format hexadécimal.
Exemple:
<col lg="4" sm="6" xs="12">
<label lg="4" align="right">COLOR</label>
<field type="colorpicker" name="macouleur"/>
</col>
Image Editable
Type : imageeditor
Ce champ affiche une image éditable à partir d'un fond de couleur uni, d'un champ upload, d'une image statique.
| Attribut | Obligatoire | Commentaire | Valeur |
|---|---|---|---|
| src | Oui* | Nom du fichier | chaîne de caractères |
| upload | Oui* | Nom du champ upload | chaîne de caractères |
| backgroundColor | Oui* | Couleur du fond (#HEX) | chaîne de caractères |
| width | Non | Largeur du champ | nombre |
| height | Non | Hauteur du champ | nombre |
*choisir un seul attribut par champ image
- Les images statiques pour l'attribut src doivent être déposées depuis le backend dans le répertoire media.
- Attention, si l'attribut upload est choisi, il faut que le champ upload existe et qu'il ne soit pas vide.
- Si l'attribut
srcest défini, il doit faire référence à un fichier déposé dans le dossier/mediadu backend. - La valeur par défaut de l'attribut width est 400.
- La valeur par défaut de l'attribut height est 300.
- définition des couleursen hexa (ex: #FFFFFF = blanc)
Exemple:
<field type="imageeditor" name="fond" readonly="false" src="fond.png"/>
<field type="imageeditor" name="upload" readonly="false" upload="pj_simple"/>
<field type="imageeditor" name="color" readonly="false" backgroundColor="#FFFFFF" width="400" height="300"/>
Utilisateur
Type : user
Ce champ est une relation vers la table des utilisateurs du projet.
- Ce champ ne possède pas d'attribut spécifique à son fonctionnement.
- Le descripteur de cette relation est le nom et prénom.
- Ce champ est utilisable dans les notifications comme destinataire ou placeholder dans le corps de la notification.
Exemple:
<field type="user" name="utilisateur"/>
<field type="user" name="utilisateur" required="true"/>
Switch
Type : switch_button
Ce champ affiche un bouton switch (intérupteur).
| Attribut | Obligatoire | Commentaire | Valeur |
|---|---|---|---|
| blindMode | non | Zoom sur le composant en mobile | booléen |
Exemple:
<field type="switch_button" name="activation" default="true"/>
Checkbox
Type : checkbox
Ce champ affiche une case à cocher.
Exemple:
<field type="checkbox" name="activation" default="true"/>
Timestamp
Type : timestamp
Ce champ correspond à la date qui a été modifié ou créé sur une donnée de la page.
| Attribut | Obligatoire | Commentaire | Valeur |
|---|---|---|---|
| name | Non | Nom champ en base de donnée | updated_at / created_at |
- Si le nom de champ est
created_atil s'agit de la date de création de la donnée - Si le nom de champ est
updated_atil s'agit de la dernière date de modification de la donnée
Exemple:
<field type="timestamp" name="updated_at"/>
<field type="timestamp" name="created_at"/>
Champs complexes
Les champs complexes ont des fonctionnements particuliers et ne correspondent pas forcément à une colonne en base de données en base.
| Type | Description |
|---|---|
| Link | Champ d'une autre table liée |
| Image | Affiche une image statique |
| Agrégat | Affiche l’agrégation d'une colonne |
| Libellé | Affiche un texte statique |
| Séparateur | Affiche un séparateur horizontal |
| Menu | Affiche un lien vers un autre menu |
| Relation 1-n | Affiche un gestionnaire de relation simple |
| Relation n-n | Affiche un gestionnaire de relation multiple |
| Etat | Un bouton de téléchargement d'état |
| Géolocalisation | Ajoute à la page un gestionnaire de Géolocalisation |
Champ lié
Type : link
Un champ lié correspond à une colonne qui existe en base de données mais qui n'appartient pas à la table principale de la page.
| Attribut | Obligatoire | Commentaire | Valeur |
|---|---|---|---|
| table | Oui | Nom de la table en base de données | chaîne de caractères |
| column | Oui | Nom de la colonne en base de données | chaîne de caractères |
- Attention, la table du champ doit appartenir à une des tables jointes de la page.
- Le champ possède le même type de donnée que le champ d'origine.
- Le champ permet d'éditer les données d'une table jointe si l'attribut readonly est égale à false.
- Un champ link éditable NE DOIT PAS être caché.
- On ne PEUT PAS avoir de champ link éditables dans une page standard.
Exemple:
<field type="link" required="true" readonly="false" table="etapes" column="ref_etape" name="etapes_ref"/>
Image
Type : image
Ce champ affiche une image statique uploadée dans le backend du projet.
| Attribut | Obligatoire | Commentaire | Valeur |
|---|---|---|---|
| src | Oui | Nom du fichier | chaîne de caractères |
- Les images statiques doivent être déposées depuis le backend dans le répertoire media.
Exemple :
<field type="image" name="logo" src="total.jpg"/>
Agrégat
Type : aggregate
Un champ de type agrégat est un champ non éditable qui affiche l’agrégation d'une colonne.
| Attribut | Obligatoire | Commentaire | Valeur |
|---|---|---|---|
| aggregate | Oui | Nom de la fonction d'agrégagtion | avg / count / max / min / sum |
| column | Oui | Nom qualifié de la colonne d'agrégation | table.colonne |
Exemple:
<field type="aggregate" aggregate="sum" column="in_out.qte_entree_sortie" name="total_produit"/>
Libellé
Type : label
Champ vide qui affiche un libellé.
Exemple :
<label lg="12" align="left">REFERENCE</label>
<field type="label"/>
Séparateur
Type : separator
Champ vide qui affiche un séparateur (ligne horizontale).
Exemple :
<field type="separator"/>
Menu
Type : menu
Affiche un bouton permettant de naviguer vers une page dont la table est jointe.
Ce champ n'est pas pris en compte en mobile.
| Attribut | Obligatoire | Commentaire | Valeur |
|---|---|---|---|
| page | Oui | Nom de la page cible | chaîne de caractères |
Exemple :
<field type="menu" page="projets-lls"/>
Relation manager simple
Type : relation_1n
Ce champ affiche un gestionnaire de relation permettant de gérer des éléments associés à l'enregistrement par une relation simple.
| Attribut | Obligatoire | Commentaire | Valeur |
|---|---|---|---|
| page | Oui | Nom de la table étrangère | chaîne de caractères |
| name | Oui | Nom du relation manager | chaîne de caractères |
| origin | Non | Nom de la page d'origine | chaîne de caractères |
| buttons | Non | Boutons actifs du relation manager | chaîne de caractères |
- Attention, la page doit définir une relation vers la page d'origine.
- Si relation est obligatoire, la désassociation d'un élément provoque sa suppression.
- Il est possible de définir un relation manager à travers une relation indirecte via l'attribut
origin.
Liste des boutons: create,delete,attach,detach
Exemple:
<field type="relation_1n" origin="unites" page="dps" buttons="create,delete"/>
<field type="relation_1n" origin="unites" page="dps" buttons="attach,detach"/>
<field type="relation_1n" origin="unites" page="dps" buttons="create,delete,attach,detach"/>
Note : ce champ affiche un gestionnaire de relation qui permet de gérer les dps associées à une unité.
Relation manager multiple
Type : relation_multi
Ce champ affiche un gestionnaire de relation permettant de gérer des éléments associés à l'enregistrement à travers une page pivot.
| Attribut | Obligatoire | Commentaire | Valeur |
|---|---|---|---|
| page | Oui | Nom de la page étrangère | chaîne de caractères |
| pivot | Oui | Nom de la page standard pivot | chaîne de caractères |
| dependsOn | Oui | Nom de contrainte de clé | chaîne de caractères |
| name | Oui | Nom du relation manager | chaîne de caractères |
| origin | Non | Nom de la page d'origine | chaîne de caractères |
| checkboxgroup | Non | Affiche la relation sous forme de cases à cocher | booléen |
- La valeur par défaut de l'attribut checkboxgroup est false.
- Si l'attribut checkboxgroup est active, le champ possède aussi les attributs du champ checkboxgroup.
- Attention, la page pivot doit définir une relation vers la page d'origine et la page étrangère.
- Il est possible de définir un relation manager à travers une relation indirecte via l'attribut
origin. - Une contrainte de clé sert à filtrer les données de la page étrangère par rapport à une relation simple.
Exemple:
<field type="relation_multi" pivot="prestations" page="prestataires"/>
<field type="relation_multi" pivot="prestations" page="prestataires" dependsOn="entreprises"/>
Note : ce champ affiche un gestionnaire de relation qui permet de gérer les prestataires associés à une dps.
État
Type : etat
Bouton qui permet de générer un état avec le module de Business Intelligence à partir des données de la page.
| Attribut | Obligatoire | Commentaire | Valeur |
|---|---|---|---|
| path | Oui | Nom de l'état ou de la requête dans le module BI | chaîne de caractères |
| params | Oui | Paramètres de l'état ou de la requête | tableau d'objets JSON |
- Attention, l'état doit exister dans le module BI.
- L'attribut param permet de lier des champs de la page avec des alias de l'état BI.
- L'alias est celui du champ condition déclarée dans la requête en BI.
- Le champ est celui de la page qui sert de condition à la requête BI.
Exemple:
<field type="etat" path="état dps link" params="[{'alias':'dps.num_auto', 'field':'num_auto'}]" name="monetat"/>
Géolocalisation
Type : geolocation
Un champ géolocalisation permet de stocker une position ainsi que les informations correspondantes.
| Attribut | Obligatoire | Commentaire | Valeur |
|---|---|---|---|
| map | Non | Affiche sur le formulaire un lien vers l'affichage de la position sur une carte | Booléen |
| coordinates | Non | Affiche sur le formulaire web les coordonnées | Booléen |
| message | Non | Affiche sur le formulaire le message en cas d'erreur d'acquisition | Booléen |
| datetime | Non | Affiche sur le formulaire web la date/heure de la position | Booléen |
| button | Non | Affiche un bouton sur le l'application mobile pour récupérer la position | Booléen |
- Attention, sur la partie mobile uniquement le bouton d'acquisition est affiché
- Ce champ est représenté en base de données par quatre colonnes longitude, latitude, message et datetime
- L'attribut requis n'est pas pris en compte pour ce type de champ
- Il n'est pas possible de mettre une condition d'un déclencheur sur ce type de champ
Exemple:
<field type="geolocation" name="test_geolocalisation" map="true" coordinates="true" message="true" datetime="true"/>
Déclencheurs
Balise : triggers
Un champ de formulaire peut modifier les attributs d'autres champs en définissant un ou plusieurs déclencheur(s) défini(s) par une action et une condition (simple ou complexe).
Déclencheur
Balise : trigger
Permet de définir une action sur un champ ciblé en fonction d'une condition.
| Attribut | Obligatoire | Commentaire | Valeur |
|---|---|---|---|
| target | Oui | Nom du champ ou groupe de champ ciblé par l'action | chaîne de caractères |
| action | Oui | Action à effectuer sur la cible si la condition est validé | voir tableau ci-dessous |
| condition | Oui | Type de condition | voir tableau ci-dessous |
| operator | Non | Opérateur de la condition complexe | voir tableau ci-dessous |
| value | Non | Valeur brute de la condition complexe | chaîne de caractères |
| valueFrom | Non | Nom du champ à utilisé par la condition complexe | chaîne de caractères |
- Si l'attribut
conditionvautcustom, l'attributoperatoretvalueouvalueFromsont obligatoires.
Actions
| Nom | Description |
|---|---|
| show | Affiche un champ caché |
| hide | Cache un champ ou un groupe de champs |
| enable | Rend éditable un champ en lecture seule |
| disable | Désactive un champ éditable |
| require | Rend un champ requis |
| save | Sauvegarde le formulaire |
| geolocation | Enregistre une position |
- On ne peut pas cacher ou désactiver un champ requis en base de données.
- Seule l'action
hideest utilisable sur un groupe de champs. - L'action
saven'a pas de cible spécifique.
Exemple :
<trigger action="save" condition="checked"/>
Condition
| Nom | Description | |
|---|---|---|
| checked | Switch ou case à cocher activé | |
| unchecked | Switch ou case à cocher non activé | |
| empty | Champ vide | champ |
| filled | Champ non vide | |
| custom | Condition complexe |
Opérateurs
| Nom | Description |
|---|---|
| eq | égale |
| ne | différent |
| lt | strictement inférieur |
| gt | strictement supérieur |
| le | inférieur ou égale |
| ge | supérieur ou égale |
| before | avant une date |
| after | après une date |
| same | égale à une date |
| in | appartient à un ensemble de valeurs |
Exemple:
Déclencheur sur une case à cocher qui permet d'afficher un champ selon si la case est cocher ou pas
<col sm="12" md="12" lg="12">
<label>MON_LABEL</label>
<field type="checkbox" name="macheckbox"/>
<triggers>
<trigger target="champ2" action="show" condition="checked"/>
</triggers>
</col>
<col sm="12" md="12" lg="12">
<label>MON_LABEL</label>
<field type="text" name="champ2" hidden="true"/>
</col>
Déclencheur sur un radio groupe permettant de rendre un champ obligatoire ou pas selon la valeur sélectionnée
<col lg="4" sm="6" xs="12" actions="view,update">
<label lg="12" align="left">COMPLETE</label>
<field lg="12" type="radiogroup" name="complete" inline="true">
<radio value="oui">OUI</radio>
<radio value="non">NON</radio>
</field>
<triggers>
<trigger target="objet" action="require" condition="custom" operator="eq" value="non"/>
</triggers>
</col>
<col lg="12" sm="12" xs="12">
<label lg="12" align="left">OBJET</label>
<field lg="12" type="longtext" name="objet"/>
</col>
Déclencheur sur des cases à cocher permettant de cacher un groupe de champ selon la valeur sélectionnée
<col lg="4" sm="6" xs="12">
<label lg="12" align="left">CLIENT</label>
<field lg="12" type="checkbox" name="pro">
<checkbox value="pro">PRO</checkbox>
<checkbox value="particulier">PARTICULIER</checkbox>
</field>
<triggers>
<trigger target="market" action="hide" condition="custom" operator="in" value="particulier"/>
</triggers>
</col>
<row group="market">
<col lg="6" sm="6" xs="12">
<label lg="12" align="left">V_REF</label>
<field lg="12" type="text" length="150" name="v_ref"/>
</col>
<col lg="6" sm="6" xs="12">
<label lg="12" align="left">N_REF</label>
<field lg="12" type="text" length="150" name="n_ref"/>
</col>
</row>
Déclencheur sur un champ date permettant de rendre un champ en lecture seule selon la valeur d'un autre champ
<col lg="4" sm="6" xs="12">
<label lg="12" align="left">DATE_TRAVAUX</label>
<field lg="12" type="date" name="date_travaux" required="true"/>
</col>
<col lg="4" sm="6" xs="12">
<label lg="12" align="left">DATE_FINP</label>
<field lg="12" type="date" name="date_fin_prevue"/>
<triggers>
<trigger target="date_fin" action="disable" condition="custom" operator="eq" valueFrom="date_travaux"/>
</triggers>
</col>
<col lg="4" sm="6" xs="12">
<label lg="12" align="left">DATE_FIN</label>
<field lg="12" type="date" name="date_fin"/>
</col>
Déclencheur sur un champ case à cocher permettant de lancer une sauvegarde du formulaire si la case est cochée
<col lg="4" sm="6" xs="12" actions="update">
<label lg="12" align="left">VALIDATE</label>
<field lg="12" type="checkbox" name="validate">
<checkbox value="OK">OK</checkbox>
</field>
<triggers>
<trigger action="save" condition="checked"/>
</triggers>
</col>
Descripteur de page
Balise : descriptor
Le descripteur décrit comment une donnée est représentée dans les champs de type relation. Il est construit à partir de la concaténation de plusieurs colonnes séparées par un séparateur défini.
| Attribut | Obligatoire | Commentaire | Valeur |
|---|---|---|---|
| separator | Oui | Séparateur de la concaténation | chaîne de caractères |
- On peut définir une chaîne vide comme séparateur.
Attention : on ne peut pas utiliser un champ lié comme descripteur.
Colonne de descripteur
Balise : column
Colonne de concaténation du descripteur.
| Attribut | Obligatoire | Commentaire | Valeur |
|---|---|---|---|
| order | Non | Ordre dans la concaténation du descripteur | entier positif |
Listes
Balise : lists
Définit les différentes listes d'affichage d'une page : lg pour le web, sm pour les tablettes et xs pour les mobiles.
Liste
Balise : list
Définit une liste qui affiche les données de la ou les table(s) de la page pour une taille d'écran donnée.
| Attribut | Obligatoire | Commentaire | Valeur |
|---|---|---|---|
| type | Oui | Type d'affichage | lg / sm / xs |
- Si la liste sm ou xs n'est pas définie, la liste lg est affichée par défaut sur tablette et mobile.
Colonne de liste
Balise : column
Définit la colonne d'une liste de page.
| Attribut | Obligatoire | Commentaire | Valeur | |
|---|---|---|---|---|
| sortable | Non | Colonne sur laquelle on peut effectuer un tri | true / false | |
| searchable | Non | Colonne sur laquelle on peut effectuer une recherche | true / false | |
| size | Oui | Largeur de la colonne | nombre compris entre 1 et 12 | |
| lang | Oui | Libellé du titre de la colonne | lg / sm / xs | variable de langue |
| table | Non | Table de la colonne en base de donnée | chaîne de caractère |
- La valeur dans la balise est le nom de la colonne en base de données à afficher.
- Par défaut on est sur la table de la page mais on peut préciser une autre table jointe.
- La somme de la largeur des colonnes d'une liste doit être égale à 12.
- Une colonne avec une largeur à 0 n'est pas affichée mais peut être utile pour la recherche.
Vue
Balise : view
Définit la vue associée à une page, c'est-à-dire l'ordre, le groupement et le filtrage des données dans les listes et le formulaire d'une page.
Ordre de tri
Balise : orderby
Définit l'ordre d'affichage des données d'une page.
Attention : l'utilisation d'un champ lié peut avoir un gros impact de performance.
Colonne de tri
Balise : column
Définit un ordre de tri sur une colonne.
| Attribut | Obligatoire | Commentaire | Valeur |
|---|---|---|---|
| table | Non | Table de la colonne en base de données | chaîne de caractères |
| order | Oui | Ordre du tri : ascendant ou descendant | asc / desc |
| position | Non | Position dans l'ordre de tri | entier positif |
- La valeur de la balise correspond au nom de la colonne de tri en base.
- Pour trier les données d'une page sur une colonne d'une table jointe, il faut préciser l'attribut table.
Jointures
Balise : joins
Permet de joindre des tables à la page pour pouvoir utiliser leurs données dans la liste, le calendrier et le formulaire.
Jointure
Balise : join
Définit une jointure avec une table existante.
| Attribut | Obligatoire | Commentaire | Valeur |
|---|---|---|---|
| table | Oui | Nom de la table avec la clé étrangère | chaîne de caractères |
| otherTable | Oui | Nom de la table avec la clé primaire | chaîne de caractères |
- Attention, dans une page avec plusieurs tables, les jointures doivent être déclarées dans l'ordre.
- Les jointures de premier niveau sont implicites (inutile de les déclarer explicitement).
- Il est impossible de joindre deux fois la même table.
Exemple sur la page DPS :
<join table="taches" otherTable="dps"/>
<join table="dps" otherTable="unites"/>
<join table="unites" otherTable="entreprises"/>
Groupement
Balise : groupby
Permet de grouper les données des listes d'une page sur une ou plusieurs colonne(s).
Colonne de groupement
Balise : column
Colonne sur laquelle grouper les données des listes d'une page.
| Attribut | Obligatoire | Commentaire | Valeur |
|---|---|---|---|
| table | Non | Nom de la table de la colonne en base | chaîne de caractères |
| position | Non | Position dans le groupement si plusieurs champs | entier positif |
- La valeur de la balise correspond au nom de la colonne sur laquelle regrouper les données.
Variables de langue
Balise : langs
Définition des variables de langues de l'application.
| Attribut | Obligatoire | Commentaire | Valeur |
|---|---|---|---|
| fr | Oui | Traduction en français | chaîne de caractères |
| en | Non | Traduction en anglais | chaîne de caractères |
- Le contenu de la balise est le nom de la variable à appeler dans l'application.
- Ces variables sont utilisables dans les menus, les champs de formulaire et les listes.
- Attention pour afficher les caractères spéciaux il faut utiliser les code HTML décimaux (entity number) : https://www.freeformatter.com/html-entities.html
Exemple:
<lang fr="Référence du produit">Référence du produit</lang>
Changelog
Historique de la grammaire XML.
Version 1 (25/01/2017)
- Ajout de la balise
menupour définir le menu principal d'un projet.- Ajout de la balise
itempour définir des items de menu.
- Ajout de la balise
- Ajout de la balise
pagepour décrire le fonctionnement d'une page.- Ajout de la balise
formpour définir un formulaire (avec grille).- Ajout de la balise
labelpour créer des libellés de champ. - Ajout de la balise
fieldet des types "standard".
- Ajout de la balise
- Ajout des balises
lists,listetcolumnpour créer des listes.
- Ajout de la balise
Version 2
- Ajout des champs de type
linkpour afficher des colonnes étrangères. - Ajout de la balise
descriptorpour décrire les données d'une page.
Version 3
- Ajout de l'attribut
typesur les pages pour les modes "multi-tables".- Ajout de la balise
viewpour paramétrer la vue d'une page.- Ajout des balises
joinsetjoinpour définir des jointures. - Ajout de la balise
orderbypour définir un ordre de tri. - Ajout de la balise
groupbypour permettre le regroupement sur une ou plusieurs colonne(s). - Ajout des balises
conditionsetwherepour filtrer les données d'une page.
- Ajout des balises
- Ajout de la balise
Version 4 (12/01/2018)
- Ajout des champs de type
link_etatetlink_reqpour créer des boutons de génération d'états ou requêtes BI. - Ajout de l'attribut
autosyncsur les champs upload pour activer le téléchargement automatique. - Ajout des balise
api_clientsetapi_clientpour définir des client d'API. - Ajout du champ spécial de type
api_buttonpour gérer l'état d'un appel API avec un service tiers.
Version 5 (07/07/2019)
- Ajout des champs de type
qrcodepour gérer l'affichage et l'acquisition de QR codes. - Ajout des champs de type
barcode_1dpour gérer l'affichage et l'acquisition de codes barre 1D. - Ajout des champs de type
nfc_tagpour gérer l'affichage et l'acquisition de tags NFC.
Version 6 (13/03/2019)
- Ajout de nouveaux attributs sur les labels et les champs pour personnaliser l'alignement.
Version 7 (29/08/2019)
- Ajout des champs spéciaux
relation_multietrelation_1npour gérer les relations complexes.
Version 8 (03/10/2019)
- Ajout du champ spécial de type
export_buttonpour exporter les données d'une page sous forme de publipostage.
Version 9 (31/10/2019)
- Ajout de nouveaux attributs sur les
colet lesrowpour afficher des onglets dans les formulaires.
Version 10 (06/12/2019)
- Ajout d'options d'affichage sur les champs de type cases à cocher ou boutons radio.
Version 11 (21/02/2020)
- Ajout de trois nouveaux types de champ :
label,separatoretswitch_button. - Suppression d'un type de champ existant :
api_button(remplacé par les hooks). - Ajout d'une nouvelle balise
hookspermettant de définir rappels HTTP. - Ajout de nouveaux attributs sur la balise
api_clientpour gérer l'authentification avec OAuth2.
Version 12 (07/08/2020)
- Ajout de la balise
calendardans les pages - Ajout d'un nouveau type de champ
colorpickerdans les formulaires
Version 13 (26/10/2020)
- Ajout du champ
urldans le formulaire - Suppression du champ
export_button - Ajout de liens dans le tableau récap des champs
- Ajout de la description des champs manquants du tableau des champs standards
- Tableau récap des champs spéciaux de form avec liens
Version 14 (14/01/2021)
- Ajout d'un nouveau type de champ
imageeditordans le formulaire
Version 15 (15/02/2021)
- Ajout d'un nouvel attribut
buttonspour le champrelation_1ndans le formulaire
Version 16 (15/07/2021)
- Modification de l'attribut
hide_whenencontextpour définir le context d'une colonne dans le formulaire
Version 17 (09/08/2021)
- Ajout d'un nouvel attribut
devicepour afficher une page selon le support client - Ajout d'un nouvel attribut
redirectpour rediriger vers la liste après une sauvegarde du formulaire
Version 18 (22/09/2021)
- Ajout de l'attribut order aux webhooks + explication dans doc administrateur
Version 19 (12/10/2021)
- Ajout d'un nouveau type de champ address dans le formulaire
Version 20 (19/10/2021)
- Ajout d'un nouvel attribut
hiddenpour afficher ou cacher un champ dans le formulaire - Ajout d'un nouvel attribut
grouppour regrouper des lignes du formulaire sous le même libelé - Ajout d'un nouvel attribut
grouppour regrouper des colonnes du formulaire sous le même libelé
Version 21 (09/11/2021)
- Ajout d'un nouvel attribut
columnspour le champ radiogroup pour afficher les radios sur plusieurs colonnes - Ajout d'un nouvel attribut
columnspour le champ checkboxgroup pour afficher les cases à cocher sur plusieurs colonnes - Ajout d'un nouvel attribut
radiogrouppour le champ relation pour afficher sous forme de radiogroup - Ajout d'un nouvel attribut
checkboxgrouppour le champ Relation n-n pour afficher sous forme de checkboxgroup
Version 22 (10/11/2021)
- Ajout d'un nouveau type de champ checkbox dans le formulaire
- Ajout d'un nouvel attribut
presetpour pré remplir le champ d'un formulaire en fonction d'un autre champ - Ajout des
triggerspour les champs de formulaire
Version 23 (01/12/2021)
- Ajout d'une nouvelle action
savepour les déclencheurs de formulaire
Version 24 (31/03/2022)
- Modification de l'attribut
contextpour les colonnes de formulaire (renommer enactions+ prise en charge de plusieurs valeurs)
Version 25 (30/12/2022)
- Ajout d'un nouvel attribut
defaultViewaucalendar
Version 26 (25/04/2023)
- Ajout d'un nouveau type de champ geolocation dans le formulaire
- Ajout d'une nouvelle action
geolocationpour les déclencheurs de formulaire
