SkodgeeTeam / skodgee

SKodgee Obviously Designed for Generation Enhanced Efficiently
0 stars 1 forks source link

groupe et variable optionnelles sous conditions #3

Open herveheritier opened 3 years ago

herveheritier commented 3 years ago

Ce serait pratique de pouvoir conditionner le caractère optionnel d'une variable ou d'un groupe en fonction de la valeur d'une autre variable.

C'est déjà faisable en utilisant la directive if dans le squelette, mais ça serait un vrai plus si on pouvait ne pas voir dans le formulaire les variables pour lesquelles les conditions ne sont pas remplies... et qu'elles n'apparaissent que quand les conditions sont remplies ; ça veut dire que le formulaire doit être "recalculé" à chaque fois qu'une variable qui participe à ces conditions est modifiée.

Pas facile mais certainement utile ; ça permet de ne pas surcharger le formulaire, on ne voit que ce qui est nécessaire et de comprendre qu'il y a des dépendances entre les variables sans aller voir le code du squelette.

SkodgeeTeam commented 3 years ago

Le recalcul du formulaire a déjà été implanté pour prendre en compte le champ onchange d'une variable. Quand page.js détecte un changement de valeur, il émet un message variableChangePropagation qui va déclencher la fonction skeleton.resolveParametricOptions puis en retour le message afterVariableChanged est renvoyé à page.js qui recalcul le formulaire.

Donc pour répondre au besoin, il faut 1) ajouter dans le dictionnaire la possibilité d'ajouter une condition qui va dépendre d'autres variables et 2) ajouter dans page.js le contrôle de la condition quand elle est présente. Attention à ne pas implanter de eval mais bien un contrôle basé sur déclaration d'une instance de fonction ; un truc du genre let result = Function("use strict";return (${condition}))()