edouard@2883: // widget_input.ysl2 Edouard@2779: edouard@2883: template "widget[@type='Input']", mode="widget_defs" { edouard@2883: param "hmi_element"; edouard@2883: const "value_elt" { edouard@2883: optional_labels("value"); edouard@2883: } edouard@2883: const "have_value","string-length($value_elt)>0"; edouard@2883: value "$value_elt"; edouard@2883: if "$have_value" edouard@2883: | frequency: 5, Edouard@2792: edouard@2883: | dispatch: function(value) { Edouard@2808: edouard@2883: if "$have_value" edouard@2883: | this.value_elt.textContent = String(value); Edouard@2836: edouard@2883: | }, edouard@2883: const "edit_elt_id","$hmi_element/*[@inkscape:label='edit'][1]/@id"; edouard@2883: | init: function() { edouard@2883: if "$edit_elt_id" { edouard@2883: | id("«$edit_elt_id»").addEventListener( edouard@2883: | "click", edouard@2883: | evt => alert('XXX TODO : Edit value')); edouard@2883: } edouard@2883: foreach "$hmi_element/*[regexp:test(@inkscape:label,'^[=+\-].+')]" { edouard@2883: | id("«@id»").addEventListener( edouard@2883: | "click", edouard@2883: | evt => {let new_val = change_hmi_value(this.indexes[0], "«func:escape_quotes(@inkscape:label)»"); edouard@2883: if "$have_value"{ edouard@2883: | this.value_elt.textContent = String(new_val); Edouard@2792: } edouard@2883: | }); edouard@2883: /* TODO gray out value until refreshed */ Edouard@2792: } edouard@2883: | }, Edouard@2753: }