🚧 En construction
Sommaire
Scripts utiles
Nous allons voir ici quelques scripts utiles pour vous aider lorsqu’ils deviennent incontournables. En effet, de nombreux concepts permettent de reppousser la limite avant que vous ayez besoin de scripter. Mais il arrive des situations où vous ne pourrez pas faire autrement.
📌Remarque
L’équipe de développement de la solution reste à l’écoute pour intégrer des outils pour continuer de repousser la limite avant l’utilisation de script.
Transformation de liaison simple
Pour une liaison, il est possible de transformer la valeur de la source avant de la transmettre à la cible. Pour cela, on ajoute l’évènement onReadTransform
à la source. Par défaut, elle ne fait que transférer la valeur de la source à la cible.
return context.value;
context.value
est la valeur de la source. Le mot clé return
permet de renvoyer la valeur transformée.
📌Remarque
Tout ce qui est après lereturn
sera ignoré.
Exemple 1 : Transformation de booléen en texte
Ici, on transforme un booléen en texte. Si la valeur est true
, on renvoie green
, sinon red
.
if (context.value) {
return 'green';
} else {
return 'red';
}
ou bien en ternaire
return context.value ? 'green' : 'red';
Exemple 2 : Transformation de nombre en texte
Ici, on transforme un nombre en texte. Si la valeur est 0
, on renvoie zero
, sinon not zero
.
if (context.value === 0) {
return 'zero';
} else {
return 'not zero';
}
ou bien en ternaire
return context.value === 0 ? 'zero' : 'not zero';
On a utilisé ici une condition simple avec l’opérateur ===
pour comparer les valeurs. Voir plus bas pour les opérateurs de comparaison.
Exemple 3 : Transformation de nombre en couleur en fonction d’un seuil
Ici, on va essayer de transformer la valeur en texte en fonction de sa valeur par rapport à un seuil : ‘red lorsque la valeur est inférieure à 10
, ‘green’ lorsque la valeur est supérieure.
if (context.value < 10) {
return 'red';
} else {
return 'green';
}
ou bien en ternaire :
return context.value < 0 ? 'red' : 'green';
On a utilisé ici une condition simple avec l’opérateur <
pour comparer les valeurs. Voir plus bas pour les opérateurs de comparaison.
Exemple 4 : Transformation de nombre en couleur par plage de valeurs
Ici, on va transformer la valeur en texte en fonction de sa valeur par rapport à une plage de valeurs : ‘red’ lorsque la valeur est inférieure à 10
, ‘orange’ lorsque la valeur est entre 10
et 20
, ‘green’ lorsque la valeur est supérieure à 20
.
if (context.value < 10) {
return 'red';
} else if (context.value < 20) {
return 'orange';
} else {
return 'green';
}
On évitera le ternaire ici pour plus de lisibilité.
Exemple 5 : Inversion de booléen
Ici, on va transformer un booléen en son inverse.
return !context.value;
Nous avons utilisé ici l’opérateur !
pour inverser la valeur du booléen. Voir plus bas pour les opérateurs logiques.
Transformation de liaison multiple
Dans certain cas, une valeur doit être obtenu à partir de plusieurs sources. Pour cela, nous n’allons pas utiliser l’évènement onReadTransform
. En effet, il se déclenchera que pour une liaison donnée alors que nous voulons obtenir une valeur à partir de plusieurs liaisons.
Pour cela, nous allons utiliser l’évènement onPropertyChange
de l’acteur. Cet évènement se déclenche à chaque fois qu’une propriété ou une additionnelle de l’acteur change. Nous allons donc devoir surveiller les propriétés/additionnelles de l’acteur, liées à la source pour mettre à jour la propriété cible.
Imaginons le cas suivant : nous avons deux sources source 1 * qui apportera une première valeur booléenne et *source 2 qui apportera une seconde valeur. Nous voullons qu’un acteur soit visible si les deux valeurs sont vraies.
Pour cela, nous allons ajouter deux additionnelles à l’acteur cible : source1
et source2
. Nous allons ensuite les liées à leur source respective. Enfin, nous allons ajouter le script suivant à l’évènement onPropertyChange
de l’acteur cible.
if (context.propertyPath === 'additionals.source1' ||
context.propertyPath === 'additionals.source2') {
this.properties.visible = this.additionals.source1 && this.additionals.source2;
}
Il faut remarquer plusieurs choses ici :
context.propertyPath
contient le chemin de la propriété qui a changé. Cela permet d’être sur que lorsque le script se déclenche, c’est bien une des deux sources qui a changé.this
fait référence à l’acteur courant.this.additionals.source1
etthis.additionals.source2
permettent de récupérer la valeur des sources.- l’opérateur
&&
permet de vérifier que les deux valeurs sont vraies pour rendre l’acteur visible. this.properties.visible
permet de rendre l’acteur visible ou non.