From Ape Wiki

Jump to: navigation, search

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

[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']);
}