Le composant Table
Il s'agit du composants le plus complexe de Lunatic.
Comme tous les composants, il a les attributs communs des composants. Il dispose en plus d'un attribut positioning
pouvant être égale à "HORIZONTAL" ou "VERTICAL".
Il y a deux types de composants Table
Lunatic :
- les
Table
classique qui représente un tableau avec un nombre de cellules fixes - les
Table
dynamique qui représente un tableau dynamique avec un nombre de ligne affiché de façon dynamique.
Dans le dernier cas, il y a un attribut lines
qui définit le minimum et le maximum de lignes.
"lines": { "min":1, "max":10 }
Le JSON fournit dans ce cas contient toutes les lignes possibles du tableau. C'est au composant Lunatic d'afficher dynamiquement les lignes, en affichant à l'état initial du composant autant de lignes que l'attribut min définit le minimum de ligne.
Dans tous les cas, le composant Table contient un attribut cells
qui est une matrice défiisant les cellules du tableau à afficher.
Les cells
Une cellule peut être soit:
- un composant
- une cellule simple avec un label
Dans le dernier cas :
- si la cellule est une entête de colonne, il y a un attribut
headerCell
, exemple :"headerCell":true
- si il y a une fusion de colonne/ligne, il y a un attribut
colspan
/rowspan
, exemple :"colspan":2
{
"id" : "j4nwc63q",
"componentType" : "Table",
"mandatory" : false,
"positioning" : "HORIZONTAL",
"label" : "\"label de la question\"",
"declarations": [...],
"conditionFilter" : "if ((not(cast(READY,integer) <> 1) )) then \"normal\" else \"hidden\"",
"bindingDependencies": [ ... ],
"cells" :
[
[
{ "headerCell" : true, "colspan" : 2, "label" : ""},
{ "headerCell" : true, "label" : "Percentage"}
],
[
{ "rowspan" : 2, "label" : "Frozen products", "value" : "A"},
{ "label" : "Ice creams", "value" : "A1"},
{ "componentType" : "InputNumber", ...}
],
[
{ "label" : "Jasper Beardly", "value" : "A2" },
{ "componentType" : "InputNumber", ...}
],
[
{ "rowspan" : 3, "label" : "Meat", "value" : "B"},
{ "label" : "Bacon", "value" : "B1"},
{ "componentType" : "InputNumber", ...}
],
[
{ "label" : "Pork chop", "value" : "B2"},
{ "componentType" : "InputNumber", ... }
],
[
{ "label" : "Chicken", "value" : "B3"},
{ "componentType" : "InputNumber", ...}
],
[
{ "label" : "Compote", "value" : "C"},
{ "label" : "Powersauce", "value" : "C1"},
{ "componentType" : "InputNumber", ...}
],
[
{ "colspan" : 2, "label" : "Other", "value" : "D"},
{ "componentType" : "InputNumber", ...}
]
]
}
Résultat en composant Lunatic du Table
classique :
label de la question
Percentage | ||
---|---|---|
Frozen products | Ice creams | InputNumber |
Jasper Beardly | InputNumber | |
Meat | Bacon | InputNumber |
Pork chop | InputNumber | |
Chicken | InputNumber | |
Compote | Powersauce | InputNumber |
Other | InputNumber |