5.1 Fonctionnement du widget de document
5.1.1 Introduction
Ce chapitre détaille le fonctionnement du widget de document. Il explicite les différents éléments le composant et les relations entre ces éléments.
5.1.2 Architecture
Le client document est composé des éléments suivants :
- le
documentController
: cet élément permet d'interagir avec le document, - le
document
: l'objet document est un objet interne qui contient les informations sur le document en cours, - les
attribut
: l'objet attribut est un objet interne qui contient les informations sur un attribut, - les
widget
: l'objet widget est un objet interne, indépendant du document, qui permet de représenter une partie de celui-ci (type d'attribut, élément d'interface (menu, propriétés, etc.). Chaque widget est autonome et peut-être utilisé en dehors du cadre du document pour construire des interfaces.
5.1.3 Cinématique
Ce chapitre présente la cinématique des éléments fondamentaux du widget de document.
La légende des schémas suivants est :
- rond noir : point de départ,
- flèche noire : communication entre deux éléments,
- rectangle gris : vie d'un élément,
- rond vert : événement pouvant être annulé,
- rond bleu : événement ne pouvant pas être annulé.
5.1.3.1 Initialisation
Ce schéma montre le comportement du document lors du chargement d'un nouveau widget document.
Le point de départ (Initialisation du widget) est soit déclenché automatiquement (chargement d'une nouvelle page), soit à la demande du widget document.
Le controller
se charge d'effectuer toutes les opérations nécessaires au rendu du document
(initialisation des objets internes, récupération des données et représentation des données).
En cas d'erreur, un message est affiché à l'utilisateur.
Les événements déclenchés sont les suivants :
-
1
:attributeReady
- à chaque attribut rendu un événement est déclenché.
-
2
:ready
(document) - lorsque le document est rendu un événement est déclenché.
5.1.3.2 Sauvegarde du document
La sauvegarde du document est déclenchée soit via une action utilisateur (clic sur un menu) ou via le controller
(dans ce cas le schéma commence à l'émission de l'événement 2
).
La sauvegarde serveur peut échouer pour plusieurs raisons :
- problème serveur : dans ce cas un message est affiché à l'utilisateur et le processus de sauvegarde est annulé,
- contrainte non respectée : dans ce cas un message est affiché à l'utilisateur et les attributs concernés sont mis en évidence.
Les événements déclenchés sont les suivants :
-
1
:actionClick
- cet événement est déclenché au clic sur le menu et peut être annulé. Dans ce cas, la suite de la procédure est annulée sans avertissement à l'utilisateur.
-
2
:beforeSave
- cet événement est déclenché quelle que soit la méthode de sauvegarde demandée et peut être annulé. Dans ce cas, la suite de la procédure est annulée sans avertissement à l'utilisateur.
-
3
:constraint
- cet élément n'est pas un événement en tant que tel (voir chapitre sur les contraintes). Les contraintes sont déclenchées pour chaque attribut du document. En cas d'annulation, le processus de sauvegarde est annulé et un message est affiché à l'utilisateur et sur l'attribut concerné.
-
4
:validate
- cet événement est déclenché une fois les contraintes analysées. En cas d'annulation, la suite de la procédure est annulée sans avertissement à l'utilisateur.
-
5
:afterSave/close
- ces événements sont déclenchés une fois le retour des données du serveur et l'analyse de ces données faite. Cet événement n'est pas annulable.
-
6
:attributeReady
- à chaque attribut rendu cet événement est déclenché.
-
7
:ready
- lorsque le document est rendu cet événement est déclenché.
5.1.3.3 Changement de document
Le changement de document peut-être déclenché soit via le menu, via des liens internes ou via le controller
(dans
ce cas le schéma commence à l'émission de l'événement 1).
Le changement de document peut échouer pour :
- problème serveur : dans ce cas un message est affiché à l'utilisateur et le processus de changement de document est annulé.
Les événements déclenchés sont les suivants :
-
1
:beforeClose
- cet événement est déclenché (dans le contexte de l'ancien document) avant le changement de document (fetchDocument). En cas d'annulation le processus de changement est annulé sans avertissement à l'utilisateur.
-
2
:attributeReady
- à chaque attribut rendu cet événement est déclenché.
-
3
:ready
(document ready) - lorsque le document est rendu cet événement est déclenché.
Attention : dans le cas d'un document avec onglets, cet événement arrive avant que l'onglet par défaut ne soit complètement affiché.
Les événements
attributeReady
des attributs de l'onglet arrivent après leready
du document.
5.1.3.4 Suppression de document
La suppression d'un document est une suppression logique : mise à la corbeille. Un document supprimé reste visible mais n'est plus modifiable.
La suppression d'un document peut-être déclenchée soit via le menu soit via le controller
(dans
ce cas le schéma commence à l'émission de l'événement 2
).
Cette opération est la seule conduisant à la suppression de l'objet interne document. Celui-ci est automatiquement réinstancié une fois la suppression terminée et le document supprimé est ensuite affiché.
Les événements déclenchés sont les suivants :
-
1
:actionClick
- cet événement est déclenché au clic sur le menu et peut être annulé. Dans ce cas, la suite de la procédure est annulée sans avertissement à l'utilisateur.
-
2
:beforeDelete
- cet événement est déclenché quelle que soit la méthode de suppression demandée et peut être annulé. Dans ce cas, la suite de la procédure est annulée sans avertissement à l'utilisateur.
-
3
:afterDelete/close
- ces événements sont déclenchés une fois le retour des données du serveur et l'analyse de ces données faite. Cet événement n'est pas annulable.
-
4
:attributeReady
- à chaque attribut rendu cet événement est déclenché.
-
5
:ready
(document) - lorsque le document (supprimé) est rendu cet événement est déclenché.
5.1.3.5 Changement d'une valeur (via l'interface)
l'appel à la contrainte se fait après le changement de la valeur de l'attribut, la contrainte ne permet donc que d'afficher un message (et ne peut en aucun cas empêcher la saisis de la valeur. Néanmoins, l'enregistrement sur le serveur pourra être interdit en cas de contrainte non respectée.
Les événements déclenchés sont les suivants :
-
1
:change
- cet événement est déclenché à chaque fois qu'un attribut est modifié.
-
2
:constraint
- cet élément n'est pas événement en tant que tel, voir chapitre sur les contraintes. En cas d'annulation, un message est affiché sur l'attribut concerné.
5.1.3.6 Changement d'une valeur (controller)
l'appel à la contrainte se fait après le changement de la valeur de l'attribut, la contrainte ne permet donc que d'afficher un message (et ne peut en aucun cas empêcher la saisis de la valeur. Néanmoins, l'enregistrement sur le serveur pourra être interdit en cas de contrainte non respectée.
Les événements déclenchés sont les suivants :
-
1
:change
- cet événement est déclenché à chaque fois qu'un attribut est modifié.
-
2
:constraint
- cet élément n'est pas événement en tant que tel, voir chapitre sur les contraintes. En cas d'annulation, un message est affiché sur l'attribut concerné.