diff -r 68cee1366b9c -r 390acff12755 svghmi/gen_index_xhtml.ysl2 --- a/svghmi/gen_index_xhtml.ysl2 Sat Oct 19 01:23:30 2019 +0200 +++ b/svghmi/gen_index_xhtml.ysl2 Tue Oct 22 17:06:31 2019 +0200 @@ -317,16 +317,47 @@ | this.element.textContent = String(value); } otherwise { - error "Display widget as a group not implemented"; + error > Display widget as a group not implemented } } | }, } template "widget[@type='Meter']", mode="widget_defs" { - | frequency: 10, + | frequency: 10, } template "widget[@type='Input']", mode="widget_defs" { + param "hmi_element"; + | frequency: 5, + const "value_elt_id","$hmi_element//*[self::svg:text][@inkscape:label='value'][1]/@id"; + if "not($value_elt_id)" error > Input widget must have a text element + | value_elt: document.getElementById("«$value_elt_id»"), + | dispatch: function(value) { + | this.value_elt.textContent = String(value); + | }, + const "edit_elt_id","$hmi_element/*[@inkscape:label='edit'][1]/@id"; + | init: function() { + if "$edit_elt_id" { + | document.getElementById("«$edit_elt_id»").addEventListener( + | "click", + | evt => alert('XXX TODO : Edit value')); + } + foreach "$hmi_element/*[regexp:test(@inkscape:label,'^[=+\-][0-9]+')]" { + | document.getElementById("«@id»").addEventListener( + | "click", + | evt => change_hmi_value(this.indexes[0], "«@inkscape:label»")); + } + | }, + } + template "widget[@type='Button']", mode="widget_defs" { + } + template "widget[@type='Toggle']", mode="widget_defs" { + | frequency: 5, + } + template "widget[@type='Change']", mode="widget_defs" { + // HMI:Change:-10@/PUMP/VALUE + // HMI:Change:+1@/PUMP/VALUE + // HMI:Change:=42@/PUMP/VALUE | frequency: 5, } // | frequency: 10`apply ".", mode="refresh_frequency"`,