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 => this[prop]=members[prop]); |
883 <xsl:text> Object.keys(members).forEach(prop => 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="'^("[^"].*"|\-?[0-9]+|false|true)(#.*)?$'"/> |
2631 <xsl:variable name="regex" select="'^("[^"].*"|\-?[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]"/> |