svghmi/gen_index_xhtml.xslt
branchsvghmi
changeset 2962 02ea529fd08c
parent 2961 00825316ed00
child 2969 88988edb2e93
equal deleted inserted replaced
2961:00825316ed00 2962:02ea529fd08c
   864 </xsl:text>
   864 </xsl:text>
   865     <xsl:text>
   865     <xsl:text>
   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>    offset = 0;
       
   870 </xsl:text>
       
   871     <xsl:text>    frequency = 10; /* FIXME arbitrary default max freq. Obtain from config ? */
       
   872 </xsl:text>
   869     <xsl:text>    constructor(elt_id,args,indexes,members){
   873     <xsl:text>    constructor(elt_id,args,indexes,members){
   870 </xsl:text>
   874 </xsl:text>
   871     <xsl:text>        this.element_id = elt_id;
   875     <xsl:text>        this.element_id = elt_id;
   872 </xsl:text>
   876 </xsl:text>
   873     <xsl:text>        this.element = id(elt_id);
   877     <xsl:text>        this.element = id(elt_id);
   874 </xsl:text>
   878 </xsl:text>
   875     <xsl:text>        this.args = args;
   879     <xsl:text>        this.args = args;
   876 </xsl:text>
   880 </xsl:text>
   877     <xsl:text>        this.indexes = indexes;
   881     <xsl:text>        this.indexes = indexes;
   878 </xsl:text>
       
   879     <xsl:text>        this.offset = 0;
       
   880 </xsl:text>
   882 </xsl:text>
   881     <xsl:text>        Object.keys(members).forEach(prop =&gt; this[prop]=members[prop]);
   883     <xsl:text>        Object.keys(members).forEach(prop =&gt; this[prop]=members[prop]);
   882 </xsl:text>
   884 </xsl:text>
   883     <xsl:text>    }
   885     <xsl:text>    }
   884 </xsl:text>
   886 </xsl:text>
  1112     <xsl:text>class ButtonWidget extends Widget{
  1114     <xsl:text>class ButtonWidget extends Widget{
  1113 </xsl:text>
  1115 </xsl:text>
  1114     <xsl:text>    frequency = 5;
  1116     <xsl:text>    frequency = 5;
  1115 </xsl:text>
  1117 </xsl:text>
  1116     <xsl:text>    init() {
  1118     <xsl:text>    init() {
       
  1119 </xsl:text>
       
  1120     <xsl:text>        // TODO : use attributes to allow interaction through svg:use
       
  1121 </xsl:text>
       
  1122     <xsl:text>        // TODO : deal with dragging
  1117 </xsl:text>
  1123 </xsl:text>
  1118     <xsl:text>        this.element.addEventListener(
  1124     <xsl:text>        this.element.addEventListener(
  1119 </xsl:text>
  1125 </xsl:text>
  1120     <xsl:text>          "mousedown",
  1126     <xsl:text>          "mousedown",
  1121 </xsl:text>
  1127 </xsl:text>
  2590     <xsl:text>        this.origin = this.needle_elt.getPointAtLength(0);
  2596     <xsl:text>        this.origin = this.needle_elt.getPointAtLength(0);
  2591 </xsl:text>
  2597 </xsl:text>
  2592     <xsl:text>    },
  2598     <xsl:text>    },
  2593 </xsl:text>
  2599 </xsl:text>
  2594   </xsl:template>
  2600   </xsl:template>
       
  2601   <xsl:template mode="widget_class" match="widget[@type='Switch']">
       
  2602     <xsl:text>class SwitchWidget extends Widget{
       
  2603 </xsl:text>
       
  2604     <xsl:text>    frequency = 5;
       
  2605 </xsl:text>
       
  2606     <xsl:text>    dispatch(value) {
       
  2607 </xsl:text>
       
  2608     <xsl:text>        for(let choice of this.choices){
       
  2609 </xsl:text>
       
  2610     <xsl:text>            if(value != choice.value){
       
  2611 </xsl:text>
       
  2612     <xsl:text>                choice.elt.setAttribute("style", "display:none");
       
  2613 </xsl:text>
       
  2614     <xsl:text>            } else {
       
  2615 </xsl:text>
       
  2616     <xsl:text>                choice.elt.setAttribute("style", choice.style);
       
  2617 </xsl:text>
       
  2618     <xsl:text>            }
       
  2619 </xsl:text>
       
  2620     <xsl:text>        }
       
  2621 </xsl:text>
       
  2622     <xsl:text>    }
       
  2623 </xsl:text>
       
  2624     <xsl:text>}
       
  2625 </xsl:text>
       
  2626   </xsl:template>
  2595   <xsl:template mode="widget_defs" match="widget[@type='Switch']">
  2627   <xsl:template mode="widget_defs" match="widget[@type='Switch']">
  2596     <xsl:param name="hmi_element"/>
  2628     <xsl:param name="hmi_element"/>
  2597     <xsl:text>    frequency: 5,
       
  2598 </xsl:text>
       
  2599     <xsl:text>    dispatch: function(value) {
       
  2600 </xsl:text>
       
  2601     <xsl:text>        for(let choice of this.choices){
       
  2602 </xsl:text>
       
  2603     <xsl:text>            if(value != choice.value){
       
  2604 </xsl:text>
       
  2605     <xsl:text>                choice.elt.setAttribute("style", "display:none");
       
  2606 </xsl:text>
       
  2607     <xsl:text>            } else {
       
  2608 </xsl:text>
       
  2609     <xsl:text>                choice.elt.setAttribute("style", choice.style);
       
  2610 </xsl:text>
       
  2611     <xsl:text>            }
       
  2612 </xsl:text>
       
  2613     <xsl:text>        }
       
  2614 </xsl:text>
       
  2615     <xsl:text>    },
       
  2616 </xsl:text>
       
  2617     <xsl:text>    init: function() {
       
  2618 </xsl:text>
       
  2619     <xsl:text>        // Hello Switch
       
  2620 </xsl:text>
       
  2621     <xsl:text>    },
       
  2622 </xsl:text>
       
  2623     <xsl:text>    choices: [
  2629     <xsl:text>    choices: [
  2624 </xsl:text>
  2630 </xsl:text>
  2625     <xsl:variable name="regex" select="'^(&quot;[^&quot;].*&quot;|\-?[0-9]+|false|true)(#.*)?$'"/>
  2631     <xsl:variable name="regex" select="'^(&quot;[^&quot;].*&quot;|\-?[0-9]+|false|true)(#.*)?$'"/>
  2626     <xsl:for-each select="$hmi_element/*[regexp:test(@inkscape:label,$regex)]">
  2632     <xsl:for-each select="$hmi_element/*[regexp:test(@inkscape:label,$regex)]">
  2627       <xsl:variable name="literal" select="regexp:match(@inkscape:label,$regex)[2]"/>
  2633       <xsl:variable name="literal" select="regexp:match(@inkscape:label,$regex)[2]"/>