il faut intégrer les 2 script pour pouvoir communiquer avec les widgets depuis une page parents vers les widget qu'elle contient:
<script type="text/javascript" src="js/intergadget_communication.js"></script>
<script type="text/javascript" src="js/openapp.js"></script>
pour envoyer des données UNIQUEMENT: intégrer ceci dans une fonction
var message = {
from : "uniqueID", //publisher (string)
to : null, //receivers (array)
object : "test", //message object (string)
type_send : "text", // type of data send (string)
type_receive : [], //type of data receive (array)
data : "bonjour" //content of the message
};
gadgets.openapp.publish({
event: "select",
type: "namespaced-properties",
message: message
});
message.from : l'identifiant de l'envoyeur. Pas indispensable pour juste envoyer un message
message.to : un array avec la liste des id des destinataires. Si null tous les widgets traitent le message.
message.object : l'objet du message, permet de savoir quelle action faire avec le message grace à la fonction intergadget_communication.subscriber_callback
message.type_send: le type de données envoyées.
message.type_receive : le type de données que peut recevoir l'envoyeur. pas indispensable pour juste un envoi
message.data : le contenu du message (text, json object, xml...)
gadgets.openapp.publish : envoie le message à tous les receveurs.
pour obtenir la liste des receveurs potentiels et envoyer un message (ex : les données paratgées par le widget sesame):
intégrer ceci dans une fonction :
//obtenir la liste des receveurs
intergadget_communication.init("uniqueID", ["sesame object"], []);
gadgets.openapp.connect(intergadget_communication.subscriber_callback);
intergadget_communication.receivers.length = 0;
intergadget_communication.publish(null, "sesame object", "info all", null);
setTimeout(function() {
//console.log(intergadget_communication.receivers);
var tmp = receivers[0].split("!!");
var to = tmp[0]; // l'identifiant du premier receveur
intergadget_communication.publish(to, "sesame object", "gadget_sesame", {"decimalPosition":"10.684708333333333 +41.268750000000004","position":"00 42 44.330 +41 16 07.50","canonicalName":"M 31","isObject":"true","name":"m31"}); // envoit le message au premier receveur.
}, 300);
intergadget_communication.init : créer un receveur avec un id unique, le type de données qu'il envera et le type de données qu'il peut recevoir.
gadgets.openapp.connect : fonction callback quand un message est reçu
intergadget_communication.publish(to, type_send, type_receive, data) : publie un message :
-
to : null donc tout le monde est concerné par le message
-
type_send : le type de données qui est envoyée ou le sera. (on veut connaitre les widgets qui peuvent gérer des "sesame object")
-
type receive : vide
-
data : le contenu du message. ici null
un settimeout pour laisser le temps à tout le monde de répondre.
intergadget_communication.receivers : array de tous les receveurs qui acceptent des données du type "sesame object" [idWidget1!!titreWidget1,idWidget2!!titreWidget2]
intergadget_communication.subscriber_callback permet d'attribuer une action a un type de message.objet
--
CamilleSimon - 2014-04-09