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 } |