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, |