svghmi/gen_index_xhtml.xslt
branchsvghmi
changeset 2807 7fa21b3b5f9f
parent 2806 7d0e81cdedb0
child 2808 dc78ffa5253d
equal deleted inserted replaced
2806:7d0e81cdedb0 2807:7fa21b3b5f9f
   848     </xsl:choose>
   848     </xsl:choose>
   849     <xsl:text>},
   849     <xsl:text>},
   850 </xsl:text>
   850 </xsl:text>
   851   </xsl:template>
   851   </xsl:template>
   852   <xsl:template mode="widget_defs" match="widget[@type='Meter']">
   852   <xsl:template mode="widget_defs" match="widget[@type='Meter']">
       
   853     <xsl:param name="hmi_element"/>
   853     <xsl:text>frequency: 10,
   854     <xsl:text>frequency: 10,
       
   855 </xsl:text>
       
   856     <xsl:for-each select="str:split('value min max needle range')">
       
   857       <xsl:variable name="name" select="."/>
       
   858       <xsl:variable name="elt_id" select="$hmi_element//*[@inkscape:label=$name][1]/@id"/>
       
   859       <xsl:if test="not($elt_id)">
       
   860         <xsl:message terminate="yes">
       
   861           <xsl:text>Meter widget must have a </xsl:text>
       
   862           <xsl:value-of select="$name"/>
       
   863           <xsl:text> element</xsl:text>
       
   864         </xsl:message>
       
   865       </xsl:if>
       
   866       <xsl:value-of select="$name"/>
       
   867       <xsl:text>_elt: document.getElementById("</xsl:text>
       
   868       <xsl:value-of select="$elt_id"/>
       
   869       <xsl:text>"),
       
   870 </xsl:text>
       
   871     </xsl:for-each>
       
   872     <xsl:text>dispatch: function(value) {
       
   873 </xsl:text>
       
   874     <xsl:text>    this.value_elt.textContent = String(value);
       
   875 </xsl:text>
       
   876     <xsl:text>    let [min,max,totallength] = this.range;
       
   877 </xsl:text>
       
   878     <xsl:text>    let length = Math.max(0,Math.min(totallength,(Number(value)-min)*totallength/(max-min)));
       
   879 </xsl:text>
       
   880     <xsl:text>    let tip = this.range_elt.getPointAtLength(length);
       
   881 </xsl:text>
       
   882     <xsl:text>    this.needle_elt.setAttribute('d', "M "+this.origin.x+","+this.origin.y+" "+tip.x+","+tip.y);
       
   883 </xsl:text>
       
   884     <xsl:text>},
       
   885 </xsl:text>
       
   886     <xsl:text>origin: undefined,
       
   887 </xsl:text>
       
   888     <xsl:text>range: undefined,
       
   889 </xsl:text>
       
   890     <xsl:text>init: function() {
       
   891 </xsl:text>
       
   892     <xsl:text>    this.range = [Number(this.min_elt.textContent), Number(this.max_elt.textContent), this.range_elt.getTotalLength()]
       
   893 </xsl:text>
       
   894     <xsl:text>    this.origin = this.needle_elt.getPointAtLength(0);
       
   895 </xsl:text>
       
   896     <xsl:text>},
   854 </xsl:text>
   897 </xsl:text>
   855   </xsl:template>
   898   </xsl:template>
   856   <xsl:template mode="widget_defs" match="widget[@type='Input']">
   899   <xsl:template mode="widget_defs" match="widget[@type='Input']">
   857     <xsl:param name="hmi_element"/>
   900     <xsl:param name="hmi_element"/>
   858     <xsl:text>frequency: 5,
   901     <xsl:text>frequency: 5,