Overhauled radio webgui: use websockets and fgcommands
[fg:toms-fgdata.git] / Docs / gui / props.js
1 var PropertyChangeListenerObjects = {
2   _ws: null,
3   _listeners: new Array()
4 };
5
6 var PropertyChangeListener = function( callback ) {
7   PropertyChangeListenerObjects._ws = new WebSocket('ws://' + location.host + '/PropertyListener');
8   PropertyChangeListenerObjects._ws.onopen = callback;
9   PropertyChangeListenerObjects._ws.onclose = function(ev) {
10     console.log("websocket closed");
11     PropertyChangeListenerObjects._ws = null;
12   };
13   PropertyChangeListenerObjects._ws.onmessage = function(ev) {
14 //    console.log("websocket message:" + ev.data);
15     try {
16       var node = JSON.parse(ev.data);
17       var cb = PropertyChangeListenerObjects._listeners[node.path];
18       for( var i = 0; i < cb.length; i++ )
19         cb[i](node);
20     } catch (e) {
21     }
22   };
23 };
24
25 var SetListener = function( path, callback ) {
26   var o = PropertyChangeListenerObjects._listeners[path];
27   if (typeof (o) == 'undefined') {
28     o = new Array();
29     PropertyChangeListenerObjects._listeners[path] = o;
30     PropertyChangeListenerObjects._ws.send(JSON.stringify({
31       command : 'addListener',
32       node : path
33     }));
34   }
35   o.push(callback);
36 };
37