template "widget[@type='JsonTable']", mode="widget_class"
class JsonTableWidget extends Widget{
body: JSON.stringify(query),
headers: {'Content-Type': 'application/json'}
fetch(this.args[0], options)
.then(this.spread_json_data);
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" {
| console.log("«@id»", "«$value_expr»", «$value_expr»);
template "svg:text", mode="json_table_elt_render" {
| console.log("«@id»", "«$value_expr»", «$value_expr»);
template "svg:*", mode="json_table_render" {
apply ".", mode="json_table_elt_render" with "value_expr" > «$objname»«@inkscape:label»
template "svg:g", mode="json_table_render" {
| let obj_«@id» = «$objname»«@inkscape:label»;
apply "*[@inkscape:label]", mode="json_table_render"
with "objname" > obj_«@id»
template "widget[@type='JsonTable']", mode="widget_defs" {
optional_labels("forward backward cursor");
const "data_elt", "$result_svg_ns//*[@id = $hmi_element/@id]/*[@inkscape:label = 'data']";
| spread_json_data: function(jdata) {
apply "$data_elt/*", mode="json_table_render" with "objname","'jdata'";