Clusters conditionnels

Les clusters peuvent également être enveloppés dans un élément de condition. Si l'expression de l'élément de condition ne fait référence à aucune des questions sur la même page, le cluster est un cluster conditionnel statique. Cela est dû au fait qu'il peut être déterminé, avant l'affichage des pages, d'afficher ou non le cluster.

Si des informations sur les membres du foyer ont été regroupées, vous pouvez souhaiter ajouter une nouvelle page contenant d'autres informations personnelles (par exemple, la personne est-elle enceinte ?). Un nouvel attribut isPregnant doit être ajouté à l'entité Person pour stocker ces informations :

Figure 1. Attribut Personne supplémentaire
<xsd:element name="Person">
  <xsd:complexType>
    ...
    <xsd:attribute name="isPregnant" type="IEG_BOOLEAN"/>

Cette question ne s'applique évidemment qu'aux femmes. Par conséquent, le cluster peut être encapsulé dans une condition et ne s'affiche que si l'expression de condition est évaluée "true". La nouvelle page Détails de la personne supplémentaire peut être définie comme suit :

Figure 2. Cluster statique conditionnel
<question-page id="AboutTheClientContinued" entity="Person" ...>
  <condition expression="Person.gender==&quot;SX2&quot;">
    <cluster>
      <question id="isPregnant" mandatory="true">
          <label id="IsPregnant.Label">
              Etes-vous enceinte ?
          </label>
          <help-text id="IsPregnant.HelpText">
              Etes-vous enceinte ?
          </help-text>
      </question>
    </cluster>
  </condition>
</question-page>

Si l'une des questions référencées dans l'expression de condition se trouve sur la même page, le cluster devient un cluster conditionnel dynamique. Cela signifie que le l'affichage du cluster est activé ou désactivé lorsque l'utilisateur modifie les réponses aux autres questions de la page. Cette fonction dynamique d'IEG nécessite d'activer JavaScript dans le navigateur. Les expressions de cluster conditionnel dynamique peuvent ne pas faire référence aux fonctions personnalisées, car les expressions sont évaluées sans appel serveur.

Sans modification du schéma du DS, il s'agit d'un cluster conditionnel dynamique si l'exemple ci-dessus est modifié afin que le cluster conditionnel soit défini sur la même page que la question Sexe.

Figure 3. Cluster conditionnel dynamique
<question-page id="AboutTheClient" entity="Person" ...>
...
  <cluster>
    <title id="DetailsCluster.Title">
      <![CDATA[Détails personnels]]>
    </title>
...
    <question id="gender" mandatory="true">
      <label id="Gender.Label">
        <![CDATA[Sexe :]]>
      </label>
    </question>
...
  <condition expression="Person.gender==&quot;SX2&quot;">
    <cluster>
      <question id="isPregnant" mandatory="true">
        <label id="IsPregnant.Label">
        <![CDATA[Etes-vous enceinte ?]]>
        </label>
      </question>
    </cluster>
  </condition>
</question-page>

La question relative à la grossesse apparaît ou disparaît de façon dynamique lorsque vous modifiez la valeur associée au sexe. Le comportement dynamique sur une page peut être déclenché par des champs de texte, des champs de date, des cases à cocher, des boutons d'option et des éléments de sélection. Le comportement dynamique ne peut pas être déclenché par la réponse à une question à sélection multiple ou une matrice de questions en raison des restrictions de la syntaxe de l'expression.

Il convient de noter qu'un seul niveau de condition n'est autorisé dans un cluster. Par exemple, les clusters conditionnels ne peuvent pas être imbriqués dans d'autres conditions. L'expression de condition pour une condition de cluster dynamique peut faire référence à des questions sur la même page qui sont elles-mêmes définies dans un cluster conditionnel dynamique. Les clusters deviennent alors dépendants en cascade.