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'"; + | } +}