svghmi/gen_index_xhtml.xslt
branchsvghmi
changeset 2961 00825316ed00
parent 2955 64e603b84aa3
child 2962 02ea529fd08c
equal deleted inserted replaced
2960:5ad82541b46e 2961:00825316ed00
   866 </xsl:text>
   866 </xsl:text>
   867     <xsl:text>class Widget {
   867     <xsl:text>class Widget {
   868 </xsl:text>
   868 </xsl:text>
   869     <xsl:text>    constructor(elt_id,args,indexes,members){
   869     <xsl:text>    constructor(elt_id,args,indexes,members){
   870 </xsl:text>
   870 </xsl:text>
       
   871     <xsl:text>        this.element_id = elt_id;
       
   872 </xsl:text>
   871     <xsl:text>        this.element = id(elt_id);
   873     <xsl:text>        this.element = id(elt_id);
   872 </xsl:text>
   874 </xsl:text>
   873     <xsl:text>        this.args = args;
   875     <xsl:text>        this.args = args;
   874 </xsl:text>
   876 </xsl:text>
   875     <xsl:text>        this.indexes = indexes;
   877     <xsl:text>        this.indexes = indexes;
   877     <xsl:text>        this.offset = 0;
   879     <xsl:text>        this.offset = 0;
   878 </xsl:text>
   880 </xsl:text>
   879     <xsl:text>        Object.keys(members).forEach(prop =&gt; this[prop]=members[prop]);
   881     <xsl:text>        Object.keys(members).forEach(prop =&gt; this[prop]=members[prop]);
   880 </xsl:text>
   882 </xsl:text>
   881     <xsl:text>    }
   883     <xsl:text>    }
       
   884 </xsl:text>
       
   885     <xsl:text>
   882 </xsl:text>
   886 </xsl:text>
   883     <xsl:text>    unsub(){
   887     <xsl:text>    unsub(){
   884 </xsl:text>
   888 </xsl:text>
   885     <xsl:text>        /* remove subsribers */
   889     <xsl:text>        /* remove subsribers */
   886 </xsl:text>
   890 </xsl:text>
  1076       <xsl:otherwise>
  1080       <xsl:otherwise>
  1077         <func:result select="$txt"/>
  1081         <func:result select="$txt"/>
  1078       </xsl:otherwise>
  1082       </xsl:otherwise>
  1079     </xsl:choose>
  1083     </xsl:choose>
  1080   </func:function>
  1084   </func:function>
  1081   <xsl:template mode="widget_defs" match="widget[@type='Back']">
  1085   <xsl:template mode="widget_class" match="widget[@type='Back']">
  1082     <xsl:param name="hmi_element"/>
  1086     <xsl:text>class BackWidget extends Widget{
  1083     <xsl:text>    on_click: function(evt) {
  1087 </xsl:text>
       
  1088     <xsl:text>    on_click(evt) {
  1084 </xsl:text>
  1089 </xsl:text>
  1085     <xsl:text>        if(jump_history.length &gt; 1){
  1090     <xsl:text>        if(jump_history.length &gt; 1){
  1086 </xsl:text>
  1091 </xsl:text>
  1087     <xsl:text>           jump_history.pop();
  1092     <xsl:text>           jump_history.pop();
  1088 </xsl:text>
  1093 </xsl:text>
  1090 </xsl:text>
  1095 </xsl:text>
  1091     <xsl:text>           switch_page(page_name, index);
  1096     <xsl:text>           switch_page(page_name, index);
  1092 </xsl:text>
  1097 </xsl:text>
  1093     <xsl:text>        }
  1098     <xsl:text>        }
  1094 </xsl:text>
  1099 </xsl:text>
  1095     <xsl:text>    },
  1100     <xsl:text>    }
  1096 </xsl:text>
  1101 </xsl:text>
  1097     <xsl:text>    init: function() {
  1102     <xsl:text>    init() {
  1098 </xsl:text>
  1103 </xsl:text>
  1099     <xsl:text>        this.element.setAttribute("onclick", "hmi_widgets['</xsl:text>
  1104     <xsl:text>        this.element.setAttribute("onclick", "hmi_widgets['"+this.element_id+"'].on_click(evt)");
  1100     <xsl:value-of select="$hmi_element/@id"/>
  1105 </xsl:text>
  1101     <xsl:text>'].on_click(evt)");
  1106     <xsl:text>    }
  1102 </xsl:text>
  1107 </xsl:text>
  1103     <xsl:text>    },
  1108     <xsl:text>}
  1104 </xsl:text>
  1109 </xsl:text>
  1105   </xsl:template>
  1110   </xsl:template>
  1106   <xsl:template mode="widget_defs" match="widget[@type='Button']">
  1111   <xsl:template mode="widget_class" match="widget[@type='Button']">
  1107     <xsl:param name="hmi_element"/>
  1112     <xsl:text>class ButtonWidget extends Widget{
  1108     <xsl:text>frequency: 5,
  1113 </xsl:text>
  1109 </xsl:text>
  1114     <xsl:text>    frequency = 5;
  1110     <xsl:text>init: function() {
  1115 </xsl:text>
  1111 </xsl:text>
  1116     <xsl:text>    init() {
  1112     <xsl:text>    this.element.addEventListener(
  1117 </xsl:text>
  1113 </xsl:text>
  1118     <xsl:text>        this.element.addEventListener(
  1114     <xsl:text>      "mousedown",
  1119 </xsl:text>
  1115 </xsl:text>
  1120     <xsl:text>          "mousedown",
  1116     <xsl:text>      evt =&gt; {
  1121 </xsl:text>
  1117 </xsl:text>
  1122     <xsl:text>          evt =&gt; {
  1118     <xsl:text>          change_hmi_value(this.indexes[0], "=1");
  1123 </xsl:text>
  1119 </xsl:text>
  1124     <xsl:text>              change_hmi_value(this.indexes[0], "=1");
  1120     <xsl:text>      });
  1125 </xsl:text>
  1121 </xsl:text>
  1126     <xsl:text>          });
  1122     <xsl:text>    this.element.addEventListener(
  1127 </xsl:text>
  1123 </xsl:text>
  1128     <xsl:text>        this.element.addEventListener(
  1124     <xsl:text>      "mouseup",
  1129 </xsl:text>
  1125 </xsl:text>
  1130     <xsl:text>          "mouseup",
  1126     <xsl:text>      evt =&gt; {
  1131 </xsl:text>
  1127 </xsl:text>
  1132     <xsl:text>          evt =&gt; {
  1128     <xsl:text>          change_hmi_value(this.indexes[0], "=0");
  1133 </xsl:text>
  1129 </xsl:text>
  1134     <xsl:text>              change_hmi_value(this.indexes[0], "=0");
  1130     <xsl:text>      });
  1135 </xsl:text>
  1131 </xsl:text>
  1136     <xsl:text>          });
  1132     <xsl:text>},
  1137 </xsl:text>
       
  1138     <xsl:text>    }
       
  1139 </xsl:text>
       
  1140     <xsl:text>}
  1133 </xsl:text>
  1141 </xsl:text>
  1134   </xsl:template>
  1142   </xsl:template>
  1135   <xsl:template mode="widget_defs" match="widget[@type='CircularBar']">
  1143   <xsl:template mode="widget_defs" match="widget[@type='CircularBar']">
  1136     <xsl:param name="hmi_element"/>
  1144     <xsl:param name="hmi_element"/>
  1137     <xsl:text>frequency: 10,
  1145     <xsl:text>frequency: 10,
  1765     <xsl:text>    },
  1773     <xsl:text>    },
  1766 </xsl:text>
  1774 </xsl:text>
  1767   </xsl:template>
  1775   </xsl:template>
  1768   <xsl:template mode="widget_defs" match="widget[@type='ForEach']">
  1776   <xsl:template mode="widget_defs" match="widget[@type='ForEach']">
  1769     <xsl:param name="hmi_element"/>
  1777     <xsl:param name="hmi_element"/>
  1770     <xsl:variable name="widgets" select="func:refered_elements($forEach_widgets)[not(@id = $forEach_widgets_ids)]"/>
       
  1771     <xsl:variable name="class" select="arg[1]/@value"/>
  1778     <xsl:variable name="class" select="arg[1]/@value"/>
  1772     <xsl:variable name="base_path" select="path/@value"/>
  1779     <xsl:variable name="base_path" select="path/@value"/>
  1773     <xsl:variable name="hmi_index_base" select="$indexed_hmitree/*[@hmipath = $base_path]"/>
  1780     <xsl:variable name="hmi_index_base" select="$indexed_hmitree/*[@hmipath = $base_path]"/>
  1774     <xsl:variable name="hmi_tree_base" select="$hmitree/descendant-or-self::*[@path = $hmi_index_base/@path]"/>
  1781     <xsl:variable name="hmi_tree_base" select="$hmitree/descendant-or-self::*[@path = $hmi_index_base/@path]"/>
  1775     <xsl:variable name="hmi_tree_items" select="$hmi_tree_base/*[@class = $class]"/>
  1782     <xsl:variable name="hmi_tree_items" select="$hmi_tree_base/*[@class = $class]"/>
  3102 </xsl:text>
  3109 </xsl:text>
  3103           <xsl:text>        if(widgets.size &gt; 0) {
  3110           <xsl:text>        if(widgets.size &gt; 0) {
  3104 </xsl:text>
  3111 </xsl:text>
  3105           <xsl:text>            let maxfreq = 0;
  3112           <xsl:text>            let maxfreq = 0;
  3106 </xsl:text>
  3113 </xsl:text>
  3107           <xsl:text>            for(let widget of widgets)
  3114           <xsl:text>            for(let widget of widgets){
  3108 </xsl:text>
  3115 </xsl:text>
  3109           <xsl:text>                if(maxfreq &lt; widget.frequency)
  3116           <xsl:text>                let wf = widget.frequency;
  3110 </xsl:text>
  3117 </xsl:text>
  3111           <xsl:text>                    maxfreq = widget.frequency;
  3118           <xsl:text>                if(wf != undefined &amp;&amp; maxfreq &lt; wf)
       
  3119 </xsl:text>
       
  3120           <xsl:text>                    maxfreq = wf;
       
  3121 </xsl:text>
       
  3122           <xsl:text>            }
  3112 </xsl:text>
  3123 </xsl:text>
  3113           <xsl:text>
  3124           <xsl:text>
  3114 </xsl:text>
  3125 </xsl:text>
  3115           <xsl:text>            if(maxfreq != 0)
  3126           <xsl:text>            if(maxfreq != 0)
  3116 </xsl:text>
  3127 </xsl:text>