rougail/doc/condition/condition.md
2023-11-13 21:47:15 +01:00

3.5 KiB

Les propriétés calculées

Les propriétés calculées permettent d'ajouter ou de supprimer des propriétés à une variable ou une famille 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 :

---
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 :

---
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 à la condition de type jinja. Il est possible d'ajouter des paramètres à la fonction

La cible 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 :

<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 :

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 :

<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 :

- condition:
  - name: hidden_if_in
    source: condition
    optional: true
    apply_on_fallback: false
    param:
    - text: 'yes'
    - text: 'maybe'
    target:
    - text: my_variable