Structure d'un état BI
Un état BI est la représentation des données d'une requête du module BI sous forme de document PDF ou de de page >HTML. La mise en forme est décrite à travers un fichier XML dont la grammaire est expliquée
Structure principale
Les deux éléments structurants principaux sont :
- l'imbrication des lignes et des colonnes
- la déclaration de tableaux HTML
D'autres éléments permettent de mettre en page le contenu.
Lignes et colonnes
- L’élément de plus haut niveau est la row.
- La balise col est toujours dans une balise row.
- La balise row peut être imbriquée dans des balises col à l’infini.
- L’attribut md s’utilise comme dans le XML d'un projet : c’est une fraction de la largeur du conteneur sur 12.
Attention, l’alternance row → col → row → col ... doit être respectée.
Exemple
<row>
<col md="10" class="right">
<label>Seuil mini :</label>
</col>
<col md="2">
<field type="requete" champ="Seuil minimum" />
</col>
</row>
Tableaux
Les tableaux s'utilisent comme des tableaux HTML classiques :
On peut utiliser les attributs colspan et rowspan sur les cases de tableau pour fusionner les cellules :
Exemple
<table style="border-collapse: collapse;">
<tr>
<td rowspan="2" style="padding: 10px !important;">
<field type="qrcode" champ="Code barre" />
</td>
<td colspan="2" style="font-size: 36px; font-weight: bold; padding: 25px;">
<field type="requete" champ="Nom du produit" />
</td>
</tr>
<tr>
<td style="font-size: 24px; font-weight: bold">
<field type="requete" champ="Etat du produit" />
</td>
<td style="font-size: 24px; font-weight: bold">
<field type="requete" champ="Catégorie" />
</td>
</tr>
</table>
Mise en page
Il existe plusieurs éléments de mise en page :
- separator : trace une ligne horizontale, marque une séparation
- line_break : saut de ligne forcé
- page_break : saut de page forcé
- gras : mise en gras du texte dans la balise
Note: beaucoup d’autres possibilités de mise en page sont disponible par l’utilisation de CSS.
Exemple
<content>
<!-- Contenu de la page -->
<row>
<col md="12">
<gras>Texte en gras</gras>
</col>
</row>
<separator />
<row>
<col md="12">
<label>Texte 1</label>
<line_break />
<label>Nouvelle ligne ici</label>
</col>
</row>
<page_break />
<row>
<col md="12">
<gras>Texte en gras NOUVELLE PAGE</gras>
</col>
</row>
</content>
Eléments dynamiques
Il est possible de faire appel à des éléments dynamiques provenant de la requête associée à l’état.
Ces éléments sont appelés via la balise field.
Exemple
<field type="requete" champ="Nom du produit" />
Attributs
- type (obligatoire)
- champ (nom du champ de la requête)
- url (les images statiques se trouvent à la racine du répertoire media dans le backend)
Types
- image :
- suivi de l’attribut champ, si c’est une image dynamique (uploadée dans le formulaire)
- suivi de url si c’est une image statique
- qrcode : pour afficher un qrcode
- requete : pour afficher n'importe quel champ de la requête autre qu’une image ou un qrcode
Sous-requêtes
C’est un nouveau concept dans la refonte des états : on peut appeler une sous-requête dans un état.
Les conditions sont les suivantes :
- la sous requête doit avoir une condition paramétrable
- la requête de l’état courant doit avoir un champ qui correspond à la condition de la sous requête
Il existe 2 types d’affichage :
- le mode table (qui nécessite de définir un tableau)
- le mode row (qui nécessite de définir une structure classique)
Note: les balises dynamiques ont un nom différent pour les différencier des fields de la requête de l’état.
Exemple 1
<request type="table" name="PRESTAS" param="dps.num_auto" value="dps.num_auto" operator="=">
<theader>
<th>Nom</th>
<th>Prénom</th>
<th>Heures</th>
</theader>
<trow>
<td><request_field type="requete" champ="prestataires.nom" /></td>
<td><request_field type="requete" champ="prestataires.prenom" /></td>
<td><request_field type="requete" champ="prestations.heures_prevues" /></td>
</trow>
</request>
Exemple 2
<request type="row" name="PRESTAS-BIS" param="dps.num_auto" value="dps.num_auto" operator="=">
<row>
<col md="2">
<label style="font-weight: bold;">Nom</label>
</col>
<col md="4">
<request_field type="requete" champ="prestataires.nom" />
</col>
<col md="2">
<label style=" font-weight: bold; color: #34495e">Prénom</label>
</col>
<col md="4">
<request_field type="requete" champ="prestataires.prenom" />
</col>
</row>
<row>
</row>
<row>
<col md="2">
<label style=" font-weight: bold; color: #34495e">Heures</label>
</col>
<col md="3">
<request_field type="requete" champ="prestations.heures_prevues" />
</col>
</row>
</request>
