Affichage des données en lecture seule

Parfois, les réponses à certaines questions doivent être affichées pour l'utilisateur de sorte qu'elles ne puissent pas être modifiées. C'est déjà le cas dans les pages récapitulatives où les utilisateurs peuvent examiner les réponses et utiliser le bouton Précédent ou éditer les liens afin de modifier ces réponses.

Sur une page de questions, un attribut booléen en lecture seule peut être défini sur true pour indiquer que toutes les questions qui s'y trouvent ne peuvent pas être éditées.

Il existe un mécanisme plus sophistiqué : les attributs d'expression en lecture seule peuvent être utilisés sur différents éléments de script (sections, tous types de page, clusters, questions et questions de liste). Si l'expression est définie sur true, cela s'applique à toutes les questions contenues dans l'élément. Sous sa forme la plus simple, l'expression est définie sur "true" si l'élément doit être absolument en lecture seule. Sur une page récapitulative, il en résulte que les liens d'ajout, d'édition et de suppression ne sont pas affichés.

En cas d'expression en lecture seule définie pour le cluster, les éléments de question et de script de question de liste, l'élément de script est ensuite activé ou désactivé, et non plus disponible en lecture seule, si l'une des questions référencées dans l'expression se trouve sur la même page que l'élément de script. Cela signifie que les questions seront activées et désactivées si l'utilisateur modifie les réponses aux autres questions de la page. Si l'expression en lecture seule d'un cluster référence une question sur la même page, toutes les questions contenues dans le cluster sont activées et désactivées. Cette fonction dynamique d'IEG nécessite d'activer JavaScript dans le navigateur. Les expressions permettant d'activer et de désactiver dynamiquement les questions peuvent ne pas faire référence aux fonctions personnalisées, car les expressions sont évaluées sans appel serveur.

Les expressions en lecture seule dynamiques peuvent également faire référence à des questions sur la même page qui se sont activées et désactivées dynamiquement. Cette opération crée une dépendance en cascade entre les questions. Une attention particulière doit être prise lors de la définition des expressions avec des dépendances en cascade car IEG ne tient pas compte du fait que les questions référencées dans l'expression en lecture seule sont activées ou non. IEG ne tient compte que de la valeur de la question. Cette situation peut être déroutante pour l'utilisateur car l'élément qui contrôle l'activation et la désactivation d'une questions peut ne pas être clairement déterminé.

Si l'attribut de magasin de données possède une valeur lorsqu'une question est affichée, il s'affiche, même si la question est initialement désactivée. La question peut alors être activée par l'utilisateur et l'utilisateur peut modifier la réponse. Si la question est désactivée, la valeur qu'elle possédait initialement est rétablie. Lorsqu'une page est soumis, l'attribut de magasin de données n'est pas mis à jour, à moins que la question ne soit activée. Par conséquent, si la page est réaffichée, la valeur d'origine de l'attribut de données de magasin de données est réaffichée.

Il n'est pas possible de marquer une question obligatoire si elle contient également une expression en lecture seule dynamique sur la question elle-même ou l'un de ses éléments parents.

L'activation et la désactivation dynamiques d'éléments de script ne sont pas prises en charge sur les pages de relation.

Les informations regroupées en boucles peuvent s'afficher dans les pages récapitulatives à l'aide de listes, mais il est également possible d'utiliser cette structure de liste sur des pages standard sans qu'il soit nécessaire d'indiquer une expression en lecture seule dans l'un des éléments qui enveloppe la liste. Les liaisons ne sont pas autorisées et constituent l'unique différence avec les listes récapitulatives.

Il est également possible de créer un script entier en lecture seule. Par exemple, cela peut être utile si un assistant social doit analyser un script sans pouvoir modifier aucune réponse. Le script est défini en lecture seule via IEGRuntimeAPI en définissant un indicateur en lecture seule sur l'exécution du script, comme indiqué ci-dessous :

Figure 1. Définition de l'indicateur en lecture seule de l'exécution d'un script
...
//Définir l'indicateur en lecture seule.
IEGRuntime runtimeAPI = new IEGRuntime();
IEGScriptExecutionID runtimeExecID = new IEGScriptExecutionID();
runtimeExecID.executionID = execution.getExecutionID();
IEGReadOnlyFlag readOnlyFlag = new IEGReadOnlyFlag();
readOnlyFlag.readOnlyFlag = true;
runtimeAPI.setReadOnlyFlag(runtimeExecID, readOnlyFlag);
...