svghmi/widget_jsontable.ysl2
branchsvghmi
changeset 2997 2f298089e32e
parent 2996 14635b09d329
child 3028 72ee99635db7
equal deleted inserted replaced
2996:14635b09d329 2997:2f298089e32e
    32         }
    32         }
    33     }
    33     }
    34     ||
    34     ||
    35 
    35 
    36 template "svg:*", mode="json_table_elt_render" {
    36 template "svg:*", mode="json_table_elt_render" {
    37     warning > JsonTable Widget can't contain element of type «local-name()».
    37     error > JsonTable Widget can't contain element of type «local-name()».
    38 }
    38 }
    39 
    39 
    40 template "svg:use", mode="json_table_elt_render" {
    40 template "svg:use", mode="json_table_elt_render" {
    41     param "value_expr";
    41     param "value_expr";
    42     |     console.log("«@id»", "«$value_expr»", «$value_expr»);
    42     // cloned element must be part of a HMI:List
       
    43     const "targetid", "substring-after(@xlink:href,'#')";
       
    44     const "from_list", "$hmi_lists[(@id | */@id) = $targetid]";
       
    45 
       
    46     if "count($from_list) = 0"
       
    47         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.
       
    48 
       
    49     |         id("«@id»").setAttribute("xlink:href", 
       
    50     // obtain new target id from HMI:List widget
       
    51     |             "#"+hmi_widgets["«$from_list/@id»"].items[«$value_expr»]);
    43 }
    52 }
    44 
    53 
    45 template "svg:text", mode="json_table_elt_render" {
    54 template "svg:text", mode="json_table_elt_render" {
    46     param "value_expr";
    55     param "value_expr";
    47     |     console.log("«@id»", "«$value_expr»", «$value_expr»);
    56     |         id("«@id»").textContent = String(«$value_expr»);
    48 }
    57 }
    49 
    58 
    50 template "svg:*", mode="json_table_render" {
    59 template "svg:*", mode="json_table_render" {
    51     param "objname";
    60     param "objname";
    52     apply ".", mode="json_table_elt_render" with "value_expr" > «$objname»«@inkscape:label»
    61     apply ".", mode="json_table_elt_render" with "value_expr" > «$objname»«@inkscape:label»
    53 }
    62 }
    54 
    63 
    55 template "svg:g", mode="json_table_render" {
    64 template "svg:g", mode="json_table_render" {
    56     param "objname";
    65     param "objname";
    57     | let obj_«@id» = «$objname»«@inkscape:label»;
    66     |         let obj_«@id» = «$objname»«@inkscape:label»;
    58     apply "*[@inkscape:label]", mode="json_table_render" 
    67     apply "*[@inkscape:label]", mode="json_table_render" 
    59         with "objname" > obj_«@id»
    68         with "objname" > obj_«@id»
    60 }
    69 }
    61 
    70 
    62 template "widget[@type='JsonTable']", mode="widget_defs" {
    71 template "widget[@type='JsonTable']", mode="widget_defs" {
    63     param "hmi_element";
    72     param "hmi_element";
    64     labels("data");
    73     labels("data");
    65     optional_labels("forward backward cursor");
    74     optional_labels("forward backward cursor");
    66     const "data_elt", "$result_svg_ns//*[@id = $hmi_element/@id]/*[@inkscape:label = 'data']";
    75     const "data_elt", "$result_svg_ns//*[@id = $hmi_element/@id]/*[@inkscape:label = 'data']";
    67     | spread_json_data: function(jdata) {
    76     |     spread_json_data: function(jdata) {
    68     |     console.log(jdata);
       
    69     apply "$data_elt/*", mode="json_table_render" with "objname","'jdata'";
    77     apply "$data_elt/*", mode="json_table_render" with "objname","'jdata'";
    70     | }
    78     |     }
    71 }
    79 }