# HG changeset patch # User Edouard Tisserant # Date 1595419003 -7200 # Node ID 2f298089e32e8168a05a9db5cb61b6a6b7694d0a # Parent 14635b09d32935d83de87b0e606cd1c04d597231 SVGHMI: JsonTable now picks items from HMI:List, and update texts, all according to Json data. Still miss scrolling. diff -r 14635b09d329 -r 2f298089e32e svghmi/gen_index_xhtml.xslt --- a/svghmi/gen_index_xhtml.xslt Fri Jul 17 12:21:45 2020 +0200 +++ b/svghmi/gen_index_xhtml.xslt Wed Jul 22 13:56:43 2020 +0200 @@ -1033,7 +1033,7 @@ } - + @@ -2220,7 +2220,7 @@ - + JsonTable Widget can't contain element of type . @@ -2228,7 +2228,16 @@ - console.log(" + + + + + Clones (svg:use) in JsonTable Widget must point to a valid HMI:List widget or HMI:List item. Reference " + + " is not valid. + + + console.log(" ", " @@ -2236,10 +2245,20 @@ ); + id(" + + ").setAttribute("xlink:href", + + "#"+hmi_widgets[" + + "].items[ + + ]); + - console.log(" + console.log(" ", " @@ -2247,6 +2266,12 @@ ); + id(" + + ").textContent = String( + + ); + @@ -2259,7 +2284,7 @@ - let obj_ + let obj_ = @@ -2289,14 +2314,14 @@ - spread_json_data: function(jdata) { - - console.log(jdata); + spread_json_data: function(jdata) { + + console.log(jdata); - } + } @@ -2765,6 +2790,21 @@ }, + + + items: { + + + + + : " + + ", + + + }, + + frequency: 10, diff -r 14635b09d329 -r 2f298089e32e svghmi/widget_jsontable.ysl2 --- a/svghmi/widget_jsontable.ysl2 Fri Jul 17 12:21:45 2020 +0200 +++ b/svghmi/widget_jsontable.ysl2 Wed Jul 22 13:56:43 2020 +0200 @@ -34,17 +34,26 @@ || template "svg:*", mode="json_table_elt_render" { - warning > JsonTable Widget can't contain element of type «local-name()». + error > 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»); + // cloned element must be part of a HMI:List + const "targetid", "substring-after(@xlink:href,'#')"; + const "from_list", "$hmi_lists[(@id | */@id) = $targetid]"; + + if "count($from_list) = 0" + error > Clones (svg:use) in JsonTable Widget must point to a valid HMI:List widget or HMI:List item. Reference "«@xlink:href»" is not valid. + + | id("«@id»").setAttribute("xlink:href", + // obtain new target id from HMI:List widget + | "#"+hmi_widgets["«$from_list/@id»"].items[«$value_expr»]); } template "svg:text", mode="json_table_elt_render" { param "value_expr"; - | console.log("«@id»", "«$value_expr»", «$value_expr»); + | id("«@id»").textContent = String(«$value_expr»); } template "svg:*", mode="json_table_render" { @@ -54,7 +63,7 @@ template "svg:g", mode="json_table_render" { param "objname"; - | let obj_«@id» = «$objname»«@inkscape:label»; + | let obj_«@id» = «$objname»«@inkscape:label»; apply "*[@inkscape:label]", mode="json_table_render" with "objname" > obj_«@id» } @@ -64,8 +73,7 @@ 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); + | spread_json_data: function(jdata) { apply "$data_elt/*", mode="json_table_render" with "objname","'jdata'"; - | } + | } } diff -r 14635b09d329 -r 2f298089e32e svghmi/widget_list.ysl2 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/svghmi/widget_list.ysl2 Wed Jul 22 13:56:43 2020 +0200 @@ -0,0 +1,10 @@ +// widget_list.ysl2 + +template "widget[@type='List']", mode="widget_defs" { + param "hmi_element"; + | items: { + foreach "$hmi_element/*[@inkscape:label]" { + | «func:escape_quotes(@inkscape:label)»: "«@id»", + } + | }, +} diff -r 14635b09d329 -r 2f298089e32e svghmi/widgets_common.ysl2 --- a/svghmi/widgets_common.ysl2 Fri Jul 17 12:21:45 2020 +0200 +++ b/svghmi/widgets_common.ysl2 Wed Jul 22 13:56:43 2020 +0200 @@ -121,7 +121,7 @@ } || -const "excluded_types", "str:split('Page Lang List')"; +const "excluded_types", "str:split('Page Lang')"; const "excluded_ids","$parsed_widgets/widget[not(@type = $excluded_types)]/@id"; emit "preamble:hmi-elements" { diff -r 14635b09d329 -r 2f298089e32e tests/svghmi/svghmi_0@svghmi/svghmi.svg --- a/tests/svghmi/svghmi_0@svghmi/svghmi.svg Fri Jul 17 12:21:45 2020 +0200 +++ b/tests/svghmi/svghmi_0@svghmi/svghmi.svg Wed Jul 22 13:56:43 2020 +0200 @@ -138,17 +138,17 @@ inkscape:pageopacity="0" inkscape:pageshadow="2" inkscape:document-units="px" - inkscape:current-layer="g1384" + inkscape:current-layer="g1332" showgrid="false" units="px" - inkscape:zoom="2" - inkscape:cx="841.23474" - inkscape:cy="298.33077" - inkscape:window-width="2807" - inkscape:window-height="1582" + inkscape:zoom="1" + inkscape:cx="521.07002" + inkscape:cy="767.67088" + inkscape:window-width="3840" + inkscape:window-height="2096" inkscape:window-x="0" inkscape:window-y="27" - inkscape:window-maximized="0" + inkscape:window-maximized="1" showguides="true" inkscape:guide-bbox="true" /> + id="g1332" + inkscape:label="polygons"> + + + + + + + +