Instructions de Boucle dans une Variable Dynamique (DynVar Loop Statement)

De YoWiki
Sauter à la navigation Sauter à la recherche

Introduction

Les Variables Dynamiques (DynVar) permettent de définir une valeur à partir d'une formulaire, contrairement aux variables de saisie pour lesquelles une valeur est fixée lors du remplissage d'un formulaire par exemple.

L'Instruction de Boucle (loop-statement) au sein d'une Variable Dynamique correspond à une syntaxe spécifique, à placer en première ligne de la formule d'une Variable Dynamique, et qui permet d'indiquer que, pour une variable de liste et une formule (SmartExpression) données, la formule doit être exécutée (calculée) autant de fois que d'éléments présents dans la liste.

Syntaxe

Il existe deux types d'instruction de boucle :

  • "map" qui permet de produire une liste à partir d'une liste existante (mapping), où chaque élement de la liste produite est le résultat d'une formule (une SmartExpression) ;
  • "reduce" qui permet de produire valeur unique (un nombre, une date, une chaîne de caractère…) à partir d'une liste existante, sur laquelle aura été appliqué une formule (une SmartExpression) sur chacun de ses éléments ;

Le Mapping

(coming soon)


  • Exemple de DynVar PARTNERS_POURCENT_LIST

Obtenir une liste, où pour chaque associé d'une liste ASSOCIES, on va calculer le pourcentage de part qui revient à chacun d'eux, sur un total de 5000 parts :

#map list ASSOCIES as ASSOCIE_ITEM
(ASSOCIE_ITEM.ACTIONS / 5000) * 100


Reduce

 
  • Exemple de DynVar IS_ANY_ASSOCIEE_NAMED_DAM

Obtenir une valeur booléenne, si pour une liste d'ASSOCIES, au moins un membre s'appelle "Damien" :

#reduce list ASSOCIES as ASSOCIE_ITEM, false as PREV :
PREV or ASSOCIE_ITEM.PRENOM == "DAMIEN"


  • Exemple de DynVar IS_ALL_PARTNERS_TEN_POURCENT

Obtenir une valeur booléenne, si pour une liste d'ASSOCIES, tous les membres ont plus de 500 parts :

#reduce list ASSOCIES as ASSOCIE_ITEM, true as PREV :
PREV and ASSOCIE_ITEM.ACTIONS > 500.0


  • Exemple de DynVar COUNT_PARTNERS_WITH_500_OR_MORE

Obtenir le nombre des associés qui ont au moins 500 parts :

#reduce list ASSOCIES as ASSOCIE_ITEM, 0 as PREV :
PREV + (ASSOCIE_ITEM.ACTIONS > 500.0 ? 1 : 0)


  • Exemple de DynVar AVERAGE_PARTNERS_YEARS_OLD

Obtenir la moyenne d'âge de tous les associés :

#reduce list ASSOCIES as ASSOCIE_ITEM, 0 as PREV :
PREV + (ASSOCIE_ITEM.AGE / ASSOCIES._COUNT)

(coming soon)