svghmi/gen_index_xhtml.ysl2
branchsvghmi
changeset 2839 f4dd234faa11
parent 2838 459bf80d3f46
child 2840 e588f25e6c74
equal deleted inserted replaced
2838:459bf80d3f46 2839:f4dd234faa11
   466     template "widget[@type='Button']", mode="widget_defs" {
   466     template "widget[@type='Button']", mode="widget_defs" {
   467     }
   467     }
   468     template "widget[@type='Toggle']", mode="widget_defs" {
   468     template "widget[@type='Toggle']", mode="widget_defs" {
   469         |     frequency: 5,
   469         |     frequency: 5,
   470     }
   470     }
   471     template "widget[@type='Change']", mode="widget_defs" {
   471     template "widget[@type='Switch']", mode="widget_defs" {
   472         |     frequency: 5,
   472         param "hmi_element";
       
   473         | frequency: 5,
       
   474         | dispatch: function(value) {
       
   475         |     for(let choice of this.choices){
       
   476         |         if(value != choice.value){
       
   477         |             choice.elt.setAttribute("style", "display:none");
       
   478         |         } else {
       
   479         |             choice.elt.setAttribute("style", choice.style);
       
   480         |         }
       
   481         |     }
       
   482         | },
       
   483         | init: function() {
       
   484         |     // Hello Switch
       
   485         | },
       
   486         | choices: [
       
   487         const "regex",!"'^(\"[^\"].*\"|\-?[0-9]+)(#.*)?$'"!;
       
   488         foreach "$hmi_element/*[regexp:test(@inkscape:label,$regex)]" {
       
   489             const "literal", "regexp:match(@inkscape:label,$regex)[2]";
       
   490         |     {
       
   491         |         elt:document.getElementById("«@id»"),
       
   492         |         style:"«@style»",
       
   493         |         value:«$literal»
       
   494         |     }`if "position()!=last()" > ,`
       
   495         }
       
   496         | ],
   473     }
   497     }
   474     template "widget[@type='Jump']", mode="widget_defs" {
   498     template "widget[@type='Jump']", mode="widget_defs" {
   475         param "hmi_element";
   499         param "hmi_element";
   476         | on_click: function() {
   500         | on_click: function(evt) {
       
   501         |     console.log(evt);
   477         |     switch_page(this.args[0]);
   502         |     switch_page(this.args[0]);
   478         | },
   503         | },
   479         | init: function() {
   504         | init: function() {
   480         /* registering event this way doies not "click" through svg:use 
   505         /* registering event this way doies not "click" through svg:use 
   481         |     this.element.onclick = evt => switch_page(this.args[0]);
   506         |     this.element.onclick = evt => switch_page(this.args[0]);
   482         event must be registered by adding attribute to element instead
   507         event must be registered by adding attribute to element instead
   483         TODO : generalize mouse event handling by global event capture + getElementsAtPoint()
   508         TODO : generalize mouse event handling by global event capture + getElementsAtPoint()
   484         */
   509         */
   485         |     this.element.setAttribute("onclick", "hmi_widgets['«$hmi_element/@id»'].on_click()");
   510         |     this.element.setAttribute("onclick", "hmi_widgets['«$hmi_element/@id»'].on_click(evt)");
   486         | },
   511         | },
   487     }
   512     }
   488 }
   513 }