# HG changeset patch # User Edouard Tisserant # Date 1594981305 -7200 # Node ID 14635b09d32935d83de87b0e606cd1c04d597231 # Parent 7769e7c7f92552de4cf1ca59b091d88b3396f831 SVGHMI: JsonTable now generate working data access code for data/* elements. diff -r 7769e7c7f925 -r 14635b09d329 svghmi/gen_index_xhtml.xslt --- a/svghmi/gen_index_xhtml.xslt Fri Jul 17 12:19:53 2020 +0200 +++ b/svghmi/gen_index_xhtml.xslt Fri Jul 17 12:21:45 2020 +0200 @@ -658,11 +658,17 @@ All units must be set to "px" in Inkscape's document properties - + + + + + - - + + + + @@ -699,7 +705,7 @@ - + @@ -816,6 +822,13 @@ + Not to unlink : + + + + + + @@ -2149,39 +2162,51 @@ class JsonTableWidget extends Widget{ + do_http_request() { + + const query = { + + offset: '42', + + filter: '*powerloss*', + + args: this.args + + }; + + + + const options = { + + method: 'POST', + + body: JSON.stringify(query), + + headers: {'Content-Type': 'application/json'} + + } + + + + fetch(this.args[0], options) + + .then(res => res.json()) + + .then(this.spread_json_data); + + + + } + + dispatch(value) { + + this.do_http_request(); + + } + on_click(evt) { - const query = { - - offset: '42', - - filter: '*powerloss*', - - args: this.args - - }; - - - - const options = { - - method: 'POST', - - body: JSON.stringify(query), - - headers: {'Content-Type': 'application/json'} - - } - - - - fetch(this.args[0], options) - - .then(res => res.json()) - - .then(res => console.log(res)); - - + this.do_http_request(); } @@ -2194,6 +2219,86 @@ } + + + JsonTable Widget can't contain element of type + + . + + + + + console.log(" + + ", " + + ", + + ); + + + + + console.log(" + + ", " + + ", + + ); + + + + + + + + + + + + + + let obj_ + + = + + + ; + + + + obj_ + + + + + + + + + + data + + + + + + forward backward cursor + + + + + spread_json_data: function(jdata) { + + console.log(jdata); + + + + + } + + diff -r 7769e7c7f925 -r 14635b09d329 svghmi/widget_jsontable.ysl2 --- a/svghmi/widget_jsontable.ysl2 Fri Jul 17 12:19:53 2020 +0200 +++ b/svghmi/widget_jsontable.ysl2 Fri Jul 17 12:21:45 2020 +0200 @@ -3,7 +3,7 @@ template "widget[@type='JsonTable']", mode="widget_class" || class JsonTableWidget extends Widget{ - on_click(evt) { + do_http_request() { const query = { offset: '42', filter: '*powerloss*', @@ -18,11 +18,54 @@ fetch(this.args[0], options) .then(res => res.json()) - .then(res => console.log(res)); + .then(this.spread_json_data); } + dispatch(value) { + this.do_http_request(); + } + on_click(evt) { + this.do_http_request(); + } init() { this.element.setAttribute("onclick", "hmi_widgets['"+this.element_id+"'].on_click(evt)"); } } || + +template "svg:*", mode="json_table_elt_render" { + warning > JsonTable Widget can't contain element of type «local-name()». +} + +template "svg:use", mode="json_table_elt_render" { + param "value_expr"; + | console.log("«@id»", "«$value_expr»", «$value_expr»); +} + +template "svg:text", mode="json_table_elt_render" { + param "value_expr"; + | console.log("«@id»", "«$value_expr»", «$value_expr»); +} + +template "svg:*", mode="json_table_render" { + param "objname"; + apply ".", mode="json_table_elt_render" with "value_expr" > «$objname»«@inkscape:label» +} + +template "svg:g", mode="json_table_render" { + param "objname"; + | let obj_«@id» = «$objname»«@inkscape:label»; + apply "*[@inkscape:label]", mode="json_table_render" + with "objname" > obj_«@id» +} + +template "widget[@type='JsonTable']", mode="widget_defs" { + param "hmi_element"; + labels("data"); + optional_labels("forward backward cursor"); + const "data_elt", "$result_svg_ns//*[@id = $hmi_element/@id]/*[@inkscape:label = 'data']"; + | spread_json_data: function(jdata) { + | console.log(jdata); + apply "$data_elt/*", mode="json_table_render" with "objname","'jdata'"; + | } +} diff -r 7769e7c7f925 -r 14635b09d329 tests/svghmi/py_ext_0@py_ext/pyfile.xml --- a/tests/svghmi/py_ext_0@py_ext/pyfile.xml Fri Jul 17 12:19:53 2020 +0200 +++ b/tests/svghmi/py_ext_0@py_ext/pyfile.xml Fri Jul 17 12:21:45 2020 +0200 @@ -2,10 +2,12 @@ + + inkscape:label="HMI:Input@/TARGETPRESSURE" + transform="matrix(0.63690435,0,0,0.63690435,12.496106,18.355376)"> 8888 SetPoint + x="175.94542" + y="67.487991" + style="stroke-width:0.63690436px">SetPoint Actual + sodipodi:role="line" + style="stroke-width:0.63690436px">Actual + transform="matrix(0.5,0,0,0.5,423.93816,-131.83418)"> 8888 + style="stroke-width:1px">8 + rx="47.861938" /> mhe - + + + + + + + + value + + + + + + + + + + + + + + + + + + message + + + + OK + + + information + + + 8888 + + + +