diff -r f5da343b9b63 -r 68cee1366b9c svghmi/gen_index_xhtml.xslt --- a/svghmi/gen_index_xhtml.xslt Thu Oct 17 15:48:09 2019 +0200 +++ b/svghmi/gen_index_xhtml.xslt Sat Oct 19 01:23:30 2019 +0200 @@ -198,10 +198,6 @@ ", - frequency: - - , - args: [ @@ -236,8 +232,15 @@ - ] - + ], + + element: document.getElementById(" + + "), + + + + } , @@ -319,7 +322,43 @@ function dispatch_value(index, value) { - console.log("dispatch_value("+index+", "+value+")"); + let widgets = subscribers[index]; + + + + if(widgets.size > 0) { + + for(let widget of widgets){ + + let idxidx = widget.indexes.indexOf(index); + + if(idxidx == -1){ + + throw new Error("Dispatching to widget not interested, should not happen."); + + } + + let d = widget.dispatch; + + if(typeof(d) == "function" && idxidx == 0){ + + return d.call(widget,value); + + }else if(typeof(d) == "object" && d.length >= idxidx){ + + d[idxidx].call(widget,value); + + }/* else dispatch_0, ..., dispatch_n ? */ + + /*else { + + throw new Error("Dunno how to dispatch to widget at index = " + index); + + }*/ + + } + + } }; @@ -357,7 +396,7 @@ let i = 0; - console.log("Recv something."); + //console.log("Recv something."); try { @@ -365,7 +404,7 @@ if(hash_int != dv.getUint8(i)){ - throw new Error("Hash doesn't match") + throw new Error("Hash doesn't match"); }; @@ -375,7 +414,7 @@ - console.log("Recv something GOOD."); + //console.log("Recv something GOOD."); @@ -383,7 +422,7 @@ let index = dv.getUint32(i, true); - console.log("Recv something index is "+index); + //console.log("Recv something index is "+index); i += 4; @@ -722,16 +761,30 @@ - - 10 - - - 10 - - - 5 - - - 5 + + + frequency: 5, + + dispatch: function(value) { + + + + this.element.textContent = String(value); + + + + Display widget as a group not implemented + + + }, + + + + frequency: 10, + + + + frequency: 5, +