135 lines
3.5 KiB
Markdown
135 lines
3.5 KiB
Markdown
# Les propriétés calculées
|
|
|
|
Les propriétés calculées permettent d'ajouter ou de supprimer des propriétés à une [variable](../variable/README.md) ou une [famille](../family/README.md) suivant le contexte.
|
|
|
|
Nous allons nous concentrer ici sur la proprété `hidden`, mais ce qui est dit est vrai pour toutes les propriétés.
|
|
|
|
## Une propriété calculée de type variable
|
|
|
|
Une variable peut donc être calculé via la résultat d'une autre variable.
|
|
Attention, cette autre variable doit obligatoirement être de type `boolean` :
|
|
|
|
|
|
```yml
|
|
---
|
|
version: '1.0'
|
|
condition:
|
|
type: boolean
|
|
my_variable:
|
|
hidden:
|
|
type: variable
|
|
variable: rougail.condition
|
|
```
|
|
|
|
Si la valeur de la variable "rougail.condition" est `True` alors la variable "rougail.my_variable" est cachée.
|
|
|
|
## Une propriété calculée de type jinja
|
|
|
|
Il est possible d'écrire la condition en Jinja :
|
|
|
|
```yml
|
|
---
|
|
version: '1.0'
|
|
condition:
|
|
default: 'do not hide!'
|
|
my_variable:
|
|
hidden:
|
|
type: jinja
|
|
jinja: |
|
|
{% if rougail.condition and rougail.condition == "hide!" %}
|
|
true
|
|
{% else %}
|
|
false
|
|
{% endif %}
|
|
```
|
|
|
|
Dans ce cas la variable est cachée si la valeur de la variable "rougail.condition" est `hide!` et elle n'a pas caché pour tout autre valeur.
|
|
Attention toujours prendre en considération que "rougail.condition" peut être égale à `None`.
|
|
|
|
Il est possible d'ajouter des [paramètres](../param/README.md) à la condition de type `jinja`.
|
|
Il est possible d'ajouter des paramètres à la fonction
|
|
|
|
La [cible](../target/README.md) de la condition est ici "my_variable".
|
|
|
|
Donc ici la variable est caché à l'utilisateur si la variable "condition" est à True (le paramètre).
|
|
|
|
## Un condition avec plusieurs paramètres
|
|
|
|
Il est également possible de mettre plusieurs paramètre :
|
|
|
|
```xml
|
|
<variables>
|
|
<variable name="condition"/>
|
|
<variable name="my_variable"/>
|
|
</variables>
|
|
|
|
<constraints>
|
|
<condition name="hidden_if_in" source="condition">
|
|
<param>yes</param>
|
|
<param>maybe</param>
|
|
<target>my_variable</target>
|
|
</condition>
|
|
</constraints>
|
|
```
|
|
|
|
En YAML :
|
|
|
|
```yml
|
|
variables:
|
|
- variable:
|
|
name: condition
|
|
- variable:
|
|
name: my_variable
|
|
constraints:
|
|
- condition:
|
|
- name: hidden_if_in
|
|
source: condition
|
|
param:
|
|
- text: 'yes'
|
|
- text: 'maybe'
|
|
target:
|
|
- text: my_variable
|
|
```
|
|
|
|
## Une condition optionnelle
|
|
|
|
Il est possible de définir une condition avec une variable source qui n'existe pas dans toutes les contextes.
|
|
|
|
Dans ce cas, on met la condition en "optionnelle".
|
|
|
|
Si la variable source existe, la condition s'applique.
|
|
|
|
Si la variable source n'existe pas :
|
|
|
|
- si le nom fini en _if_in (par exemple hidden_if_in), l'action est forcée sans condition (les cibles sont hidden)
|
|
- si le nom fini en _if_not_in (par exemple hidden_if_not_in), la condition est totalement ignorée
|
|
|
|
Ces deux comportements peuvent être changé à tout moment avec l'attribut "apply_on_fallback". Dans ce cas :
|
|
|
|
- si la valeur de "apply_on_fallback" est "True", l'action est forcée sans condition
|
|
- si la valeur de "apply_on_fallback" est "False", la condition est totalement ignorée
|
|
|
|
Exemple :
|
|
|
|
```xml
|
|
<condition name="hidden_if_in" source="condition" optional="True", apply_on_fallback="False">
|
|
<param>yes</param>
|
|
<param>maybe</param>
|
|
<target>my_variable</target>
|
|
</condition>
|
|
```
|
|
|
|
En YAML :
|
|
|
|
```yml
|
|
- condition:
|
|
- name: hidden_if_in
|
|
source: condition
|
|
optional: true
|
|
apply_on_fallback: false
|
|
param:
|
|
- text: 'yes'
|
|
- text: 'maybe'
|
|
target:
|
|
- text: my_variable
|
|
```
|