114 lines
3.1 KiB
Markdown
114 lines
3.1 KiB
Markdown
# 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" :
|
|
|
|
```yml
|
|
---
|
|
version: '1.0'
|
|
my_calculated_variable:
|
|
default:
|
|
type: jinja
|
|
jinja: '{{ return_no() }}'
|
|
```
|
|
|
|
Puis créons la fonction "return_no" :
|
|
|
|
```python
|
|
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 :
|
|
|
|
```yml
|
|
---
|
|
version: '1.0'
|
|
my_calculated_variable:
|
|
hidden: true
|
|
default:
|
|
type: jinja
|
|
jinja: '{{ return_no() }}'
|
|
```
|
|
|
|
C'est également vrai également si hidden est un calcul et que le résultat du calcul est `true`.
|
|
|
|
## 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.
|
|
|
|
## Variable dynamique avec une valeur calculée
|
|
|
|
Il est également possible de calculer [une variable d'une famille dynamique](../family/auto.md) à partir d'une variable standard :
|
|
|
|
```yml
|
|
---
|
|
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: variable
|
|
variable: rougail.my_variable
|
|
```
|
|
|
|
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".
|
|
|
|
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.
|
|
|
|
Dans ce cas, il faut explicitement demander le suffix et faire un traitement :
|
|
|
|
|
|
```yml
|
|
---
|
|
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
|
|
```
|
|
|
|
## 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é.
|