# HG changeset patch # User Edouard Tisserant # Date 1657574294 -7200 # Node ID d6c9da8d594e3e9cba04811efc197f51627987c2 # Parent cb7db021280c5278106dcac4d87046904c06df18# Parent 4ee33be5b8b6f65b900467f7c5f8b53bf020db79 Merge latest changes from default diff -r cb7db021280c -r d6c9da8d594e svghmi/svghmi.js --- a/svghmi/svghmi.js Mon Jul 11 22:21:20 2022 +0200 +++ b/svghmi/svghmi.js Mon Jul 11 23:18:14 2022 +0200 @@ -60,8 +60,17 @@ var requestAnimationFrameID = null; function animate() { // Do the page swith if any one pending - if(current_subscribed_page != current_visible_page){ - switch_visible_page(current_subscribed_page); + if(page_switch_in_progress){ + if(current_subscribed_page != current_visible_page){ + switch_visible_page(current_subscribed_page); + } + + page_switch_in_progress = false; + + if(page_fading_in_progress){ + svg_root.classList.remove("fade-out-page"); + page_fading_in_progress = false; + } } while(widget = need_cache_apply.pop()){ @@ -391,6 +400,7 @@ var current_subscribed_page; var current_page_index; var page_node_local_index = hmi_local_index("page_node"); +var page_switch_in_progress = false; function toggleFullscreen() { let elem = document.documentElement; @@ -418,11 +428,12 @@ }; function switch_page(page_name, page_index) { - if(current_subscribed_page != current_visible_page){ + if(page_switch_in_progress){ /* page switch already going */ /* TODO LOG ERROR */ return false; } + page_switch_in_progress = true; if(page_name == undefined) page_name = current_subscribed_page; @@ -514,9 +525,6 @@ } svg_root.setAttribute('viewBox',new_desc.bbox.join(" ")); - if(page_fading_in_progress) - svg_root.classList.remove("fade-out-page"); - page_fading_in_progress = false; current_visible_page = page_name; }; diff -r cb7db021280c -r d6c9da8d594e svghmi/widget_input.ysl2 --- a/svghmi/widget_input.ysl2 Mon Jul 11 22:21:20 2022 +0200 +++ b/svghmi/widget_input.ysl2 Mon Jul 11 23:18:14 2022 +0200 @@ -65,6 +65,8 @@ const "have_edit","string-length($edit_elt)>0"; value "$edit_elt"; + const "action_elements", "$hmi_element/*[regexp:test(@inkscape:label,'^[=+\-].+')]"; + if "$have_value" | frequency: 5, | dispatch: function(value) { @@ -94,6 +96,9 @@ | }, } + foreach "$action_elements" { + | action_elt_«position()»: id("«@id»"), + } | init: function() { if "$have_edit" { @@ -104,8 +109,8 @@ | this.animate(); } - foreach "$hmi_element/*[regexp:test(@inkscape:label,'^[=+\-].+')]" { - | id("«@id»").onclick = () => this.on_op_click("«func:escape_quotes(@inkscape:label)»"); + foreach "$action_elements" { + | this.action_elt_«position()».onclick = () => this.on_op_click("«func:escape_quotes(@inkscape:label)»"); } if "$have_value" {