1494 </xsl:text> |
1494 </xsl:text> |
1495 <xsl:text> inactive_style = undefined; |
1495 <xsl:text> inactive_style = undefined; |
1496 </xsl:text> |
1496 </xsl:text> |
1497 <xsl:text> |
1497 <xsl:text> |
1498 </xsl:text> |
1498 </xsl:text> |
1499 <xsl:text> on_mouse_down(evt) { |
1499 <xsl:text> // TODO decouple update of DOM from event (i.e use animate()) |
1500 </xsl:text> |
1500 </xsl:text> |
1501 <xsl:text> if (this.active_style && this.inactive_style) { |
1501 <xsl:text> |
1502 </xsl:text> |
1502 </xsl:text> |
1503 <xsl:text> this.active_elt.setAttribute("style", this.active_style); |
1503 <xsl:text> |
1504 </xsl:text> |
1504 </xsl:text> |
1505 <xsl:text> this.inactive_elt.setAttribute("style", "display:none"); |
1505 <xsl:text> // TODO State of the button should distinguish UI feedbak from current PLC value |
1506 </xsl:text> |
1506 </xsl:text> |
1507 <xsl:text> } |
1507 <xsl:text> |
1508 </xsl:text> |
1508 </xsl:text> |
1509 <xsl:text> this.apply_hmi_value(0, 1); |
1509 <xsl:text> on_mouse_down(evt) { |
1510 </xsl:text> |
|
1511 <xsl:text> } |
|
1512 </xsl:text> |
|
1513 <xsl:text> |
|
1514 </xsl:text> |
|
1515 <xsl:text> on_mouse_up(evt) { |
|
1516 </xsl:text> |
|
1517 <xsl:text> if (this.active_style && this.inactive_style) { |
|
1518 </xsl:text> |
|
1519 <xsl:text> this.active_elt.setAttribute("style", "display:none"); |
|
1520 </xsl:text> |
|
1521 <xsl:text> this.inactive_elt.setAttribute("style", this.inactive_style); |
|
1522 </xsl:text> |
|
1523 <xsl:text> } |
|
1524 </xsl:text> |
|
1525 <xsl:text> this.apply_hmi_value(0, 0); |
|
1526 </xsl:text> |
|
1527 <xsl:text> } |
|
1528 </xsl:text> |
|
1529 <xsl:text> |
|
1530 </xsl:text> |
|
1531 <xsl:text> init() { |
|
1532 </xsl:text> |
|
1533 <xsl:text> this.active_style = this.active_elt ? this.active_elt.style.cssText : undefined; |
|
1534 </xsl:text> |
|
1535 <xsl:text> this.inactive_style = this.inactive_elt ? this.inactive_elt.style.cssText : undefined; |
|
1536 </xsl:text> |
|
1537 <xsl:text> |
|
1538 </xsl:text> |
1510 </xsl:text> |
1539 <xsl:text> if (this.active_style && this.inactive_style) { |
1511 <xsl:text> if (this.active_style && this.inactive_style) { |
1540 </xsl:text> |
1512 </xsl:text> |
|
1513 <xsl:text> console.log("pressedi...") |
|
1514 </xsl:text> |
|
1515 <xsl:text> this.active_elt.setAttribute("style", this.active_style); |
|
1516 </xsl:text> |
|
1517 <xsl:text> this.inactive_elt.setAttribute("style", "display:none"); |
|
1518 </xsl:text> |
|
1519 <xsl:text> } |
|
1520 </xsl:text> |
|
1521 <xsl:text> this.apply_hmi_value(0, 1); |
|
1522 </xsl:text> |
|
1523 <xsl:text> console.log("pressed") |
|
1524 </xsl:text> |
|
1525 <xsl:text> // TODO inhibit all mouse/touch events except mouse up (in other word grab cursor) |
|
1526 </xsl:text> |
|
1527 <xsl:text> } |
|
1528 </xsl:text> |
|
1529 <xsl:text> |
|
1530 </xsl:text> |
|
1531 <xsl:text> on_mouse_up(evt) { |
|
1532 </xsl:text> |
|
1533 <xsl:text> if (this.active_style && this.inactive_style) { |
|
1534 </xsl:text> |
|
1535 <xsl:text> console.log("unpressedi...") |
|
1536 </xsl:text> |
1541 <xsl:text> this.active_elt.setAttribute("style", "display:none"); |
1537 <xsl:text> this.active_elt.setAttribute("style", "display:none"); |
1542 </xsl:text> |
1538 </xsl:text> |
1543 <xsl:text> this.inactive_elt.setAttribute("style", this.inactive_style); |
1539 <xsl:text> this.inactive_elt.setAttribute("style", this.inactive_style); |
1544 </xsl:text> |
1540 </xsl:text> |
1545 <xsl:text> } |
1541 <xsl:text> } |
1546 </xsl:text> |
1542 </xsl:text> |
1547 <xsl:text> |
1543 <xsl:text> this.apply_hmi_value(0, 0); |
1548 </xsl:text> |
1544 </xsl:text> |
1549 <xsl:text> this.element.setAttribute("onmousedown", "hmi_widgets["+this.element_id+"].on_mouse_down(evt)"); |
1545 <xsl:text> console.log("unpressed") |
1550 </xsl:text> |
1546 </xsl:text> |
1551 <xsl:text> this.element.setAttribute("onmouseup", "hmi_widgets["+this.element_id+"].on_mouse_up(evt)"); |
1547 <xsl:text> // TODO release inhibited events |
1552 </xsl:text> |
1548 </xsl:text> |
1553 <xsl:text> } |
1549 <xsl:text> } |
|
1550 </xsl:text> |
|
1551 <xsl:text> |
|
1552 </xsl:text> |
|
1553 <xsl:text> init() { |
|
1554 </xsl:text> |
|
1555 <xsl:text> // TODO : move to widget_defs so that we can have generated string literals directly |
|
1556 </xsl:text> |
|
1557 <xsl:text> this.active_style = this.active_elt ? this.active_elt.style.cssText : undefined; |
|
1558 </xsl:text> |
|
1559 <xsl:text> this.inactive_style = this.inactive_elt ? this.inactive_elt.style.cssText : undefined; |
|
1560 </xsl:text> |
|
1561 <xsl:text> |
|
1562 </xsl:text> |
|
1563 <xsl:text> if (this.active_style && this.inactive_style) { |
|
1564 </xsl:text> |
|
1565 <xsl:text> this.active_elt.setAttribute("style", "display:none"); |
|
1566 </xsl:text> |
|
1567 <xsl:text> this.inactive_elt.setAttribute("style", this.inactive_style); |
|
1568 </xsl:text> |
|
1569 <xsl:text> } |
|
1570 </xsl:text> |
|
1571 <xsl:text> |
|
1572 </xsl:text> |
|
1573 <xsl:text> this.element.setAttribute("onmousedown", "hmi_widgets[\""+this.element_id+"\"].on_mouse_down(evt)"); |
|
1574 </xsl:text> |
|
1575 <xsl:text> this.element.setAttribute("onmouseup", "hmi_widgets[\""+this.element_id+"\"].on_mouse_up(evt)"); |
|
1576 </xsl:text> |
|
1577 <xsl:text> } |
1554 </xsl:text> |
1578 </xsl:text> |
1555 <xsl:text>} |
1579 <xsl:text>} |
1556 </xsl:text> |
1580 </xsl:text> |
1557 </xsl:template> |
1581 </xsl:template> |
1558 <xsl:template mode="widget_defs" match="widget[@type='Button']"> |
1582 <xsl:template mode="widget_defs" match="widget[@type='Button']"> |
3584 </xsl:apply-templates> |
3604 </xsl:apply-templates> |
3585 </xsl:template> |
3605 </xsl:template> |
3586 <xsl:template mode="json_table_render" match="svg:g"> |
3606 <xsl:template mode="json_table_render" match="svg:g"> |
3587 <xsl:param name="expressions"/> |
3607 <xsl:param name="expressions"/> |
3588 <xsl:param name="widget_elts"/> |
3608 <xsl:param name="widget_elts"/> |
|
3609 <xsl:variable name="gid" select="@id"/> |
|
3610 <xsl:variable name="varprefix"> |
|
3611 <xsl:text>obj_</xsl:text> |
|
3612 <xsl:value-of select="$gid"/> |
|
3613 <xsl:text>_</xsl:text> |
|
3614 </xsl:variable> |
|
3615 <xsl:text> try { |
|
3616 </xsl:text> |
|
3617 <xsl:for-each select="$expressions/expression"> |
|
3618 <xsl:text> let </xsl:text> |
|
3619 <xsl:value-of select="$varprefix"/> |
|
3620 <xsl:value-of select="position()"/> |
|
3621 <xsl:text> = </xsl:text> |
|
3622 <xsl:value-of select="@content"/> |
|
3623 <xsl:text>; |
|
3624 </xsl:text> |
|
3625 <xsl:text> if(</xsl:text> |
|
3626 <xsl:value-of select="$varprefix"/> |
|
3627 <xsl:value-of select="position()"/> |
|
3628 <xsl:text> == undefined) { |
|
3629 </xsl:text> |
|
3630 <xsl:text> console.log("</xsl:text> |
|
3631 <xsl:value-of select="$varprefix"/> |
|
3632 <xsl:value-of select="position()"/> |
|
3633 <xsl:text> = </xsl:text> |
|
3634 <xsl:value-of select="@content"/> |
|
3635 <xsl:text>"); |
|
3636 </xsl:text> |
|
3637 <xsl:text> throw null; |
|
3638 </xsl:text> |
|
3639 <xsl:text> } |
|
3640 </xsl:text> |
|
3641 </xsl:for-each> |
|
3642 <xsl:variable name="new_expressions"> |
|
3643 <xsl:for-each select="$expressions/expression"> |
|
3644 <xsl:copy> |
|
3645 <xsl:copy-of select="@name"/> |
|
3646 <xsl:attribute name="content"> |
|
3647 <xsl:value-of select="$varprefix"/> |
|
3648 <xsl:value-of select="position()"/> |
|
3649 </xsl:attribute> |
|
3650 </xsl:copy> |
|
3651 </xsl:for-each> |
|
3652 </xsl:variable> |
|
3653 <xsl:text> id("</xsl:text> |
|
3654 <xsl:value-of select="@id"/> |
|
3655 <xsl:text>").setAttribute("style", "</xsl:text> |
|
3656 <xsl:value-of select="@style"/> |
|
3657 <xsl:text>"); |
|
3658 </xsl:text> |
3589 <xsl:variable name="label" select="func:filter_non_widget_label(., $widget_elts)"/> |
3659 <xsl:variable name="label" select="func:filter_non_widget_label(., $widget_elts)"/> |
3590 <xsl:apply-templates mode="json_table_render" select="*"> |
3660 <xsl:apply-templates mode="json_table_render" select="*"> |
3591 <xsl:with-param name="expressions" select="func:json_expressions($expressions, $label)"/> |
3661 <xsl:with-param name="expressions" select="func:json_expressions(exsl:node-set($new_expressions), $label)"/> |
3592 <xsl:with-param name="widget_elts" select="$widget_elts"/> |
3662 <xsl:with-param name="widget_elts" select="$widget_elts"/> |
3593 </xsl:apply-templates> |
3663 </xsl:apply-templates> |
|
3664 <xsl:text> } catch(err) { |
|
3665 </xsl:text> |
|
3666 <xsl:text> id("</xsl:text> |
|
3667 <xsl:value-of select="$gid"/> |
|
3668 <xsl:text>").setAttribute("style", "display:none"); |
|
3669 </xsl:text> |
|
3670 <xsl:text> } |
|
3671 </xsl:text> |
3594 </xsl:template> |
3672 </xsl:template> |
3595 <xsl:template mode="widget_defs" match="widget[@type='JsonTable']"> |
3673 <xsl:template mode="widget_defs" match="widget[@type='JsonTable']"> |
3596 <xsl:param name="hmi_element"/> |
3674 <xsl:param name="hmi_element"/> |
3597 <xsl:call-template name="defs_by_labels"> |
3675 <xsl:call-template name="defs_by_labels"> |
3598 <xsl:with-param name="hmi_element" select="$hmi_element"/> |
3676 <xsl:with-param name="hmi_element" select="$hmi_element"/> |
3606 <xsl:text>forward backward cursor</xsl:text> |
3684 <xsl:text>forward backward cursor</xsl:text> |
3607 </xsl:with-param> |
3685 </xsl:with-param> |
3608 <xsl:with-param name="mandatory" select="'no'"/> |
3686 <xsl:with-param name="mandatory" select="'no'"/> |
3609 </xsl:call-template> |
3687 </xsl:call-template> |
3610 <xsl:variable name="data_elt" select="$result_svg_ns//*[@id = $hmi_element/@id]/*[@inkscape:label = 'data']"/> |
3688 <xsl:variable name="data_elt" select="$result_svg_ns//*[@id = $hmi_element/@id]/*[@inkscape:label = 'data']"/> |
3611 <xsl:text> spread_json_data: function(jdata) { |
3689 <xsl:text> visible: </xsl:text> |
|
3690 <xsl:value-of select="count($data_elt/*[@inkscape:label])"/> |
|
3691 <xsl:text>, |
|
3692 </xsl:text> |
|
3693 <xsl:text> spread_json_data: function(janswer) { |
|
3694 </xsl:text> |
|
3695 <xsl:text> let [range,position,jdata] = janswer; |
|
3696 </xsl:text> |
|
3697 <xsl:text> console.log(range,position,jdata); |
3612 </xsl:text> |
3698 </xsl:text> |
3613 <xsl:apply-templates mode="json_table_render" select="$data_elt/*"> |
3699 <xsl:apply-templates mode="json_table_render" select="$data_elt/*"> |
3614 <xsl:with-param name="expressions" select="$initexpr_ns"/> |
3700 <xsl:with-param name="expressions" select="$initexpr_ns"/> |
3615 <xsl:with-param name="widget_elts" select="$hmi_element/*[@inkscape:label = 'data']/descendant::svg:*"/> |
3701 <xsl:with-param name="widget_elts" select="$hmi_element/*[@inkscape:label = 'data']/descendant::svg:*"/> |
3616 </xsl:apply-templates> |
3702 </xsl:apply-templates> |
5803 </xsl:text> |
5887 </xsl:text> |
5804 <xsl:text> |
5888 <xsl:text> |
5805 </xsl:text> |
5889 </xsl:text> |
5806 <xsl:text> let [keypadid, xcoord, ycoord] = keypads[valuetype]; |
5890 <xsl:text> let [keypadid, xcoord, ycoord] = keypads[valuetype]; |
5807 </xsl:text> |
5891 </xsl:text> |
5808 <xsl:text> console.log('XXX TODO : Edit value', path, valuetype, callback, initial, keypadid); |
|
5809 </xsl:text> |
|
5810 <xsl:text> edit_callback = callback; |
5892 <xsl:text> edit_callback = callback; |
5811 </xsl:text> |
5893 </xsl:text> |
5812 <xsl:text> let widget = hmi_widgets[keypadid]; |
5894 <xsl:text> let widget = hmi_widgets[keypadid]; |
5813 </xsl:text> |
5895 </xsl:text> |
5814 <xsl:text> widget.start_edit(path, valuetype, callback, initial, size); |
5896 <xsl:text> widget.start_edit(path, valuetype, callback, initial, size); |