500 | «$hmitree_match/@index»`if "position()!=last()" > ,` |
502 | «$hmitree_match/@index»`if "position()!=last()" > ,` |
501 } |
503 } |
502 } |
504 } |
503 } |
505 } |
504 | ], |
506 | ], |
505 | element: document.getElementById("«@id»"), |
507 | element: id("«@id»"), |
506 apply "$widget", mode="widget_defs" with "hmi_element","."; |
508 apply "$widget", mode="widget_defs" with "hmi_element","."; |
507 | }`if "position()!=last()" > ,` |
509 | }`if "position()!=last()" > ,` |
508 } |
510 } |
509 | } |
511 | } |
510 | |
512 | |
528 |
537 |
529 const "page_all_elements", "func:all_related_elements($page)"; |
538 const "page_all_elements", "func:all_related_elements($page)"; |
530 |
539 |
531 const "all_page_ids","$page_all_elements[@id = $hmi_elements/@id and @id != $page/@id]/@id"; |
540 const "all_page_ids","$page_all_elements[@id = $hmi_elements/@id and @id != $page/@id]/@id"; |
532 |
541 |
533 const "shorter_list", "func:sumarized_elements($page_all_elements)"; |
542 const "required_detachables", "func:sumarized_elements($page_all_elements)"; |
534 |
543 |
535 | "«$desc/arg[1]/@value»": { |
544 | "«$desc/arg[1]/@value»": { |
536 | widget: hmi_widgets["«@id»"], |
545 | widget: hmi_widgets["«@id»"], |
537 | bbox: [«$p/@x», «$p/@y», «$p/@w», «$p/@h»], |
546 | bbox: [«$p/@x», «$p/@y», «$p/@w», «$p/@h»], |
538 | widgets: [ |
547 | widgets: [ |
539 foreach "$all_page_ids" { |
548 foreach "$all_page_ids" { |
540 | hmi_widgets["«.»"]`if "position()!=last()" > ,` |
549 | hmi_widgets["«.»"]`if "position()!=last()" > ,` |
541 } |
550 } |
542 | ], |
551 | ], |
543 | required_elements: [ |
552 | required_detachables: [ |
544 foreach "$shorter_list" { |
553 foreach "$required_detachables" { |
545 | "«@id»", |
554 | detachable_elements["«@id»"]`if "position()!=last()" > ,` |
546 } |
555 } |
547 | ] |
556 | ] |
548 | }`if "position()!=last()" > ,` |
557 | }`if "position()!=last()" > ,` |
549 } |
558 } |
550 | } |
559 | } |
551 |
560 |
552 | |
561 | |
553 | var default_page = "«$default_page»"; |
562 | var default_page = "«$default_page»"; |
554 | var svg_root = document.getElementById("«$svg_root_id»"); |
563 | var svg_root = id("«$svg_root_id»"); |
555 include text svghmi.js |
564 include text svghmi.js |
556 | //})(); |
565 | //})(); |
557 } |
566 } |
558 |
567 |
559 // template "*", mode="code_from_descs" { |
568 // template "*", mode="code_from_descs" { |
691 | this.value_elt.textContent = String(value); |
700 | this.value_elt.textContent = String(value); |
692 | }, |
701 | }, |
693 const "edit_elt_id","$hmi_element/*[@inkscape:label='edit'][1]/@id"; |
702 const "edit_elt_id","$hmi_element/*[@inkscape:label='edit'][1]/@id"; |
694 | init: function() { |
703 | init: function() { |
695 if "$edit_elt_id" { |
704 if "$edit_elt_id" { |
696 | document.getElementById("«$edit_elt_id»").addEventListener( |
705 | id("«$edit_elt_id»").addEventListener( |
697 | "click", |
706 | "click", |
698 | evt => alert('XXX TODO : Edit value')); |
707 | evt => alert('XXX TODO : Edit value')); |
699 } |
708 } |
700 foreach "$hmi_element/*[regexp:test(@inkscape:label,'^[=+\-].+')]" { |
709 foreach "$hmi_element/*[regexp:test(@inkscape:label,'^[=+\-].+')]" { |
701 | document.getElementById("«@id»").addEventListener( |
710 | id("«@id»").addEventListener( |
702 | "click", |
711 | "click", |
703 | evt => {let new_val = change_hmi_value(this.indexes[0], "«func:escape_quotes(@inkscape:label)»"); |
712 | evt => {let new_val = change_hmi_value(this.indexes[0], "«func:escape_quotes(@inkscape:label)»"); |
704 | this.value_elt.textContent = String(new_val);}); |
713 | this.value_elt.textContent = String(new_val);}); |
705 /* could gray out value until refreshed */ |
714 /* could gray out value until refreshed */ |
706 } |
715 } |
729 | choices: [ |
738 | choices: [ |
730 const "regex",!"'^(\"[^\"].*\"|\-?[0-9]+)(#.*)?$'"!; |
739 const "regex",!"'^(\"[^\"].*\"|\-?[0-9]+)(#.*)?$'"!; |
731 foreach "$hmi_element/*[regexp:test(@inkscape:label,$regex)]" { |
740 foreach "$hmi_element/*[regexp:test(@inkscape:label,$regex)]" { |
732 const "literal", "regexp:match(@inkscape:label,$regex)[2]"; |
741 const "literal", "regexp:match(@inkscape:label,$regex)[2]"; |
733 | { |
742 | { |
734 | elt:document.getElementById("«@id»"), |
743 | elt:id("«@id»"), |
735 | style:"«@style»", |
744 | style:"«@style»", |
736 | value:«$literal» |
745 | value:«$literal» |
737 | }`if "position()!=last()" > ,` |
746 | }`if "position()!=last()" > ,` |
738 } |
747 } |
739 | ], |
748 | ], |