Scripts client
Le client riche est capable d’exécuter des scripts en local. Ceux-ci sont utilisés afin de mettre en place des macros et des procédures de test ainsi que pour préremplir certains écrans avec des valeurs basées sur le contexte courant.
Les scripts sont présents dans le répertoire Config/Scripts
, dans un
fichier correspondant à la tâche à laquelle il est associé. Par exemple
les scripts de la tâche CRM06
sont situés dans Config/Scripts/CRM06.script
.
Syntax
Les scripts sont stockés dans le répertoire Config/Scripts/
. Chaque
fichier script contient les méthodes pour une tâche spécifique.
OnFieldChange :
{
// The function OnFieldChange is executed when a field has the property ScriptOnValidate set to "true"
// We check whether the page containing the field is ATTESTAT ...
if (CURRENT_DATAPAGE_ID = "ATTESTAT")
{
// ... and whether the datafield of the modified field is the end date
if (CURRENT_DATAFIELD_ID = "ADRDOS.ATTESTAT.FM_PAGE_END_DATE")
{
// We check whether that start date has been filled in
datestr = ADRDOS.ATTESTAT.FM_PAGE_START_DATE (toString)
if (datestr.length < 2)
{
// If the field is not filled-in, display a message to the user
showMessage("Merci de remplir le champ 'Début incapacité' !");
}
// If the timespan is larger than 300 days, we enable the INCAPACITELONGUEDUREE checkbox
if (ADRDOS.ATTESTAT.FM_PAGE_END_DATE - ADRDOS.ATTESTAT.FM_PAGE_START_DATE > 300)
{
ADRDOS.ATTESTAT.INCAPACITELONGUEDUREE = true;
}
}
}
return;
}
Variables
- Le langage n’est pas typé.
- Toutes les variables sont globales. Aucune variable ne peut être locale.
- Les variables sont déclarées à l’assignation par l’opérateur
=
.
Counter = 0
PI = 3.14159
Name = "Mattet"
Prénom = "Pierre"
Birthdate = 23/06/1984
L’exemple ci-dessus illustre la déclaration de quelques variables. Notez que les variables peuvent contenir des caractères accentués.
Comme expliqué plus haut, les variables n’ont pas de type, l’interpréteur de script utilise le contexte dans lequel la variable est utilisée pour décider quelles fonctions sont appliquées.
Expressions conditionnelles
Les expressions conditionnelles disponibles sont le si :
if
(...)
{
...
}
else
{
...
}
.
La condition doit être précisée entre parenthèses. Si plusieurs instructions doivent être exécutés dans une des deux branches, des accolades doivent être ajoutée pour cette branche.
if (A = B)
{
// Instructions
}
else if (A = C)
{
// Instructions
}
else
{
// Instructions
}
Les opérateurs de comparaisons sont =,
!=,
<,
>,
<=
et >=
:
A = B // Tests if A and B are equal
A != B // Tests if A and B are different
A > B // Tests if A is bigger than B
A < B // Tests if A is smaller than B
A >= B // Tests if A is bigger or equal than B
A <= B // Tests if A is smaller or equal than B
Les conditions peuvent être combinés par les opérateurs booléens and
et or
.
A = 3 or A = 7 // Tests if A equals 3 or 7
A >= 3 and A <= 7 // Tests if A is bigger than 3 and smaller than 7
A >= 3 or (A = 0 and B = 0)
A >= 3 || (A = 0 && B = 0)
Boucles
Le langage de script SAINet permet d’utiliser deux types de boucle : for
et while
.
For :
for (i = 1 .. n)
{
// Instructions
}
While:
i = 1
while (i <= n)
{
// Instruction
i++
}
Il est possible de combiner l’utilisation d’une boucle for
avec l’utilisation
de la fonction eval
afin d’itérer sur une liste de champs et récupérer
les valeurs d’un écran complet :
Total = 0.0;
for (i = 1 .. 9)
{
Num = i (toString);
val = eval("ADRDOS.SITUATION_FIN.REVENU0" :: Num);
Total += val;
}