--- a/svghmi/gen_index_xhtml.ysl2 Thu Oct 17 15:48:09 2019 +0200
+++ b/svghmi/gen_index_xhtml.ysl2 Sat Oct 19 01:23:30 2019 +0200
@@ -191,7 +191,6 @@
const "widget", "func:parselabel(@inkscape:label)/widget";
| «@id»: {
| type: "«$widget/@type»",
- | frequency: `apply "$widget", mode="refresh_frequency"`,
| args: [
foreach "$widget/arg"
| "«@value»"`if "position()!=last()" > ,`
@@ -204,7 +203,9 @@
error > No match for HMI «$hmipath»;
| «$hmitree_match/@index»`if "position()!=last()" > ,`
}
- | ]
+ | ],
+ | element: document.getElementById("«@id»"),
+ apply "$widget", mode="widget_defs" with "hmi_element",".";
| }`if "position()!=last()" > ,`
}
| }
@@ -306,8 +307,33 @@
};
}
- template "widget", mode="refresh_frequency" > 10
+ template "widget[@type='Display']", mode="widget_defs" {
+ param "hmi_element";
+ | frequency: 5,
+ | dispatch: function(value) {
+ choose {
+ when "$hmi_element[self::svg:text]"{
+ // TODO : care about <tspan> ?
+ | this.element.textContent = String(value);
+ }
+ otherwise {
+ error "Display widget as a group not implemented";
+ }
+ }
+ | },
+
+ }
+ template "widget[@type='Meter']", mode="widget_defs" {
+ | frequency: 10,
+ }
+ template "widget[@type='Input']", mode="widget_defs" {
+ | frequency: 5,
+ }
+ // | frequency: 10`apply ".", mode="refresh_frequency"`,
+ // template "widget", mode="refresh_frequency" > 10
+ /*
template "widget[@type='Meter']", mode="refresh_frequency" > 10
template "widget[@type='Display']", mode="refresh_frequency" > 5
template "widget[@type='Input']", mode="refresh_frequency" > 5
+ */
}