--- a/svghmi/gen_index_xhtml.xslt Mon Mar 02 16:30:29 2020 +0100
+++ b/svghmi/gen_index_xhtml.xslt Tue Mar 03 10:58:00 2020 +0100
@@ -1265,45 +1265,45 @@
<xsl:value-of select="$value_elt"/>
<xsl:if test="$value_elt">
- <xsl:text>frequency: 5,
+ <xsl:text> frequency: 5, - <xsl:text>dispatch: function(value) {
+ <xsl:text> dispatch: function(value) { <xsl:if test="$value_elt">
- <xsl:text> this.value_elt.textContent = String(value);
+ <xsl:text> this.value_elt.textContent = String(value);
<xsl:variable name="edit_elt_id" select="$hmi_element/*[@inkscape:label='edit'][1]/@id"/>
- <xsl:text>init: function() {
+ <xsl:text> init: function() { <xsl:if test="$edit_elt_id">
- <xsl:text> id("</xsl:text>
+ <xsl:text> id("</xsl:text> <xsl:value-of select="$edit_elt_id"/>
<xsl:text>").addEventListener(
- <xsl:text> evt => alert('XXX TODO : Edit value'));
+ <xsl:text> evt => alert('XXX TODO : Edit value')); <xsl:for-each select="$hmi_element/*[regexp:test(@inkscape:label,'^[=+\-].+')]">
- <xsl:text> id("</xsl:text>
+ <xsl:text> id("</xsl:text> <xsl:value-of select="@id"/>
<xsl:text>").addEventListener(
- <xsl:text> evt => {let new_val = change_hmi_value(this.indexes[0], "</xsl:text>
+ <xsl:text> evt => {let new_val = change_hmi_value(this.indexes[0], "</xsl:text> <xsl:value-of select="func:escape_quotes(@inkscape:label)"/>
- <xsl:text> this.value_elt.textContent = String(new_val);});
+ <xsl:text> this.value_elt.textContent = String(new_val);});
<xsl:template mode="widget_defs" match="widget[@type='Button']"/>
@@ -1313,78 +1313,78 @@
<xsl:template mode="widget_defs" match="widget[@type='Switch']">
<xsl:param name="hmi_element"/>
- <xsl:text>frequency: 5,
+ <xsl:text> frequency: 5, + <xsl:text> dispatch: function(value) { - <xsl:text>dispatch: function(value) {
+ <xsl:text> for(let choice of this.choices){ - <xsl:text> for(let choice of this.choices){
+ <xsl:text> if(value != choice.value){ - <xsl:text> if(value != choice.value){
+ <xsl:text> choice.elt.setAttribute("style", "display:none"); - <xsl:text> choice.elt.setAttribute("style", "display:none");
+ <xsl:text> choice.elt.setAttribute("style", choice.style); - <xsl:text> choice.elt.setAttribute("style", choice.style);
- <xsl:text>init: function() {
+ <xsl:text> init: function() { - <xsl:text> // Hello Switch
+ <xsl:text> // Hello Switch
<xsl:variable name="regex" select="'^("[^"].*"|\-?[0-9]+)(#.*)?$'"/>
<xsl:for-each select="$hmi_element/*[regexp:test(@inkscape:label,$regex)]">
<xsl:variable name="literal" select="regexp:match(@inkscape:label,$regex)[2]"/>
- <xsl:text> elt:id("</xsl:text>
+ <xsl:text> elt:id("</xsl:text> <xsl:value-of select="@id"/>
- <xsl:text> style:"</xsl:text>
+ <xsl:text> style:"</xsl:text> <xsl:value-of select="@style"/>
- <xsl:text> value:</xsl:text>
+ <xsl:text> value:</xsl:text> <xsl:value-of select="$literal"/>
- <xsl:text> }</xsl:text>
+ <xsl:text> }</xsl:text> <xsl:if test="position()!=last()">
<xsl:template mode="widget_defs" match="widget[@type='Jump']">
<xsl:param name="hmi_element"/>
- <xsl:text>on_click: function(evt) {
+ <xsl:text> on_click: function(evt) { - <xsl:text> console.log(evt);
+ <xsl:text> console.log(evt); - <xsl:text> switch_page(this.args[0]);
+ <xsl:text> switch_page(this.args[0]);
- <xsl:text>init: function() {
+ <xsl:text> init: function() { - <xsl:text> this.element.setAttribute("onclick", "hmi_widgets['</xsl:text>
+ <xsl:text> this.element.setAttribute("onclick", "hmi_widgets['</xsl:text> <xsl:value-of select="$hmi_element/@id"/>
<xsl:text>'].on_click(evt)");
--- a/svghmi/gen_index_xhtml.ysl2 Mon Mar 02 16:30:29 2020 +0100
+++ b/svghmi/gen_index_xhtml.ysl2 Tue Mar 03 10:58:00 2020 +0100
@@ -694,26 +694,29 @@
- | dispatch: function(value) {
+ | dispatch: function(value) { - | this.value_elt.textContent = String(value);
+ | this.value_elt.textContent = String(value); const "edit_elt_id","$hmi_element/*[@inkscape:label='edit'][1]/@id";
- | id("«$edit_elt_id»").addEventListener(
- | evt => alert('XXX TODO : Edit value'));
+ | id("«$edit_elt_id»").addEventListener( + | evt => alert('XXX TODO : Edit value')); foreach "$hmi_element/*[regexp:test(@inkscape:label,'^[=+\-].+')]" {
- | id("«@id»").addEventListener(
- | evt => {let new_val = change_hmi_value(this.indexes[0], "«func:escape_quotes(@inkscape:label)»");
- | this.value_elt.textContent = String(new_val);});
- /* could gray out value until refreshed */
+ | id("«@id»").addEventListener( + | evt => {let new_val = change_hmi_value(this.indexes[0], "«func:escape_quotes(@inkscape:label)»"); + | this.value_elt.textContent = String(new_val);}); + /* TODO gray out value until refreshed */
template "widget[@type='Button']", mode="widget_defs" {
@@ -722,44 +725,44 @@
template "widget[@type='Switch']", mode="widget_defs" {
- | dispatch: function(value) {
- | for(let choice of this.choices){
- | if(value != choice.value){
- | choice.elt.setAttribute("style", "display:none");
- | choice.elt.setAttribute("style", choice.style);
+ | dispatch: function(value) { + | for(let choice of this.choices){ + | if(value != choice.value){ + | choice.elt.setAttribute("style", "display:none"); + | choice.elt.setAttribute("style", choice.style);
const "regex",!"'^(\"[^\"].*\"|\-?[0-9]+)(#.*)?$'"!;
foreach "$hmi_element/*[regexp:test(@inkscape:label,$regex)]" {
const "literal", "regexp:match(@inkscape:label,$regex)[2]";
- | }`if "position()!=last()" > ,`
+ | }`if "position()!=last()" > ,`
template "widget[@type='Jump']", mode="widget_defs" {
- | on_click: function(evt) {
- | switch_page(this.args[0]);
+ | on_click: function(evt) { + | switch_page(this.args[0]); /* registering event this way doies not "click" through svg:use
| this.element.onclick = evt => switch_page(this.args[0]);
event must be registered by adding attribute to element instead
TODO : generalize mouse event handling by global event capture + getElementsAtPoint()
- | this.element.setAttribute("onclick", "hmi_widgets['«$hmi_element/@id»'].on_click(evt)");
+ | this.element.setAttribute("onclick", "hmi_widgets['«$hmi_element/@id»'].on_click(evt)");