From Ape Wiki
Contents |
[edit] Les évènements
Le framework javascript de APE fonctionne suivant un principe d'évènements. Les évènments permettent d'exécuter des fonctions javascripts. Il existe deux type d'évènments :
- Les évènements générique envoyé a chaque reception de raw ou envoie de commandes
- Les évènments spéciaux envoyé a des moments précis.
Consulter la documentation pour la liste des évènements : http://ape-project.org/fr/docs/client/events/
Les évènements générique son nommé suivant la convetion suivante
[edit] Lors de l'envoie d'une commande
cmd_nom du raw
Par exemple le nom de l'évènement du raw send (envoie d'un message) serra :
cmd_send
[edit] Lors de la réception d'un raw :
raw_nom du raw
Par exemple le nom de l'évènement du raw login (connexion au serveur) serra
raw_login
[edit] Arguments transmis aux évènements
[edit] Pour les raws générique
Un seul argument est tranmis, il s'agit de la réponse du serveur.
Note : Lorsque les raw reçu sont destiné a un pipe particulier le premier argument est un objet pipe (du core de ape) et le deuxième argument contient la réponse du serveur.
Exemple d'un raw data contenant un objet pipe :
{ "raw":"DATA", "time":"1236537199", "datas":{ "pipe":{ "casttype":"uni", "properties":{ "name":"tdtsu" }, "pubid":"a2b91f0fb15c3017d994a66ddf0ba4aa" }, "sender":{ "properties":{ "name":"tdtsu" }, "pubid":"a2b91f0fb15c3017d994a66ddf0ba4aa" }, "msg":"Test" } }
Exemple d'intercepetion d'un raw data :
Ape_core.add_event('raw_data',function(pipe,raw){ alert('Message "'+raw.datas.msg+'" reçu sur le pipe '+pipe.name); });
[edit] Pour les commandes génériques
Une liste des arguments envoyé au serveur est transmises.
Note : Lorsque les raw reçu sont envoyé depuis pipe le premier argument est un objet pipe (du core de ape) et les autres arguments contient les informations transmises aux serveur.
Exemple d'une commande send envoyant un message sur un pipe :
SEND&8adf1b41ebd6d3e689981a2e215698d7&6fddca8abfc5abd493571ae7b1c97e63&Test%20envoie%20de%20message&1236865505896 \__/&\______________________________/&\______________________________/&\__________________________/&\____________/ Raw Sessid Pubid du pipe Message Anticache
Exemple d'interception de la commande send :
Ape_core.add_event('cmd_send',function(pipe,sessid,pubid,message){ alert('Le message '+message+' a était envoyé sur le pipe '+Ape_core.get_pipe(pubid).name); //Note : L'obtention de la propriétés name du pipe peut être fait plus facilement a l'aide de pipe.name });
[edit] Pour les raws spéciaux
Consultez la documentation : http://ape-project.org/fr/docs/client/events/
[edit] Intercepter/Créer des évènements
Un objet javascript Ape_client vous permet d'intercepter les évènements envoyés par le core de APE. Cet objet peut être utilisé quelque soit votre libraire javascript (mootools, jquery, dojo, prototype, etc...)
Deux méthodes sont disponibles pour envoyer ou intercepter un évènement
- add_event (pour intercepter un évènement)
- fire_event (pour créer un évènement)
[edit] Intercepter un évènement
var client = new Ape_client(); client.load({ 'domain':'ape-project.org', 'server':'ape.ape-project.org', 'complete': ape_loaded //Fonction a appellé une fois le core de APE chargé. 'scripts': [ 'http://ape-project.org/APE_JSF/mootools.js' 'http://ape-project.org/APE_JSF/ape_core.js' ] }); /*** * Fonction appellé une fois le core de APE chargé. */ function ape_loaded(ape_core){ client._core.start(); //Interception de l'évènement initialized (évnement envoyé une fois le client APE identifé au serveur APE) client.add_event('initalized',function(){ alert('Le client APE est connecté au serveur APE'); }); }
Il est possible d'ajouter autant d'exécutions de fonctions sur un même évènement. L'ordre d'exécution des fonctions est l'ordre d'ajout.
[edit] Créer un évènement
function ape_loaded(ape_core){ //Connexion au serveur APE client._core.start(); //Intercepte l'évènement initialized //Appele d'une fonction créant l'interface graphique de l'application client.add_event('initalized',create_ui); }); function create_ui (){ /* [...] Code permettant de créer l'interface graphique */ //Créer un évènement personnalisé qui est envoyé après que APE soit initalisé en transmettant deux arguments client.fire_event('ui_created',['argument_1','argument_2']); }


