Outils pour utilisateurs

Outils du site


fr:manuals:freemedforms:xmlforms:itemscript

Rendre les formulaires dynamiques

  • Vous pouvez rendre vos formulaires dynamiques et intelligents grâce à l'utilisation de scripts.
  • Le language de script est basé sur le standard ECMAScript. [Extrait de la documentation anglaise de Qt] Microsoft's JScript, and Netscape's JavaScript are also based on the ECMAScript standard. For an overview of ECMAScript, see the ECMAScript reference. If you are not familiar with the ECMAScript language, there are several existing tutorials and books that cover this subject, such as JavaScript: The Definitive Guide.
  • Les scripts sont exécutés à différents moments de l'édition et le codage XML vous permet de définir au mieux vos besoins.

Code XML

  • Le bloc XML d'un item de formulaire se présente de la sorte :
      <Item>
        ...
        <Script>
          <OnLoad>
            ...
          </OnLoad>
          <PostLoad>
            ...
          </PostLoad>
          <OnValueChanged>
            ...
          </OnValueChanged>
        </Script>
      </Item>
  • Attention vous ne devez pas utiliser le caractère “<“ à l'intérieur de vos fichiers XML sous peine de les rendre illisibles. Vous devez utiliser l'équivalent HTML, à savoir ”&lt;”. Il existe une alternative: vous pouvez inclure des fichiers de script dans lesquels vous n'êtes soumis à aucune limitation.
    <file type="script" name="onload">./scripts/xx/script.js</file>
  • Il existe plusieurs sortes de scripts :
    • les scripts exécutés au moment du chargement des formulaires patient : onload ;
    • les scripts exécutés après le chargement des formulaires patient : postload ;
    • les scripts exécutés à chaque modification de valeur d'un item : onValueChanged ;
    • Ces différents scripts ne sont pas supposés retourner de valeur.
  • Techniques de mise en place :
    • Nous recommandons l'utilisation des scripts externalisés (sauvegardés dans un fichier propre) ;
    • La structure de l'arborescence des formulaires devrait comprendre un répertoire scripts puis un répertoire pour chaque langage xx représentant tous les langages.
    • Exemple:
      • subforms/
        • scripttest/
          • scripts/
            • fr/
            • en/
            • xx/
    • Les noms de fichiers doivent terminer par *.js
    • Nous recommandons d'utiliser des artifices créant des espaces de nom dans vos scripts afin d'éviter les conflits (cf infra).
    • Utilisez le tag file après le bloc de description pour inclure un fichier js comprenant toutes les fonctions utilisées.
    • Dans le formulaire, contentez-vous d'appeler les fonctions enregistrées.
    • Exemple:
        <formdescription>
          ...
        </formdescription>
        <file type="script" name="onload">./scripts/xx/myglobalscripts.js</file>
        ...
        <Item>
          ...
          <script>
            <onValueChanged>my.name.space.onItemValueChanged();</onValueChanged>
          </script>
        </Item>
    • N'utilisez pas les fonctions signal/slot de Qt pour connecter les changements de valeur d'un item, laissez le logiciel décider quand il convient d'appeler ces fonctions.
    • Ne déclenchez pas de calculs trop intensifs pour que l'utilisateur ne perde pas la main sur l'application.

Règles d'écriture des scripts

fr/manuals/freemedforms/xmlforms/itemscript.txt · Dernière modification: 2016/08/17 02:46 par Jérôme Pinguet