732 </xsl:otherwise> |
732 </xsl:otherwise> |
733 </xsl:choose> |
733 </xsl:choose> |
734 </func:function> |
734 </func:function> |
735 <xsl:variable name="_detachable_elements" select="func:detachable_elements($hmi_pages | $keypads)"/> |
735 <xsl:variable name="_detachable_elements" select="func:detachable_elements($hmi_pages | $keypads)"/> |
736 <xsl:variable name="detachable_elements" select="$_detachable_elements[not(ancestor::*/@id = $_detachable_elements/@id)]"/> |
736 <xsl:variable name="detachable_elements" select="$_detachable_elements[not(ancestor::*/@id = $_detachable_elements/@id)]"/> |
|
737 <declarations:page-class/> |
|
738 <xsl:template match="declarations:page-class"> |
|
739 <xsl:text> |
|
740 </xsl:text> |
|
741 <xsl:text>/* </xsl:text> |
|
742 <xsl:value-of select="local-name()"/> |
|
743 <xsl:text> */ |
|
744 </xsl:text> |
|
745 <xsl:text> |
|
746 </xsl:text> |
|
747 <xsl:text>class PageWidget extends Widget{} |
|
748 </xsl:text> |
|
749 <xsl:text> |
|
750 </xsl:text> |
|
751 </xsl:template> |
737 <declarations:detachable-elements/> |
752 <declarations:detachable-elements/> |
738 <xsl:template match="declarations:detachable-elements"> |
753 <xsl:template match="declarations:detachable-elements"> |
739 <xsl:text> |
754 <xsl:text> |
740 </xsl:text> |
755 </xsl:text> |
741 <xsl:text>/* </xsl:text> |
756 <xsl:text>/* </xsl:text> |
785 <xsl:variable name="page" select="."/> |
800 <xsl:variable name="page" select="."/> |
786 <xsl:variable name="p" select="$geometry[@Id = $page/@id]"/> |
801 <xsl:variable name="p" select="$geometry[@Id = $page/@id]"/> |
787 <xsl:variable name="page_all_elements" select="func:all_related_elements($page)"/> |
802 <xsl:variable name="page_all_elements" select="func:all_related_elements($page)"/> |
788 <xsl:variable name="all_page_widgets" select="$hmi_widgets[@id = $page_all_elements/@id and @id != $page/@id]"/> |
803 <xsl:variable name="all_page_widgets" select="$hmi_widgets[@id = $page_all_elements/@id and @id != $page/@id]"/> |
789 <xsl:variable name="page_managed_widgets" select="$all_page_widgets[not(@id=$in_forEach_widget_ids)]"/> |
804 <xsl:variable name="page_managed_widgets" select="$all_page_widgets[not(@id=$in_forEach_widget_ids)]"/> |
790 <xsl:variable name="page_relative_widgets" select="$page_managed_widgets[func:is_descendant_path(func:widget(@id)/path/@value, $desc/path/@value)]"/> |
805 <xsl:variable name="page_root_path" select="$desc/path[not(@assign)]"/> |
|
806 <xsl:if test="count($page_root_path)>1"> |
|
807 <xsl:message terminate="yes"> |
|
808 <xsl:text>Page id="</xsl:text> |
|
809 <xsl:value-of select="$page/@id"/> |
|
810 <xsl:text>" : only one root path can be declared</xsl:text> |
|
811 </xsl:message> |
|
812 </xsl:if> |
|
813 <xsl:variable name="page_relative_widgets" select="$page_managed_widgets[func:is_descendant_path(func:widget(@id)/path/@value, $page_root_path/@value)]"/> |
791 <xsl:variable name="sumarized_page" select="func:sumarized_elements($page_all_elements)"/> |
814 <xsl:variable name="sumarized_page" select="func:sumarized_elements($page_all_elements)"/> |
792 <xsl:variable name="required_detachables" select="$sumarized_page/ ancestor-or-self::*[@id = $detachable_elements/@id]"/> |
815 <xsl:variable name="required_detachables" select="$sumarized_page/ ancestor-or-self::*[@id = $detachable_elements/@id]"/> |
793 <xsl:text> "</xsl:text> |
816 <xsl:text> "</xsl:text> |
794 <xsl:value-of select="$pagename"/> |
817 <xsl:value-of select="$pagename"/> |
795 <xsl:text>": { |
818 <xsl:text>": { |
802 <xsl:value-of select="$p/@w"/> |
825 <xsl:value-of select="$p/@w"/> |
803 <xsl:text>, </xsl:text> |
826 <xsl:text>, </xsl:text> |
804 <xsl:value-of select="$p/@h"/> |
827 <xsl:value-of select="$p/@h"/> |
805 <xsl:text>], |
828 <xsl:text>], |
806 </xsl:text> |
829 </xsl:text> |
807 <xsl:if test="$desc/path/@value"> |
830 <xsl:if test="count($page_root_path)=1"> |
808 <xsl:if test="count($desc/path/@index)=0"> |
831 <xsl:if test="count($page_root_path/@index)=0"> |
809 <xsl:message terminate="no"> |
832 <xsl:message terminate="no"> |
810 <xsl:text>Page id="</xsl:text> |
833 <xsl:text>Page id="</xsl:text> |
811 <xsl:value-of select="$page/@id"/> |
834 <xsl:value-of select="$page/@id"/> |
812 <xsl:text>" : No match for path "</xsl:text> |
835 <xsl:text>" : No match for path "</xsl:text> |
813 <xsl:value-of select="$desc/path/@value"/> |
836 <xsl:value-of select="$page_root_path/@value"/> |
814 <xsl:text>" in HMI tree</xsl:text> |
837 <xsl:text>" in HMI tree</xsl:text> |
815 </xsl:message> |
838 </xsl:message> |
816 </xsl:if> |
839 </xsl:if> |
817 <xsl:text> page_index: </xsl:text> |
840 <xsl:text> page_index: </xsl:text> |
818 <xsl:value-of select="$desc/path/@index"/> |
841 <xsl:value-of select="$page_root_path/@index"/> |
819 <xsl:text>, |
842 <xsl:text>, |
820 </xsl:text> |
843 </xsl:text> |
821 <xsl:text> page_class: "</xsl:text> |
844 <xsl:text> page_class: "</xsl:text> |
822 <xsl:value-of select="$indexed_hmitree/*[@hmipath = $desc/path/@value]/@class"/> |
845 <xsl:value-of select="$indexed_hmitree/*[@hmipath = $page_root_path/@value]/@class"/> |
823 <xsl:text>", |
846 <xsl:text>", |
824 </xsl:text> |
847 </xsl:text> |
825 </xsl:if> |
848 </xsl:if> |
826 <xsl:text> widgets: [ |
849 <xsl:text> widgets: [ |
|
850 </xsl:text> |
|
851 <xsl:text> [hmi_widgets["</xsl:text> |
|
852 <xsl:value-of select="$page/@id"/> |
|
853 <xsl:text>"], []], |
827 </xsl:text> |
854 </xsl:text> |
828 <xsl:for-each select="$page_managed_widgets"> |
855 <xsl:for-each select="$page_managed_widgets"> |
829 <xsl:variable name="widget_paths_relativeness"> |
856 <xsl:variable name="widget_paths_relativeness"> |
830 <xsl:for-each select="func:widget(@id)/path"> |
857 <xsl:for-each select="func:widget(@id)/path"> |
831 <xsl:value-of select="func:is_descendant_path(@value, $desc/path/@value)"/> |
858 <xsl:value-of select="func:is_descendant_path(@value, $page_root_path/@value)"/> |
832 <xsl:if test="position()!=last()"> |
859 <xsl:if test="position()!=last()"> |
833 <xsl:text>,</xsl:text> |
860 <xsl:text>,</xsl:text> |
834 </xsl:if> |
861 </xsl:if> |
835 </xsl:for-each> |
862 </xsl:for-each> |
836 </xsl:variable> |
863 </xsl:variable> |
1438 <xsl:text>],</xsl:text> |
1465 <xsl:text>],</xsl:text> |
1439 <xsl:value-of select="$enable_expr"/> |
1466 <xsl:value-of select="$enable_expr"/> |
1440 <xsl:text>,{ |
1467 <xsl:text>,{ |
1441 </xsl:text> |
1468 </xsl:text> |
1442 <xsl:if test="$widget/@enable_expr"> |
1469 <xsl:if test="$widget/@enable_expr"> |
1443 <xsl:text> assignments: [], |
1470 <xsl:text> enable_assignments: [], |
1444 </xsl:text> |
1471 </xsl:text> |
1445 <xsl:text> compute_enable: function(value, oldval, varnum) { |
1472 <xsl:text> compute_enable: function(value, oldval, varnum) { |
1446 </xsl:text> |
1473 </xsl:text> |
1447 <xsl:text> let result = false; |
1474 <xsl:text> let result = false; |
1448 </xsl:text> |
1475 </xsl:text> |
1454 <xsl:if test="@assign"> |
1481 <xsl:if test="@assign"> |
1455 <xsl:for-each select="$widget/path[@assign]"> |
1482 <xsl:for-each select="$widget/path[@assign]"> |
1456 <xsl:if test="$varid = generate-id()"> |
1483 <xsl:if test="$varid = generate-id()"> |
1457 <xsl:text> if(varnum == </xsl:text> |
1484 <xsl:text> if(varnum == </xsl:text> |
1458 <xsl:value-of select="$varnum"/> |
1485 <xsl:value-of select="$varnum"/> |
1459 <xsl:text>) this.assignments[</xsl:text> |
1486 <xsl:text>) this.enable_assignments[</xsl:text> |
1460 <xsl:value-of select="position()-1"/> |
1487 <xsl:value-of select="position()-1"/> |
1461 <xsl:text>] = value; |
1488 <xsl:text>] = value; |
1462 </xsl:text> |
1489 </xsl:text> |
1463 <xsl:text> let </xsl:text> |
1490 <xsl:text> let </xsl:text> |
1464 <xsl:value-of select="@assign"/> |
1491 <xsl:value-of select="@assign"/> |
1465 <xsl:text> = this.assignments[</xsl:text> |
1492 <xsl:text> = this.enable_assignments[</xsl:text> |
1466 <xsl:value-of select="position()-1"/> |
1493 <xsl:value-of select="position()-1"/> |
1467 <xsl:text>]; |
1494 <xsl:text>]; |
1468 </xsl:text> |
1495 </xsl:text> |
1469 <xsl:text> if(</xsl:text> |
1496 <xsl:text> if(</xsl:text> |
1470 <xsl:value-of select="@assign"/> |
1497 <xsl:value-of select="@assign"/> |
2386 <xsl:value-of select="@type"/> |
2413 <xsl:value-of select="@type"/> |
2387 <xsl:text> widget is used in SVG but widget type is not declared</xsl:text> |
2414 <xsl:text> widget is used in SVG but widget type is not declared</xsl:text> |
2388 </xsl:message> |
2415 </xsl:message> |
2389 </xsl:template> |
2416 </xsl:template> |
2390 <xsl:variable name="included_ids" select="$parsed_widgets/widget[not(@type = $excluded_types) and not(@id = $discardable_elements/@id)]/@id"/> |
2417 <xsl:variable name="included_ids" select="$parsed_widgets/widget[not(@type = $excluded_types) and not(@id = $discardable_elements/@id)]/@id"/> |
|
2418 <xsl:variable name="page_ids" select="$parsed_widgets/widget[@type = 'Page']/@id"/> |
2391 <xsl:variable name="hmi_widgets" select="$hmi_elements[@id = $included_ids]"/> |
2419 <xsl:variable name="hmi_widgets" select="$hmi_elements[@id = $included_ids]"/> |
|
2420 <xsl:variable name="page_widgets" select="$hmi_elements[@id = $page_ids]"/> |
2392 <xsl:variable name="result_widgets" select="$result_svg_ns//*[@id = $hmi_widgets/@id]"/> |
2421 <xsl:variable name="result_widgets" select="$result_svg_ns//*[@id = $hmi_widgets/@id]"/> |
2393 <declarations:hmi-elements/> |
2422 <declarations:hmi-elements/> |
2394 <xsl:template match="declarations:hmi-elements"> |
2423 <xsl:template match="declarations:hmi-elements"> |
2395 <xsl:text> |
2424 <xsl:text> |
2396 </xsl:text> |
2425 </xsl:text> |
7191 </xsl:if> |
7220 </xsl:if> |
7192 <xsl:text> |
7221 <xsl:text> |
7193 </xsl:text> |
7222 </xsl:text> |
7194 </xsl:for-each> |
7223 </xsl:for-each> |
7195 <xsl:text> ], |
7224 <xsl:text> ], |
|
7225 </xsl:text> |
|
7226 </xsl:template> |
|
7227 <xsl:template match="widget[@type='Page']" mode="widget_desc"> |
|
7228 <type> |
|
7229 <xsl:value-of select="@type"/> |
|
7230 </type> |
|
7231 <longdesc> |
|
7232 <xsl:text> |
|
7233 </xsl:text> |
|
7234 <xsl:text>Arguments are either: |
|
7235 </xsl:text> |
|
7236 <xsl:text> |
|
7237 </xsl:text> |
|
7238 <xsl:text>- XXX reference path TODO |
|
7239 </xsl:text> |
|
7240 <xsl:text> |
|
7241 </xsl:text> |
|
7242 <xsl:text>- name=value: setting variable with literal value. |
|
7243 </xsl:text> |
|
7244 <xsl:text>- name=other_name: copy variable content into another |
|
7245 </xsl:text> |
|
7246 <xsl:text> |
|
7247 </xsl:text> |
|
7248 <xsl:text>"active"+"inactive" labeled elements can be provided to show feedback when pressed |
|
7249 </xsl:text> |
|
7250 <xsl:text> |
|
7251 </xsl:text> |
|
7252 <xsl:text>Exemples: |
|
7253 </xsl:text> |
|
7254 <xsl:text> |
|
7255 </xsl:text> |
|
7256 <xsl:text>HMI:Page:notify=1@notify=/PLCVAR |
|
7257 </xsl:text> |
|
7258 <xsl:text>HMI:Page:ack=2:notify=1@ack=.local_var@notify=/PLCVAR |
|
7259 </xsl:text> |
|
7260 <xsl:text> |
|
7261 </xsl:text> |
|
7262 </longdesc> |
|
7263 <shortdesc> |
|
7264 <xsl:text>Page </xsl:text> |
|
7265 </shortdesc> |
|
7266 </xsl:template> |
|
7267 <xsl:template match="widget[@type='Page']" mode="widget_defs"> |
|
7268 <xsl:param name="hmi_element"/> |
|
7269 <xsl:variable name="disability"> |
|
7270 <xsl:call-template name="defs_by_labels"> |
|
7271 <xsl:with-param name="hmi_element" select="$hmi_element"/> |
|
7272 <xsl:with-param name="labels"> |
|
7273 <xsl:text>/disabled</xsl:text> |
|
7274 </xsl:with-param> |
|
7275 <xsl:with-param name="mandatory" select="'no'"/> |
|
7276 </xsl:call-template> |
|
7277 </xsl:variable> |
|
7278 <xsl:value-of select="$disability"/> |
|
7279 <xsl:variable name="has_disability" select="string-length($disability)>0"/> |
|
7280 <xsl:text> assignments: {}, |
|
7281 </xsl:text> |
|
7282 <xsl:text> dispatch: function(value, oldval, varnum) { |
|
7283 </xsl:text> |
|
7284 <xsl:variable name="widget" select="."/> |
|
7285 <xsl:for-each select="path"> |
|
7286 <xsl:variable name="varid" select="generate-id()"/> |
|
7287 <xsl:variable name="varnum" select="position()-1"/> |
|
7288 <xsl:if test="@assign"> |
|
7289 <xsl:for-each select="$widget/path[@assign]"> |
|
7290 <xsl:if test="$varid = generate-id()"> |
|
7291 <xsl:text> if(varnum == </xsl:text> |
|
7292 <xsl:value-of select="$varnum"/> |
|
7293 <xsl:text>) this.assignments["</xsl:text> |
|
7294 <xsl:value-of select="@assign"/> |
|
7295 <xsl:text>"] = value; |
|
7296 </xsl:text> |
|
7297 </xsl:if> |
|
7298 </xsl:for-each> |
|
7299 </xsl:if> |
|
7300 </xsl:for-each> |
|
7301 <xsl:text> }, |
|
7302 </xsl:text> |
|
7303 <xsl:text> assign: function() { |
|
7304 </xsl:text> |
|
7305 <xsl:variable name="paths" select="path"/> |
|
7306 <xsl:for-each select="arg[contains(@value,'=')]"> |
|
7307 <xsl:variable name="name" select="substring-before(@value,'=')"/> |
|
7308 <xsl:variable name="value" select="substring-after(@value,'=')"/> |
|
7309 <xsl:variable name="index"> |
|
7310 <xsl:for-each select="$paths"> |
|
7311 <xsl:if test="@assign = $name"> |
|
7312 <xsl:value-of select="position()-1"/> |
|
7313 </xsl:if> |
|
7314 </xsl:for-each> |
|
7315 </xsl:variable> |
|
7316 <xsl:variable name="isVarName" select="regexp:test($value,'^[a-zA-Z_][a-zA-Z0-9_]+$')"/> |
|
7317 <xsl:choose> |
|
7318 <xsl:when test="$isVarName"> |
|
7319 <xsl:text> const </xsl:text> |
|
7320 <xsl:value-of select="$value"/> |
|
7321 <xsl:text> = this.assignments["</xsl:text> |
|
7322 <xsl:value-of select="$value"/> |
|
7323 <xsl:text>"]; |
|
7324 </xsl:text> |
|
7325 <xsl:text> if(</xsl:text> |
|
7326 <xsl:value-of select="$value"/> |
|
7327 <xsl:text> != undefined) |
|
7328 </xsl:text> |
|
7329 <xsl:text> this.apply_hmi_value(</xsl:text> |
|
7330 <xsl:value-of select="$index"/> |
|
7331 <xsl:text>, </xsl:text> |
|
7332 <xsl:value-of select="$value"/> |
|
7333 <xsl:text>); |
|
7334 </xsl:text> |
|
7335 </xsl:when> |
|
7336 <xsl:otherwise> |
|
7337 <xsl:text> this.apply_hmi_value(</xsl:text> |
|
7338 <xsl:value-of select="$index"/> |
|
7339 <xsl:text>, </xsl:text> |
|
7340 <xsl:value-of select="$value"/> |
|
7341 <xsl:text>); |
|
7342 </xsl:text> |
|
7343 </xsl:otherwise> |
|
7344 </xsl:choose> |
|
7345 </xsl:for-each> |
|
7346 <xsl:text> }, |
7196 </xsl:text> |
7347 </xsl:text> |
7197 </xsl:template> |
7348 </xsl:template> |
7198 <xsl:template match="widget[@type='PathSlider']" mode="widget_desc"> |
7349 <xsl:template match="widget[@type='PathSlider']" mode="widget_desc"> |
7199 <type> |
7350 <type> |
7200 <xsl:value-of select="@type"/> |
7351 <xsl:value-of select="@type"/> |