svghmi/detachable_pages.ysl2
branchsvghmi
changeset 2901 3f5194bba67d
parent 2894 4cf9ad35e6d0
child 2903 881d0248b3ce
equal deleted inserted replaced
2900:3ef217f525ff 2901:3f5194bba67d
   100     const "page", ".";
   100     const "page", ".";
   101     const "p", "$geometry[@Id = $page/@id]";
   101     const "p", "$geometry[@Id = $page/@id]";
   102 
   102 
   103     const "page_all_elements", "func:all_related_elements($page)";
   103     const "page_all_elements", "func:all_related_elements($page)";
   104 
   104 
   105     const "all_page_widgets","$hmi_elements[@id = $page_all_elements/@id and @id != $page/@id and not(@id=$in_forEach_widget_ids)]";
   105     const "all_page_widgets","$hmi_elements[@id = $page_all_elements/@id and @id != $page/@id]";
       
   106     const "page_managed_widgets","$all_page_widgets[not(@id=$in_forEach_widget_ids)]";
   106     const "page_relative_widgets",
   107     const "page_relative_widgets",
   107         "$all_page_widgets[func:is_descendant_path(func:widget(@id)/path/@value, $desc/path/@value)]";
   108         "$page_managed_widgets[func:is_descendant_path(func:widget(@id)/path/@value, $desc/path/@value)]";
   108 
   109 
   109     // Take closest ancestor in detachable_elements
   110     // Take closest ancestor in detachable_elements
   110     // since nested detachable elements are filtered out
   111     // since nested detachable elements are filtered out
   111     const "required_detachables", 
   112     const "required_detachables", 
   112         """func:sumarized_elements($page_all_elements)/
   113         """func:sumarized_elements($page_all_elements)/
   124     foreach "$page_relative_widgets" {
   125     foreach "$page_relative_widgets" {
   125     |         hmi_widgets["«@id»"]`if "position()!=last()" > ,`
   126     |         hmi_widgets["«@id»"]`if "position()!=last()" > ,`
   126     }
   127     }
   127     |     ],
   128     |     ],
   128     |     absolute_widgets: [
   129     |     absolute_widgets: [
   129     foreach "$all_page_widgets[not(@id = $page_relative_widgets/@id)]" {
   130     foreach "$page_managed_widgets[not(@id = $page_relative_widgets/@id)]" {
   130     |         hmi_widgets["«@id»"]`if "position()!=last()" > ,`
   131     |         hmi_widgets["«@id»"]`if "position()!=last()" > ,`
   131     }
   132     }
   132     |     ],
   133     |     ],
   133     |     required_detachables: {
   134     |     required_detachables: {
   134     foreach "$required_detachables" {
   135     foreach "$required_detachables" {
   135     |         "«@id»": detachable_elements["«@id»"]`if "position()!=last()" > ,`
   136     |         "«@id»": detachable_elements["«@id»"]`if "position()!=last()" > ,`
   136     }
   137     }
   137     |     }
   138     |     }
       
   139     apply "$parsed_widgets/widget[@id = $all_page_widgets/@id]", mode="per_page_widget_template"{
       
   140         with "page_desc", "$desc";
       
   141     }
   138     |   }`if "position()!=last()" > ,`
   142     |   }`if "position()!=last()" > ,`
   139 }
   143 }
       
   144 
       
   145 template "*", mode="per_page_widget_template";
   140 
   146 
   141 function "debug_detachables" {
   147 function "debug_detachables" {
   142     | DETACHABLES:
   148     | DETACHABLES:
   143     foreach "$detachable_elements"{
   149     foreach "$detachable_elements"{
   144         |  «@id»
   150         |  «@id»