svghmi/gen_index_xhtml.xslt
branchsvghmi
changeset 3220 ec365ef396b1
parent 3212 2b5b3f4f26f0
child 3222 6adeeb16ac3e
equal deleted inserted replaced
3219:cc0ecc5e918f 3220:ec365ef396b1
  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="'^(&quot;[^&quot;].*&quot;|\-?[0-9]+|false|true)(#.*)?$'"/>
  6717     <xsl:variable name="regex" select="'^(&quot;[^&quot;].*&quot;|\-?[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) =&gt; this.on_click(evt);
  6822 </xsl:text>
       
  6823     <xsl:text>
       
  6824 </xsl:text>
       
  6825     <xsl:text>        if (this.active_style &amp;&amp; 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>