svghmi/gen_index_xhtml.xslt
branchsvghmi
changeset 2901 3f5194bba67d
parent 2899 f1baf2d0552c
child 2902 1fcb50af0335
equal deleted inserted replaced
2900:3ef217f525ff 2901:3f5194bba67d
   144   </func:function>
   144   </func:function>
   145   <func:function name="func:is_descendant_path">
   145   <func:function name="func:is_descendant_path">
   146     <xsl:param name="descend"/>
   146     <xsl:param name="descend"/>
   147     <xsl:param name="ancest"/>
   147     <xsl:param name="ancest"/>
   148     <func:result select="string-length($ancest) &gt; 0 and starts-with($descend,$ancest)"/>
   148     <func:result select="string-length($ancest) &gt; 0 and starts-with($descend,$ancest)"/>
       
   149   </func:function>
       
   150   <func:function name="func:same_class_paths">
       
   151     <xsl:param name="a"/>
       
   152     <xsl:param name="b"/>
       
   153     <xsl:variable name="class_a" select="$indexed_hmitree/*[@hmipath = $a]/@class"/>
       
   154     <xsl:variable name="class_b" select="$indexed_hmitree/*[@hmipath = $b]/@class"/>
       
   155     <func:result select="$class_a and $class_b and $class_a = $class_b"/>
   149   </func:function>
   156   </func:function>
   150   <xsl:template mode="testtree" match="*">
   157   <xsl:template mode="testtree" match="*">
   151     <xsl:param name="indent" select="''"/>
   158     <xsl:param name="indent" select="''"/>
   152     <xsl:value-of select="$indent"/>
   159     <xsl:value-of select="$indent"/>
   153     <xsl:text> </xsl:text>
   160     <xsl:text> </xsl:text>
   330   <xsl:template mode="page_desc" match="svg:*">
   337   <xsl:template mode="page_desc" match="svg:*">
   331     <xsl:variable name="desc" select="func:widget(@id)"/>
   338     <xsl:variable name="desc" select="func:widget(@id)"/>
   332     <xsl:variable name="page" select="."/>
   339     <xsl:variable name="page" select="."/>
   333     <xsl:variable name="p" select="$geometry[@Id = $page/@id]"/>
   340     <xsl:variable name="p" select="$geometry[@Id = $page/@id]"/>
   334     <xsl:variable name="page_all_elements" select="func:all_related_elements($page)"/>
   341     <xsl:variable name="page_all_elements" select="func:all_related_elements($page)"/>
   335     <xsl:variable name="all_page_widgets" select="$hmi_elements[@id = $page_all_elements/@id and @id != $page/@id and not(@id=$in_forEach_widget_ids)]"/>
   342     <xsl:variable name="all_page_widgets" select="$hmi_elements[@id = $page_all_elements/@id and @id != $page/@id]"/>
   336     <xsl:variable name="page_relative_widgets" select="$all_page_widgets[func:is_descendant_path(func:widget(@id)/path/@value, $desc/path/@value)]"/>
   343     <xsl:variable name="page_managed_widgets" select="$all_page_widgets[not(@id=$in_forEach_widget_ids)]"/>
       
   344     <xsl:variable name="page_relative_widgets" select="$page_managed_widgets[func:is_descendant_path(func:widget(@id)/path/@value, $desc/path/@value)]"/>
   337     <xsl:variable name="required_detachables" select="func:sumarized_elements($page_all_elements)/&#10;           ancestor-or-self::*[@id = $detachable_elements/@id]"/>
   345     <xsl:variable name="required_detachables" select="func:sumarized_elements($page_all_elements)/&#10;           ancestor-or-self::*[@id = $detachable_elements/@id]"/>
   338     <xsl:text>  "</xsl:text>
   346     <xsl:text>  "</xsl:text>
   339     <xsl:value-of select="$desc/arg[1]/@value"/>
   347     <xsl:value-of select="$desc/arg[1]/@value"/>
   340     <xsl:text>": {
   348     <xsl:text>": {
   341 </xsl:text>
   349 </xsl:text>
   382     </xsl:for-each>
   390     </xsl:for-each>
   383     <xsl:text>    ],
   391     <xsl:text>    ],
   384 </xsl:text>
   392 </xsl:text>
   385     <xsl:text>    absolute_widgets: [
   393     <xsl:text>    absolute_widgets: [
   386 </xsl:text>
   394 </xsl:text>
   387     <xsl:for-each select="$all_page_widgets[not(@id = $page_relative_widgets/@id)]">
   395     <xsl:for-each select="$page_managed_widgets[not(@id = $page_relative_widgets/@id)]">
   388       <xsl:text>        hmi_widgets["</xsl:text>
   396       <xsl:text>        hmi_widgets["</xsl:text>
   389       <xsl:value-of select="@id"/>
   397       <xsl:value-of select="@id"/>
   390       <xsl:text>"]</xsl:text>
   398       <xsl:text>"]</xsl:text>
   391       <xsl:if test="position()!=last()">
   399       <xsl:if test="position()!=last()">
   392         <xsl:text>,</xsl:text>
   400         <xsl:text>,</xsl:text>
   410       <xsl:text>
   418       <xsl:text>
   411 </xsl:text>
   419 </xsl:text>
   412     </xsl:for-each>
   420     </xsl:for-each>
   413     <xsl:text>    }
   421     <xsl:text>    }
   414 </xsl:text>
   422 </xsl:text>
       
   423     <xsl:apply-templates mode="per_page_widget_template" select="$parsed_widgets/widget[@id = $all_page_widgets/@id]">
       
   424       <xsl:with-param name="page_desc" select="$desc"/>
       
   425     </xsl:apply-templates>
   415     <xsl:text>  }</xsl:text>
   426     <xsl:text>  }</xsl:text>
   416     <xsl:if test="position()!=last()">
   427     <xsl:if test="position()!=last()">
   417       <xsl:text>,</xsl:text>
   428       <xsl:text>,</xsl:text>
   418     </xsl:if>
   429     </xsl:if>
   419     <xsl:text>
   430     <xsl:text>
   420 </xsl:text>
   431 </xsl:text>
   421   </xsl:template>
   432   </xsl:template>
       
   433   <xsl:template mode="per_page_widget_template" match="*"/>
   422   <xsl:template name="debug_detachables">
   434   <xsl:template name="debug_detachables">
   423     <xsl:text>DETACHABLES:
   435     <xsl:text>DETACHABLES:
   424 </xsl:text>
   436 </xsl:text>
   425     <xsl:for-each select="$detachable_elements">
   437     <xsl:for-each select="$detachable_elements">
   426       <xsl:text> </xsl:text>
   438       <xsl:text> </xsl:text>
   889     <xsl:text>'].on_click(evt)");
   901     <xsl:text>'].on_click(evt)");
   890 </xsl:text>
   902 </xsl:text>
   891     <xsl:text>    },
   903     <xsl:text>    },
   892 </xsl:text>
   904 </xsl:text>
   893   </xsl:template>
   905   </xsl:template>
       
   906   <xsl:template mode="per_page_widget_template" match="widget[@type='Jump']">
       
   907     <xsl:param name="page_desc"/>
       
   908     <xsl:if test="path">
       
   909       <xsl:variable name="target_page_name">
       
   910         <xsl:choose>
       
   911           <xsl:when test="arg">
       
   912             <xsl:value-of select="arg[1]/@value"/>
       
   913           </xsl:when>
       
   914           <xsl:otherwise>
       
   915             <xsl:value-of select="$page_desc/arg[1]/@value"/>
       
   916           </xsl:otherwise>
       
   917         </xsl:choose>
       
   918       </xsl:variable>
       
   919       <xsl:variable name="target_page_path">
       
   920         <xsl:choose>
       
   921           <xsl:when test="arg">
       
   922             <xsl:value-of select="$hmi_pages_descs[arg[1]/@value = $target_page_name]/path[1]/@value"/>
       
   923           </xsl:when>
       
   924           <xsl:otherwise>
       
   925             <xsl:value-of select="$page_desc/path[1]/@value"/>
       
   926           </xsl:otherwise>
       
   927         </xsl:choose>
       
   928       </xsl:variable>
       
   929       <xsl:if test="not(func:same_class_paths($target_page_path, path[1]/@value))">
       
   930         <xsl:message terminate="yes">
       
   931           <xsl:text>Jump id="</xsl:text>
       
   932           <xsl:value-of select="@id"/>
       
   933           <xsl:text>" to page "</xsl:text>
       
   934           <xsl:value-of select="$target_page_name"/>
       
   935           <xsl:text>" with incompatible path "</xsl:text>
       
   936           <xsl:value-of select="path[1]/@value"/>
       
   937           <xsl:text> (must be same class as "</xsl:text>
       
   938           <xsl:value-of select="$target_page_path"/>
       
   939           <xsl:text>")</xsl:text>
       
   940         </xsl:message>
       
   941       </xsl:if>
       
   942     </xsl:if>
       
   943   </xsl:template>
   894   <xsl:template mode="widget_defs" match="widget[@type='Meter']">
   944   <xsl:template mode="widget_defs" match="widget[@type='Meter']">
   895     <xsl:param name="hmi_element"/>
   945     <xsl:param name="hmi_element"/>
   896     <xsl:text>    frequency: 10,
   946     <xsl:text>    frequency: 10,
   897 </xsl:text>
   947 </xsl:text>
   898     <xsl:call-template name="defs_by_labels">
   948     <xsl:call-template name="defs_by_labels">