⚙️ ajoute la gestion des questions conditionnelles
Une variable question peut maintenant avoir un champ applicable si ou non applicable si.pull/248/head
parent
ee417af687
commit
7c935544cb
|
@ -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,
|
||||
|
|
|
@ -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
|
|
@ -29,4 +29,4 @@
|
|||
dégradation mineure: non
|
||||
dégradation majeure: non
|
||||
valeur attendue: 3000
|
||||
variables manquantes: []
|
||||
variables manquantes: []
|
Loading…
Reference in New Issue