⚙️ ajoute la gestion des questions conditionnelles

Une variable question peut maintenant avoir un champ applicable si ou non applicable si.
pull/248/head
Johan Girod 2018-06-05 18:55:34 +02:00
parent ee417af687
commit 7c935544cb
3 changed files with 33 additions and 12 deletions

View File

@ -133,27 +133,27 @@ let fillVariableNode = (rules, rule, filter) => parseResult => {
}
let variable = findRuleByDottedName(parsedRules, dottedName),
variableIsCalculable = variable.formule != null,
variableHasFormula = variable.formule != null,
variableHasCond = variable['applicable si'] != null || variable['non applicable si'] != null,
situationValue = evaluateVariable(situation, dottedName, variable),
needsEvaluation = variableIsCalculable && situationValue == null,
needsEvaluation = (variableHasCond || variableHasFormula) && situationValue == null,
parsedRule = needsEvaluation
? evaluateNode(cache, situation, parsedRules, variable)
: variable,
// evaluateVariable renvoit la valeur déduite de la situation courante renseignée par l'utilisateur
explanation = parsedRule,
nodeValue =
situationValue != null
situationValue != null
? situationValue // cette variable a été directement renseignée
: variableIsCalculable
: variableHasCond || variableHasFormula
? parsedRule.nodeValue // la valeur du calcul fait foi
: null, // elle restera donc nulle
missingVariables =
nodeValue != null // notamment si situationValue != null
? {}
: variableIsCalculable
? parsedRule.missingVariables
: { [dottedName]: 1 }
missingVariables = nodeValue != null ? {} :
{
...(needsEvaluation ? parsedRule.missingVariables : {}),
...(!situationValue ? { [dottedName]: 1 } : {}),
}
cache[cacheName] = rewriteNode(
node,
nodeValue,

View File

@ -0,0 +1,21 @@
- nom: enfants
- nom: nombre enfants
applicable si: enfants
question: Combien d'enfants avez vous ?
par défaut: 4
- nom: famille nombreuse
test: question conditionnelle
formule: nombre enfants > 3
exemples:
- nom: question posée
situation:
enfants: oui
variables manquantes: ['nombre enfants']
valeur attendue: null
- nom: question non posée
situation:
enfants: non
variables manquantes: []
valeur attendue: false

View File

@ -29,4 +29,4 @@
dégradation mineure: non
dégradation majeure: non
valeur attendue: 3000
variables manquantes: []
variables manquantes: []