rougail/doc/fill/value.md

115 lines
3.1 KiB
Markdown
Raw Normal View History

2021-02-06 17:36:43 +01:00
# Valeur calculée de la variable
## Variable avec une valeur par défaut calculée
Créons une variable dont la valeur est retournée par la fonction "return_no" :
2022-11-03 22:17:43 +01:00
```yml
2023-10-12 08:17:30 +02:00
---
version: '1.0'
my_calculated_variable:
default:
type: jinja
jinja: '{{ return_no() }}'
2022-11-02 22:52:50 +01:00
```
2021-02-06 17:36:43 +01:00
Puis créons la fonction "return_no" :
2022-11-03 22:17:43 +01:00
```python
2021-02-06 17:36:43 +01:00
def return_no():
return 'no'
```
## Variable avec une valeur calculée
En ajoutant le paramètre "hidden" à "True" dans la variable précédente, l'utilisateur n'aura plus la possibilité de modifié la valeur. La valeur de la variable sera donc systématiquement calculée :
2022-11-03 22:17:43 +01:00
```yml
2023-10-12 08:17:30 +02:00
---
version: '1.0'
my_calculated_variable:
hidden: true
default:
type: jinja
jinja: '{{ return_no() }}'
2022-11-02 22:52:50 +01:00
```
2023-10-12 08:17:30 +02:00
C'est également vrai également si hidden est un calcul et que le résultat du calcul est `true`.
2021-02-06 17:36:43 +01:00
## Variable meneuse ou suiveuse avec valeur calculé
Une [variable suiveuse](../family/leadership.md) ne peut pas être calculé automatiquement.
Une [variable meneuse](../family/leadership.md) peut être calculé automatiquement.
Si la variable n'est pas multiple, il ne faut pas que le calcule retourne une liste.
2021-02-06 17:36:43 +01:00
## Variable dynamique avec une valeur calculée
2021-02-10 08:19:33 +01:00
Il est également possible de calculer [une variable d'une famille dynamique](../family/auto.md) à partir d'une variable standard :
2021-02-06 17:36:43 +01:00
2022-11-03 22:17:43 +01:00
```yml
2023-10-12 08:17:30 +02:00
---
version: '1.0'
suffixes:
type: string
description: Suffixes of dynamic family
multi: true
default:
- val1
- val2
my_variable:
type: string
description: My variable
default: val
dyn_:
type: dynamic
variable: rougail.suffixes
my_calculated_variable_dyn_:
2022-11-02 22:52:50 +01:00
type: string
2023-10-12 08:17:30 +02:00
description: My calculated variable
default:
type: variable
variable: rougail.my_variable
2022-11-02 22:52:50 +01:00
```
2023-10-12 08:17:30 +02:00
Dans ce cas, les variables dynamiques "rougail.dyn_.my_calculated_variable_dyn_" seront calculés à partir de la valeur de la variable "my_variable".
Que cela soit pour la variable "rougail.dynval1.my_calculated_variable_dyn_val1" ou "rougail.dynval2.my_calculated_variable_dyn_val2".
2021-02-06 17:36:43 +01:00
Par contre, il n'est pas possible de faire un calcul pour une seule des deux variables issues de la variable dynamique.
Si c'est ce que vous cherchez à faire, il faudra prévoir un traitement particulier dans votre fonction.
2023-10-12 08:17:30 +02:00
Dans ce cas, il faut explicitement demander le suffix et faire un traitement :
2021-02-06 17:36:43 +01:00
2022-11-02 22:52:50 +01:00
2022-11-03 22:17:43 +01:00
```yml
2023-10-12 08:17:30 +02:00
---
version: '1.0'
suffixes:
type: string
description: Suffixes of dynamic family
multi: true
default:
- val1
- val2
my_variable:
type: string
description: My variable
default: val
dyn_:
type: dynamic
variable: rougail.suffixes
my_calculated_variable_dyn_:
type: string
description: My calculated variable
default:
type: jinja
jinja: "{% if suffix == 'val1' %}value{% endif %}"
params:
suffix:
type: suffix
2021-02-06 17:36:43 +01:00
```
## Variable avec valeur calculée obligatoire
Par défaut les variables calculées ne sont pas des variables obligatoires.
Dans ce cas un calcul peut retourner "None" ou "", mais surtout un utilisateur peut spécifier une valeur nulle à cette variable. Dans ce cas le calcul ne sera plus réalisé.