# HG changeset patch # User Edouard Tisserant # Date 1587715420 -7200 # Node ID 76ebf973c47e45a18695efc01678345dbaac53c9 # Parent 69f395c01c09b34d7211f87858f50825db3d13d2# Parent 2a20038fbea90db93cee9665034f3ffdc56a24aa Merge diff -r 69f395c01c09 -r 76ebf973c47e svghmi/detachable_pages.ysl2 --- a/svghmi/detachable_pages.ysl2 Fri Apr 24 10:02:13 2020 +0200 +++ b/svghmi/detachable_pages.ysl2 Fri Apr 24 10:03:40 2020 +0200 @@ -99,7 +99,7 @@ const "_detachable_elements", "func:detachable_elements($hmi_pages | $keypads)"; const "detachable_elements", "$_detachable_elements[not(ancestor::*/@id = $_detachable_elements/@id)]"; -emit "epilogue:detachable-elements" { +emit "declarations:detachable-elements" { | | var detachable_elements = { foreach "$detachable_elements"{ @@ -168,7 +168,7 @@ | }`if "position()!=last()" > ,` } -emit "epilogue:page-desc" { +emit "declarations:page-desc" { | | var page_desc = { apply "$hmi_pages", mode="page_desc"; diff -r 69f395c01c09 -r 76ebf973c47e svghmi/gen_index_xhtml.xslt --- a/svghmi/gen_index_xhtml.xslt Fri Apr 24 10:02:13 2020 +0200 +++ b/svghmi/gen_index_xhtml.xslt Fri Apr 24 10:03:40 2020 +0200 @@ -1,6 +1,6 @@ - - + + @@ -383,8 +383,8 @@ - - + + var detachable_elements = { @@ -527,8 +527,8 @@ - - + + var page_desc = { @@ -896,6 +896,131 @@ }, + + + frequency: 5, + + init: function() { + + this.element.addEventListener( + + "mousedown", + + evt => { + + change_hmi_value(this.indexes[0], "=1"); + + }); + + this.element.addEventListener( + + "mouseup", + + evt => { + + change_hmi_value(this.indexes[0], "=0"); + + }); + + }, + + + + + frequency: 10, + + + + + path + + + + + + value min max + + + + dispatch: function(value) { + + if(this.value_elt) + + this.value_elt.textContent = String(value); + + let [min,max,start,end] = this.range; + + let [cx,cy] = this.center; + + let [rx,ry] = this.proportions; + + let tip = start + (end-start)*Number(value)/(max-min); + + let size = 0; + + if (tip-start > Math.PI) { + + size = 1; + + } else { + + size = 0; + + } + + this.path_elt.setAttribute('d', "M "+(cx+rx*Math.cos(start))+","+(cy+ry*Math.sin(start))+" A "+rx+","+ry+" 0 "+size+" 1 "+(cx+rx*Math.cos(tip))+","+(cy+ry*Math.sin(tip))); + + }, + + range: undefined, + + init: function() { + + let start = Number(this.path_elt.getAttribute('sodipodi:start')); + + let end = Number(this.path_elt.getAttribute('sodipodi:end')); + + let cx = Number(this.path_elt.getAttribute('sodipodi:cx')); + + let cy = Number(this.path_elt.getAttribute('sodipodi:cy')); + + let rx = Number(this.path_elt.getAttribute('sodipodi:rx')); + + let ry = Number(this.path_elt.getAttribute('sodipodi:ry')); + + if (ry == 0) { + + ry = rx; + + } + + if (start > end) { + + end = end + 2*Math.PI; + + } + + let min = this.min_elt ? + + Number(this.min_elt.textContent) : + + this.args.length >= 1 ? this.args[0] : 0; + + let max = this.max_elt ? + + Number(this.max_elt.textContent) : + + this.args.length >= 2 ? this.args[1] : 100; + + this.range = [min, max, start, end]; + + this.center = [cx, cy]; + + this.proportions = [rx, ry]; + + }, + + frequency: 5, @@ -1544,8 +1669,8 @@ apply_cache: foreach_apply_cache, - - + + function foreach_unsubscribe(){ for(let item of this.items){ @@ -1956,8 +2081,8 @@ - - + + var jumps_need_update = false; var jump_history = [[default_page, undefined]]; @@ -1975,8 +2100,8 @@ - - + + var keypads = { @@ -2336,12 +2461,42 @@ - +