196 <xsl:with-param name="parentpath"> |
196 <xsl:with-param name="parentpath"> |
197 <xsl:value-of select="$parentpath"/> |
197 <xsl:value-of select="$parentpath"/> |
198 </xsl:with-param> |
198 </xsl:with-param> |
199 </xsl:apply-templates> |
199 </xsl:apply-templates> |
200 </xsl:template> |
200 </xsl:template> |
|
201 <func:function name="func:is_descendant_path"> |
|
202 <xsl:param name="ancest"/> |
|
203 <xsl:param name="descend"/> |
|
204 <func:result select="starts-with($descend,$ancest)"/> |
|
205 </func:function> |
201 <xsl:template mode="inline_svg" match="@* | node()"> |
206 <xsl:template mode="inline_svg" match="@* | node()"> |
202 <xsl:if test="not(@id = $discardable_elements/@id)"> |
207 <xsl:if test="not(@id = $discardable_elements/@id)"> |
203 <xsl:copy> |
208 <xsl:copy> |
204 <xsl:apply-templates mode="inline_svg" select="@* | node()"/> |
209 <xsl:apply-templates mode="inline_svg" select="@* | node()"/> |
205 </xsl:copy> |
210 </xsl:copy> |
397 </xsl:attribute> |
402 </xsl:attribute> |
398 </arg> |
403 </arg> |
399 </xsl:for-each> |
404 </xsl:for-each> |
400 <xsl:variable name="paths" select="substring-after($description,'@')"/> |
405 <xsl:variable name="paths" select="substring-after($description,'@')"/> |
401 <xsl:for-each select="str:split($paths, '@')"> |
406 <xsl:for-each select="str:split($paths, '@')"> |
402 <path> |
407 <xsl:if test="string-length(.) > 0"> |
403 <xsl:attribute name="value"> |
408 <path> |
404 <xsl:value-of select="."/> |
409 <xsl:attribute name="value"> |
405 </xsl:attribute> |
410 <xsl:value-of select="."/> |
406 </path> |
411 </xsl:attribute> |
|
412 <xsl:variable name="path" select="."/> |
|
413 <xsl:variable name="item" select="$indexed_hmitree/*[@hmipath = $path]"/> |
|
414 <xsl:if test="count($item) = 1"> |
|
415 <xsl:attribute name="index"> |
|
416 <xsl:value-of select="$item/@index"/> |
|
417 </xsl:attribute> |
|
418 </xsl:if> |
|
419 </path> |
|
420 </xsl:if> |
407 </xsl:for-each> |
421 </xsl:for-each> |
408 </widget> |
422 </widget> |
409 </xsl:if> |
423 </xsl:if> |
410 </xsl:variable> |
424 </xsl:variable> |
411 <func:result select="exsl:node-set($ast)"/> |
425 <func:result select="exsl:node-set($ast)"/> |
451 <xsl:text> ], |
465 <xsl:text> ], |
452 </xsl:text> |
466 </xsl:text> |
453 <xsl:text> indexes: [ |
467 <xsl:text> indexes: [ |
454 </xsl:text> |
468 </xsl:text> |
455 <xsl:for-each select="$widget/path"> |
469 <xsl:for-each select="$widget/path"> |
456 <xsl:variable name="hmipath" select="@value"/> |
|
457 <xsl:variable name="hmitree_match" select="$indexed_hmitree/*[@hmipath = $hmipath]"/> |
|
458 <xsl:choose> |
470 <xsl:choose> |
459 <xsl:when test="count($hmitree_match) = 0"> |
471 <xsl:when test="not(@index)"> |
460 <xsl:message terminate="no"> |
472 <xsl:message terminate="no"> |
461 <xsl:text>Widget </xsl:text> |
473 <xsl:text>Widget </xsl:text> |
462 <xsl:value-of select="$widget/@type"/> |
474 <xsl:value-of select="$widget/@type"/> |
463 <xsl:text> id="</xsl:text> |
475 <xsl:text> id="</xsl:text> |
464 <xsl:value-of select="$eltid"/> |
476 <xsl:value-of select="$eltid"/> |
465 <xsl:text>" : No match for path "</xsl:text> |
477 <xsl:text>" : No match for path "</xsl:text> |
466 <xsl:value-of select="$hmipath"/> |
478 <xsl:value-of select="@value"/> |
467 <xsl:text>" in HMI tree</xsl:text> |
479 <xsl:text>" in HMI tree</xsl:text> |
468 </xsl:message> |
480 </xsl:message> |
469 </xsl:when> |
481 </xsl:when> |
470 <xsl:otherwise> |
482 <xsl:otherwise> |
471 <xsl:text> </xsl:text> |
483 <xsl:text> </xsl:text> |
472 <xsl:value-of select="$hmitree_match/@index"/> |
484 <xsl:value-of select="@index"/> |
473 <xsl:if test="position()!=last()"> |
485 <xsl:if test="position()!=last()"> |
474 <xsl:text>,</xsl:text> |
486 <xsl:text>,</xsl:text> |
475 </xsl:if> |
487 </xsl:if> |
476 <xsl:text> |
488 <xsl:text> |
477 </xsl:text> |
489 </xsl:text> |
549 <xsl:for-each select="$hmi_pages"> |
561 <xsl:for-each select="$hmi_pages"> |
550 <xsl:variable name="desc" select="func:parselabel(@inkscape:label)/widget"/> |
562 <xsl:variable name="desc" select="func:parselabel(@inkscape:label)/widget"/> |
551 <xsl:variable name="page" select="."/> |
563 <xsl:variable name="page" select="."/> |
552 <xsl:variable name="p" select="$geometry[@Id = $page/@id]"/> |
564 <xsl:variable name="p" select="$geometry[@Id = $page/@id]"/> |
553 <xsl:variable name="page_all_elements" select="func:all_related_elements($page)"/> |
565 <xsl:variable name="page_all_elements" select="func:all_related_elements($page)"/> |
554 <xsl:variable name="all_page_ids" select="$page_all_elements[@id = $hmi_elements/@id and @id != $page/@id]/@id"/> |
566 <xsl:variable name="all_page_widgets" select="$hmi_elements[@id = $page_all_elements/@id and @id != $page/@id]"/> |
|
567 <xsl:variable name="page_relative_widgets" select="$all_page_widgets[func:is_descendant_path($desc/path/@value, path/@value)]"/> |
555 <xsl:variable name="required_detachables" select="func:sumarized_elements($page_all_elements)/ ancestor-or-self::*[@id = $detachable_elements/@id]"/> |
568 <xsl:variable name="required_detachables" select="func:sumarized_elements($page_all_elements)/ ancestor-or-self::*[@id = $detachable_elements/@id]"/> |
556 <xsl:text> "</xsl:text> |
569 <xsl:text> "</xsl:text> |
557 <xsl:value-of select="$desc/arg[1]/@value"/> |
570 <xsl:value-of select="$desc/arg[1]/@value"/> |
558 <xsl:text>": { |
571 <xsl:text>": { |
559 </xsl:text> |
572 </xsl:text> |
569 <xsl:value-of select="$p/@w"/> |
582 <xsl:value-of select="$p/@w"/> |
570 <xsl:text>, </xsl:text> |
583 <xsl:text>, </xsl:text> |
571 <xsl:value-of select="$p/@h"/> |
584 <xsl:value-of select="$p/@h"/> |
572 <xsl:text>], |
585 <xsl:text>], |
573 </xsl:text> |
586 </xsl:text> |
574 <xsl:text> widgets: [ |
587 <xsl:if test="$desc/path/@value"> |
575 </xsl:text> |
588 <xsl:if test="count($desc/path/@index)=0"> |
576 <xsl:for-each select="$all_page_ids"> |
589 <xsl:message terminate="no"> |
|
590 <xsl:text>Page id="</xsl:text> |
|
591 <xsl:value-of select="$page/@id"/> |
|
592 <xsl:text>" : No match for path "</xsl:text> |
|
593 <xsl:value-of select="$desc/path/@value"/> |
|
594 <xsl:text>" in HMI tree</xsl:text> |
|
595 </xsl:message> |
|
596 </xsl:if> |
|
597 <xsl:text> page_index: </xsl:text> |
|
598 <xsl:value-of select="$desc/path/@index"/> |
|
599 <xsl:text>, |
|
600 </xsl:text> |
|
601 </xsl:if> |
|
602 <xsl:text> relative_widgets: [ |
|
603 </xsl:text> |
|
604 <xsl:for-each select="$page_relative_widgets"> |
577 <xsl:text> hmi_widgets["</xsl:text> |
605 <xsl:text> hmi_widgets["</xsl:text> |
578 <xsl:value-of select="."/> |
606 <xsl:value-of select="@id"/> |
|
607 <xsl:text>"]</xsl:text> |
|
608 <xsl:if test="position()!=last()"> |
|
609 <xsl:text>,</xsl:text> |
|
610 </xsl:if> |
|
611 <xsl:text> |
|
612 </xsl:text> |
|
613 </xsl:for-each> |
|
614 <xsl:text> ], |
|
615 </xsl:text> |
|
616 <xsl:text> absolute_widgets: [ |
|
617 </xsl:text> |
|
618 <xsl:for-each select="$all_page_widgets[not(@id = $page_relative_widgets/@id)]"> |
|
619 <xsl:text> hmi_widgets["</xsl:text> |
|
620 <xsl:value-of select="@id"/> |
579 <xsl:text>"]</xsl:text> |
621 <xsl:text>"]</xsl:text> |
580 <xsl:if test="position()!=last()"> |
622 <xsl:if test="position()!=last()"> |
581 <xsl:text>,</xsl:text> |
623 <xsl:text>,</xsl:text> |
582 </xsl:if> |
624 </xsl:if> |
583 <xsl:text> |
625 <xsl:text> |
1619 </xsl:template> |
1671 </xsl:template> |
1620 <xsl:template mode="widget_defs" match="widget[@type='Jump']"> |
1672 <xsl:template mode="widget_defs" match="widget[@type='Jump']"> |
1621 <xsl:param name="hmi_element"/> |
1673 <xsl:param name="hmi_element"/> |
1622 <xsl:text> on_click: function(evt) { |
1674 <xsl:text> on_click: function(evt) { |
1623 </xsl:text> |
1675 </xsl:text> |
1624 <xsl:text> switch_page(this.args[0]); |
1676 <xsl:text> switch_page(this.args[0], this.indexes[0]); |
1625 </xsl:text> |
1677 </xsl:text> |
1626 <xsl:text> }, |
1678 <xsl:text> }, |
1627 </xsl:text> |
1679 </xsl:text> |
1628 <xsl:text> init: function() { |
1680 <xsl:text> init: function() { |
1629 </xsl:text> |
1681 </xsl:text> |