svghmi/gen_index_xhtml.xslt
branchsvghmi
changeset 2822 9101a72a1da0
parent 2814 2cabc4773885
child 2826 1e5abecc3cde
equal deleted inserted replaced
2821:d92d201d22e1 2822:9101a72a1da0
   262     </xsl:for-each>
   262     </xsl:for-each>
   263     <xsl:text>}
   263     <xsl:text>}
   264 </xsl:text>
   264 </xsl:text>
   265     <xsl:text>
   265     <xsl:text>
   266 </xsl:text>
   266 </xsl:text>
       
   267     <xsl:text>var heartbeat_index = </xsl:text>
       
   268     <xsl:value-of select="$indexed_hmitree/*[@hmipath = '/HEARTBEAT']/@index"/>
       
   269     <xsl:text>;
       
   270 </xsl:text>
       
   271     <xsl:text>
       
   272 </xsl:text>
   267     <xsl:text>var hmitree_types = [
   273     <xsl:text>var hmitree_types = [
   268 </xsl:text>
   274 </xsl:text>
   269     <xsl:for-each select="$indexed_hmitree/*">
   275     <xsl:for-each select="$indexed_hmitree/*">
   270       <xsl:text>/* </xsl:text>
   276       <xsl:text>/* </xsl:text>
   271       <xsl:value-of select="@index"/>
   277       <xsl:value-of select="@index"/>
   574 </xsl:text>
   580 </xsl:text>
   575     <xsl:text>var subscribers = hmitree_types.map(_ignored =&gt; new Set());
   581     <xsl:text>var subscribers = hmitree_types.map(_ignored =&gt; new Set());
   576 </xsl:text>
   582 </xsl:text>
   577     <xsl:text>
   583     <xsl:text>
   578 </xsl:text>
   584 </xsl:text>
       
   585     <xsl:text>// artificially subscribe the watchdog widget to "/heartbeat" hmi variable
       
   586 </xsl:text>
       
   587     <xsl:text>// Since dispatch directly calls change_hmi_value, 
       
   588 </xsl:text>
       
   589     <xsl:text>// PLC will periodically send variable at given frequency
       
   590 </xsl:text>
       
   591     <xsl:text>subscribers[heartbeat_index].add({
       
   592 </xsl:text>
       
   593     <xsl:text>    /* type: "Watchdog", */
       
   594 </xsl:text>
       
   595     <xsl:text>    frequency: 1,
       
   596 </xsl:text>
       
   597     <xsl:text>    indexes: [heartbeat_index],
       
   598 </xsl:text>
       
   599     <xsl:text>    dispatch: function(value) {
       
   600 </xsl:text>
       
   601     <xsl:text>        console.log("Heartbeat" + value);
       
   602 </xsl:text>
       
   603     <xsl:text>        change_hmi_value(this.indexes[0], "+1");
       
   604 </xsl:text>
       
   605     <xsl:text>    }
       
   606 </xsl:text>
       
   607     <xsl:text>});
       
   608 </xsl:text>
       
   609     <xsl:text>
       
   610 </xsl:text>
   579     <xsl:text>function update_subscriptions() {
   611     <xsl:text>function update_subscriptions() {
   580 </xsl:text>
   612 </xsl:text>
   581     <xsl:text>    let delta = [];
   613     <xsl:text>    let delta = [];
   582 </xsl:text>
   614 </xsl:text>
   583     <xsl:text>    for(let index = 0; index &lt; subscribers.length; index++){
   615     <xsl:text>    for(let index = 0; index &lt; subscribers.length; index++){
   589     <xsl:text>        // periods are in ms
   621     <xsl:text>        // periods are in ms
   590 </xsl:text>
   622 </xsl:text>
   591     <xsl:text>        let previous_period = subscriptions[index];
   623     <xsl:text>        let previous_period = subscriptions[index];
   592 </xsl:text>
   624 </xsl:text>
   593     <xsl:text>
   625     <xsl:text>
       
   626 </xsl:text>
       
   627     <xsl:text>        // subscribing with a zero period is unsubscribing
   594 </xsl:text>
   628 </xsl:text>
   595     <xsl:text>        let new_period = 0;
   629     <xsl:text>        let new_period = 0;
   596 </xsl:text>
   630 </xsl:text>
   597     <xsl:text>        if(widgets.size &gt; 0) {
   631     <xsl:text>        if(widgets.size &gt; 0) {
   598 </xsl:text>
   632 </xsl:text>