6713 <xsl:template mode="widget_defs" match="widget[@type='Switch']"> |
6713 <xsl:template mode="widget_defs" match="widget[@type='Switch']"> |
6714 <xsl:param name="hmi_element"/> |
6714 <xsl:param name="hmi_element"/> |
6715 <xsl:text> choices: [ |
6715 <xsl:text> choices: [ |
6716 </xsl:text> |
6716 </xsl:text> |
6717 <xsl:variable name="regex" select="'^("[^"].*"|\-?[0-9]+|false|true)(#.*)?$'"/> |
6717 <xsl:variable name="regex" select="'^("[^"].*"|\-?[0-9]+|false|true)(#.*)?$'"/> |
6718 <xsl:for-each select="$result_svg_ns//*[@id = $hmi_element/@id]//*[regexp:test(@inkscape:label,$regex)]"> |
6718 <xsl:variable name="subelts" select="$result_widgets[@id = $hmi_element/@id]//*"/> |
|
6719 <xsl:variable name="subwidgets" select="$subelts//*[@id = $hmi_widgets/@id]"/> |
|
6720 <xsl:variable name="accepted" select="$subelts[not(ancestor-or-self::*/@id = $subwidgets/@id)]"/> |
|
6721 <xsl:for-each select="$accepted[regexp:test(@inkscape:label,$regex)]"> |
6719 <xsl:variable name="literal" select="regexp:match(@inkscape:label,$regex)[2]"/> |
6722 <xsl:variable name="literal" select="regexp:match(@inkscape:label,$regex)[2]"/> |
6720 <xsl:text> { |
6723 <xsl:text> { |
6721 </xsl:text> |
6724 </xsl:text> |
6722 <xsl:text> elt:id("</xsl:text> |
6725 <xsl:text> elt:id("</xsl:text> |
6723 <xsl:value-of select="@id"/> |
6726 <xsl:value-of select="@id"/> |
6768 </xsl:text> |
6771 </xsl:text> |
6769 <xsl:text> on_click(evt) { |
6772 <xsl:text> on_click(evt) { |
6770 </xsl:text> |
6773 </xsl:text> |
6771 <xsl:text> //toggle state and apply |
6774 <xsl:text> //toggle state and apply |
6772 </xsl:text> |
6775 </xsl:text> |
6773 <xsl:text> if (this.state) { |
6776 <xsl:text> this.state = this.state ? false : true; |
6774 </xsl:text> |
|
6775 <xsl:text> this.state = 0; |
|
6776 </xsl:text> |
|
6777 <xsl:text> } else { |
|
6778 </xsl:text> |
|
6779 <xsl:text> this.state = 1; |
|
6780 </xsl:text> |
|
6781 <xsl:text> } |
|
6782 </xsl:text> |
6777 </xsl:text> |
6783 <xsl:text> this.apply_hmi_value(0, this.state); |
6778 <xsl:text> this.apply_hmi_value(0, this.state); |
6784 </xsl:text> |
6779 </xsl:text> |
6785 <xsl:text> |
6780 <xsl:text> |
6786 </xsl:text> |
6781 </xsl:text> |
6790 </xsl:text> |
6785 </xsl:text> |
6791 <xsl:text> } |
6786 <xsl:text> } |
6792 </xsl:text> |
6787 </xsl:text> |
6793 <xsl:text> |
6788 <xsl:text> |
6794 </xsl:text> |
6789 </xsl:text> |
|
6790 <xsl:text> activate(val) { |
|
6791 </xsl:text> |
|
6792 <xsl:text> let [active, inactive] = val ? ["none",""] : ["", "none"]; |
|
6793 </xsl:text> |
|
6794 <xsl:text> if (this.active_elt) |
|
6795 </xsl:text> |
|
6796 <xsl:text> this.active_elt.style.display = active; |
|
6797 </xsl:text> |
|
6798 <xsl:text> if (this.inactive_elt) |
|
6799 </xsl:text> |
|
6800 <xsl:text> this.inactive_elt.style.display = inactive; |
|
6801 </xsl:text> |
|
6802 <xsl:text> } |
|
6803 </xsl:text> |
|
6804 <xsl:text> |
|
6805 </xsl:text> |
6795 <xsl:text> animate(){ |
6806 <xsl:text> animate(){ |
6796 </xsl:text> |
6807 </xsl:text> |
6797 <xsl:text> // redraw toggle button on screen refresh |
6808 <xsl:text> // redraw toggle button on screen refresh |
6798 </xsl:text> |
6809 </xsl:text> |
6799 <xsl:text> if (this.state) { |
6810 <xsl:text> this.activate(this.state); |
6800 </xsl:text> |
|
6801 <xsl:text> this.active_elt.setAttribute("style", this.active_style); |
|
6802 </xsl:text> |
|
6803 <xsl:text> this.inactive_elt.setAttribute("style", "display:none"); |
|
6804 </xsl:text> |
|
6805 <xsl:text> } else { |
|
6806 </xsl:text> |
|
6807 <xsl:text> this.inactive_elt.setAttribute("style", this.inactive_style); |
|
6808 </xsl:text> |
|
6809 <xsl:text> this.active_elt.setAttribute("style", "display:none"); |
|
6810 </xsl:text> |
|
6811 <xsl:text> } |
|
6812 </xsl:text> |
6811 </xsl:text> |
6813 <xsl:text> } |
6812 <xsl:text> } |
6814 </xsl:text> |
6813 </xsl:text> |
6815 <xsl:text> |
6814 <xsl:text> |
6816 </xsl:text> |
6815 </xsl:text> |
6817 <xsl:text> init() { |
6816 <xsl:text> init() { |
6818 </xsl:text> |
6817 </xsl:text> |
6819 <xsl:text> this.active_style = this.active_elt ? this.active_elt.style.cssText : undefined; |
6818 <xsl:text> this.activate(false); |
6820 </xsl:text> |
6819 </xsl:text> |
6821 <xsl:text> this.inactive_style = this.inactive_elt ? this.inactive_elt.style.cssText : undefined; |
6820 <xsl:text> this.element.onclick = (evt) => this.on_click(evt); |
6822 </xsl:text> |
|
6823 <xsl:text> |
|
6824 </xsl:text> |
|
6825 <xsl:text> if (this.active_style && this.inactive_style) { |
|
6826 </xsl:text> |
|
6827 <xsl:text> this.active_elt.setAttribute("style", "display:none"); |
|
6828 </xsl:text> |
|
6829 <xsl:text> this.inactive_elt.setAttribute("style", this.inactive_style); |
|
6830 </xsl:text> |
|
6831 <xsl:text> } |
|
6832 </xsl:text> |
|
6833 <xsl:text> |
|
6834 </xsl:text> |
|
6835 <xsl:text> this.element.setAttribute("onclick", "hmi_widgets['"+this.element_id+"'].on_click(evt)"); |
|
6836 </xsl:text> |
6821 </xsl:text> |
6837 <xsl:text> } |
6822 <xsl:text> } |
6838 </xsl:text> |
6823 </xsl:text> |
6839 <xsl:text>} |
6824 <xsl:text>} |
6840 </xsl:text> |
6825 </xsl:text> |
6846 <xsl:with-param name="labels"> |
6831 <xsl:with-param name="labels"> |
6847 <xsl:text>active inactive</xsl:text> |
6832 <xsl:text>active inactive</xsl:text> |
6848 </xsl:with-param> |
6833 </xsl:with-param> |
6849 <xsl:with-param name="mandatory" select="'no'"/> |
6834 <xsl:with-param name="mandatory" select="'no'"/> |
6850 </xsl:call-template> |
6835 </xsl:call-template> |
6851 <xsl:text> |
|
6852 </xsl:text> |
|
6853 </xsl:template> |
6836 </xsl:template> |
6854 <xsl:template match="/"> |
6837 <xsl:template match="/"> |
6855 <xsl:comment> |
6838 <xsl:comment> |
6856 <xsl:text>Made with SVGHMI. https://beremiz.org</xsl:text> |
6839 <xsl:text>Made with SVGHMI. https://beremiz.org</xsl:text> |
6857 </xsl:comment> |
6840 </xsl:comment> |