edouard@2994: // widget_jsontable.ysl2 edouard@2994: edouard@2994: template "widget[@type='JsonTable']", mode="widget_class" edouard@2994: || edouard@2994: class JsonTableWidget extends Widget{ edouard@2996: do_http_request() { edouard@2994: const query = { edouard@2994: offset: '42', edouard@2994: filter: '*powerloss*', edouard@2994: args: this.args edouard@2994: }; edouard@2994: edouard@2994: const options = { edouard@2994: method: 'POST', edouard@2994: body: JSON.stringify(query), edouard@2994: headers: {'Content-Type': 'application/json'} edouard@2994: } edouard@2994: edouard@2994: fetch(this.args[0], options) edouard@2994: .then(res => res.json()) edouard@2996: .then(this.spread_json_data); edouard@2994: edouard@2994: } edouard@2996: dispatch(value) { edouard@2996: this.do_http_request(); edouard@2996: } edouard@2996: on_click(evt) { edouard@2996: this.do_http_request(); edouard@2996: } edouard@2994: init() { edouard@2994: this.element.setAttribute("onclick", "hmi_widgets['"+this.element_id+"'].on_click(evt)"); edouard@2994: } edouard@2994: } edouard@2994: || edouard@2996: edouard@2996: template "svg:*", mode="json_table_elt_render" { edouard@2996: warning > JsonTable Widget can't contain element of type «local-name()». edouard@2996: } edouard@2996: edouard@2996: template "svg:use", mode="json_table_elt_render" { edouard@2996: param "value_expr"; edouard@2996: | console.log("«@id»", "«$value_expr»", «$value_expr»); edouard@2996: } edouard@2996: edouard@2996: template "svg:text", mode="json_table_elt_render" { edouard@2996: param "value_expr"; edouard@2996: | console.log("«@id»", "«$value_expr»", «$value_expr»); edouard@2996: } edouard@2996: edouard@2996: template "svg:*", mode="json_table_render" { edouard@2996: param "objname"; edouard@2996: apply ".", mode="json_table_elt_render" with "value_expr" > «$objname»«@inkscape:label» edouard@2996: } edouard@2996: edouard@2996: template "svg:g", mode="json_table_render" { edouard@2996: param "objname"; edouard@2996: | let obj_«@id» = «$objname»«@inkscape:label»; edouard@2996: apply "*[@inkscape:label]", mode="json_table_render" edouard@2996: with "objname" > obj_«@id» edouard@2996: } edouard@2996: edouard@2996: template "widget[@type='JsonTable']", mode="widget_defs" { edouard@2996: param "hmi_element"; edouard@2996: labels("data"); edouard@2996: optional_labels("forward backward cursor"); edouard@2996: const "data_elt", "$result_svg_ns//*[@id = $hmi_element/@id]/*[@inkscape:label = 'data']"; edouard@2996: | spread_json_data: function(jdata) { edouard@2996: | console.log(jdata); edouard@2996: apply "$data_elt/*", mode="json_table_render" with "objname","'jdata'"; edouard@2996: | } edouard@2996: }