InseeFr / Lunatic

Library of questionnaire components
https://inseefr.github.io/Lunatic/
MIT License
20 stars 21 forks source link

Roundabout progression rework #1021

Closed Grafikart closed 3 months ago

Grafikart commented 4 months ago

A first rework for the roundabout #1017

ddecrulle commented 3 months ago

@nsenave Do you agree with this schema changed ? A brief summary:

  1. Definition of a variable to store progress, the name is defined in the Component:

    "progressVariable": "PROGRESS",
  2. Adding this variable as collected in the variables block:

  {
              "variableType": "COLLECTED",
              "name": "PROGRESS",
              "values": {
                  "PREVIOUS": [],
                  "COLLECTED": [],
                  "FORCED": [],
                  "EDITED": [],
                  "INPUTTED": []
              }
          }
  1. We remove the "expression" block in favor of the "item" block with the fields label, description, and disabled:

    "item": {
                  "label": {
                      "value": "\"Questions de \" || PRENOMS",
                      "type": "VTL"
                  },
                  "description": {
                      "value": "if AGE > 18 then \"Aller aux question destinées à \" || PRENOMS else PRENOMS || \" n'est pas majeur, il/elle n'a pas à répondre aux questions\"",
                      "type": "VTL"
                  },
                  "disabled": {
                      "value": "AGE < 18",
                      "type": "VTL"
                  }
              },
nsenave commented 3 months ago

Dans cette modélisation, on laisse tomber les expressions de partial/complete et on laisse Lunatic gérer cet aspect là c'est ça ?

Le mot "item" me paraît pas très clair, et il ressemble aux "items" du composant accordéon, mais je n'ai pas mieux à proposer, peut-être "summary"? C'est un détail en tt cas.

Ok pour le json, c'est simple c'est top

ddecrulle commented 3 months ago

L'expression VTL pour définir la variable progrès étaient vraiment très complexe et ne pouvait pas être générée. De ce fait on a choisit d'inclure cette logique dans lunatic :

Etat initial : progressVariable : null, Dès qu'on ouvre une itération : progressVariable: 0 (sauf si c'est égale à 1 on fait rien) Dès qu'on est à la dernière page et qu'on fait suivant (on retourne au rond Point) progressVariable: 1.

sonarcloud[bot] commented 3 months ago

Quality Gate Failed Quality Gate failed

Failed conditions
0.0% Coverage on New Code (required ≥ 80%)

See analysis details on SonarCloud