5.7.6 Liste des événements de changement d'état

Les événements ci-dessous concernent le changement d'état du document. Ils permettent de piloter la fenêtre de changement d'état.

La fenêtre de changement d'état est représentée dans les événements par l'objet interne correspondant.

Les écouteurs de ces événements doivent être ajoutés au widget document.

5.7.6.1 beforeDisplayTransition

5.7.6.1.1 Déclenchement

Cet événement est déclenché avant l'affichage de la fenêtre de changement d'état.

5.7.6.1.2 Éléments passés au callback

event
objet événement standard de jQuery,
documentObject
un objet document décrivant le document courant.
changeStateObject
objet transition décrivant la fenêtre de transition.

5.7.6.1.3 Annulable

Oui. Dans ce cas, la demande de transition est annulée.

5.7.6.1.4 Exemple

Cet exemple interdit les changement d'état administrateur (sans transition).

window.dcp.document.documentController("addEventListener",
    "beforeDisplayTransition",
    {
        "name": "preventTransition.changeState"
    },
    function preventTransition(event, documentObject, changeStateObject) {
        if (!changeStateObject.transition) {
            event.preventDefault();
            this.documentController("showMessage", {
                type : "error",
                "message" : "You cannot do change state without transition"
            });
        }
    }
);

5.7.6.2 afterDisplayTransition

5.7.6.2.1 Déclenchement

Cet événement est déclenché après l'affichage de la fenêtre.

5.7.6.2.2 Éléments passés au callback

event
objet événement standard de jQuery,
documentObject
un objet document décrivant le document courant.
changeStateObject
objet transition décrivant la fenêtre de transition.

5.7.6.2.3 Annulable

Non.

5.7.6.2.4 Exemple

Cet exemple affiche un message de confirmation au clic sur le bouton de validation et empêche l'action associée au bouton ok de ce lancer si l'utilisateur ne confirme pas.

window.dcp.document.documentController("addEventListener",
    "afterDisplayTransition",
    {
        "name": "afterDisplayTransition.changeState"
    },
    function afterDisplayTransition(event, documentObject, changeStateObject) {
        changeStateObject.$el.find(".dcpTransition-button-ok")
            .on("click", function displayConfirm(event) {
                if (!confirm("Are you sure ?")) {
                    changeStateObject.close();
                    event.preventDefault();
                    return false;
                }
            });
    }
);

5.7.6.3 beforeTransitionClose

5.7.6.3.1 Déclenchement

Cet événement est déclenché avant la fermeture de la fenêtre lorsque l'utilisateur a cliqué sur "fermer" ou s'il a confirmé la transition.

Dans le cas d'une transition confirmé, la requếte a déjà été exécutée.

5.7.6.3.2 Éléments passés au callback

event
objet événement standard de jQuery,
documentObject
un objet document décrivant le document courant.
changeStateObject
objet transition décrivant la fenêtre de transition.

5.7.6.3.3 Annulable

Oui. La fenêtre reste ouverte.

5.7.6.3.4 Exemple

Cet exemple affiche un message de confirmation au clic sur le bouton d'annulation et annule la fermeture si ce n'est pas confirmé.

window.dcp.document.documentController("addEventListener",
    "beforeTransitionClose",
    {
        "name": "beforeTransitionClose.changeState"
    },
    function beforeTransitionClose(event, documentObject, changeStateObject) {
        if (!confirm("Are you sure ?")) {
            event.preventDefault();
        }
    }
);

5.7.6.4 beforeTransition

5.7.6.4.1 Déclenchement

Cet événement est déclenché avant l'envoi de l'ordre de changement d'étape.

5.7.6.4.2 Éléments passés au callback

event
objet événement standard de jQuery,
documentObject
un objet document décrivant le document courant.
changeStateObject
objet transition décrivant la fenêtre de transition.

5.7.6.4.3 Annulable

Oui. La fenêtre reste ouverte mais la requête n'est pas envoyée.

5.7.6.4.4 Exemple

Cet exemple affiche un message de confirmation au clic sur le bouton de confirmation et laisse la fenêtre ouverte si ce n'est pas confirmé.

window.dcp.document.documentController("addEventListener",
    "beforeTransition",
    {
        "name": "beforeTransition.changeState"
    },
    function beforeTransition(event, document, transition) {
        if (!confirm("Are you sure ?")) {
            event.preventDefault();
        }
    }
);

5.7.6.5 failTransition

5.7.6.5.1 Déclenchement

Cet événement est déclenché après le retour de la demande de changement d'état si celle-ci échoue.

5.7.6.5.2 Éléments passés au callback

event
objet événement standard de jQuery,
documentObject
un objet document décrivant le document courant.
changeStateObject
objet transition décrivant la fenêtre de transition.
message

objet décrivant le message d'errer. L'objet contient les propriétés suivantes :

title
titre du message,
errorCode

code d'erreur du message. Les plus courants sont :

  • offline : requête impossible pour cause de réseau,
  • CRUD0211 : un attribut n'est pas au bon format et n'a pas pu être sauvé,
  • CRUD0212 : une contrainte n'est pas respectée.

Les autres identifiants d'erreurs peuvent être trouvés dans la documentation de l'API HTTP.

message
contenu textuel du message,
htmlMessage (optionnel)
contenu html du message.

5.7.6.5.3 Annulable

Non.

5.7.6.5.4 Exemple

Cet exemple ferme la fenêtre de changement d'état et ouvre le document en édition en affichant l'erreur à l'utilisateur si le changement d'état échoue (uniquement dans le cas d'une erreur autre que réseau).

window.dcp.document.documentController("addEventListener",
    "failTransition",
    {
        "name": "failTransition"
    },
    function failTransition(event, documentObject, changeStateObject, error) {
       if (error.type !== "offline") {
            changeStateObject.close();
            this.documentController("showMessage", {
                "type" : "error",
                "title" : error.title || "erreur",
                "message" : error.htmlMessage || error.message
            });
            this).documentController("fetchDocument", {
                "initid": documentObject.initid,
                "viewId" : "!defaultEdition"
            });
       }
    }
);

5.7.6.6 successTransition

5.7.6.6.1 Déclenchement

Cet événement est déclenché après le retour de la demande de changement d'état si celle-ci a réussi.

5.7.6.6.2 Éléments passés au callback

event
objet événement standard de jQuery,
documentObject
un objet document décrivant le document courant.
changeStateObject
objet transition décrivant la fenêtre de transition.

5.7.6.6.3 Annulable

Non.

5.7.6.6.4 Exemple

Cet exemple affiche un message à l'utilisateur en cas de transition effectuée avec succès.

window.dcp.document.documentController("addEventListener",
    "successTransition",
    {
        "name": "successTransition"
    },
    function successTransition(event, documentObject, changeStateObject) {
        this.documentController("showMessage", {
            "type" : "info",
            "message" : "Well done !"
        });
    }
);
×