svghmi/widget_jsontable.ysl2
branchsvghmi
changeset 3028 72ee99635db7
parent 2997 2f298089e32e
child 3031 440d74319a74
equal deleted inserted replaced
3027:d660b1b6bf4f 3028:72ee99635db7
    35 
    35 
    36 template "svg:*", mode="json_table_elt_render" {
    36 template "svg:*", mode="json_table_elt_render" {
    37     error > 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 
       
    41 const "hmi_textstylelists_descs", "$parsed_widgets/widget[@type = 'TextStyleList']";
       
    42 const "hmi_textstylelists", "$hmi_elements[@id = $hmi_textstylelists_descs/@id]";
       
    43 
    40 template "svg:use", mode="json_table_elt_render" {
    44 template "svg:use", mode="json_table_elt_render" {
    41     param "value_expr";
    45     param "value_expr";
    42     // cloned element must be part of a HMI:List
    46     // cloned element must be part of a HMI:List
    43     const "targetid", "substring-after(@xlink:href,'#')";
    47     const "targetid", "substring-after(@xlink:href,'#')";
    44     const "from_list", "$hmi_lists[(@id | */@id) = $targetid]";
    48     const "from_list", "$hmi_lists[(@id | */@id) = $targetid]";
       
    49     const "from_textstylelist", "$hmi_textstylelists[(@id | */@id) = $targetid]";
    45 
    50 
    46     if "count($from_list) = 0"
    51     choose {
    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.
    52         when "count($from_list) > 0" {
    48 
    53             |         id("«@id»").setAttribute("xlink:href", 
    49     |         id("«@id»").setAttribute("xlink:href", 
    54             // obtain new target id from HMI:List widget
    50     // obtain new target id from HMI:List widget
    55             |             "#"+hmi_widgets["«$from_list/@id»"].items[«$value_expr»]);
    51     |             "#"+hmi_widgets["«$from_list/@id»"].items[«$value_expr»]);
    56         }
       
    57         when "count($from_textstylelist) > 0" {
       
    58             |         console.log("from_textsylelist","«@id»", "«$value_expr»", «$value_expr»,
       
    59             // obtain new style from HMI:TextStyleList widget
       
    60             |             hmi_widgets["«$from_textstylelist/@id»"].items[«$value_expr»]);
       
    61         }
       
    62         otherwise
       
    63             warning > Clones (svg:use) in JsonTable Widget must point to a valid HMI:List or HMI:TextStyleList widget or item. Reference "«@xlink:href»" is not valid and will not be updated.
       
    64     }
    52 }
    65 }
    53 
    66 
    54 template "svg:text", mode="json_table_elt_render" {
    67 template "svg:text", mode="json_table_elt_render" {
    55     param "value_expr";
    68     param "value_expr";
    56     |         id("«@id»").textContent = String(«$value_expr»);
    69     |         id("«@id»").textContent = String(«$value_expr»);
    57 }
    70 }
    58 
    71 
    59 template "svg:*", mode="json_table_render" {
    72 template "svg:*", mode="json_table_render" {
    60     param "objname";
    73     param "objname";
    61     apply ".", mode="json_table_elt_render" with "value_expr" > «$objname»«@inkscape:label»
    74     apply ".", mode="json_table_elt_render" with "value_expr" > «$objname»«substring-before(@inkscape:label, ' ')»
    62 }
    75 }
    63 
    76 
    64 template "svg:g", mode="json_table_render" {
    77 template "svg:g", mode="json_table_render" {
    65     param "objname";
    78     param "objname";
    66     |         let obj_«@id» = «$objname»«@inkscape:label»;
    79     |         let obj_«@id» = «$objname»«substring-before(@inkscape:label, ' ')»;
    67     apply "*[@inkscape:label]", mode="json_table_render" 
    80     apply "*[@inkscape:label]", mode="json_table_render" 
    68         with "objname" > obj_«@id»
    81         with "objname" > obj_«@id»
    69 }
    82 }
    70 
    83 
    71 template "widget[@type='JsonTable']", mode="widget_defs" {
    84 template "widget[@type='JsonTable']", mode="widget_defs" {