# HG changeset patch # User Edouard Tisserant # Date 1589441049 -7200 # Node ID 7349063b19d8d0aecb894c8b6334fcc3c097a4bd # Parent 8f928cee01e536bdefeb7986274f83197de49ad8# Parent 113e2f2e324d31b7b5ff3a0add1dff04dd6a8e4f merge diff -r 8f928cee01e5 -r 7349063b19d8 svghmi/gen_index_xhtml.xslt --- a/svghmi/gen_index_xhtml.xslt Wed May 13 14:48:52 2020 +0200 +++ b/svghmi/gen_index_xhtml.xslt Thu May 14 09:24:09 2020 +0200 @@ -866,20 +866,26 @@ </xsl:text> <xsl:text>class Widget { </xsl:text> + <xsl:text> offset = 0; +</xsl:text> + <xsl:text> frequency = 10; /* FIXME arbitrary default max freq. Obtain from config ? */ +</xsl:text> <xsl:text> constructor(elt_id,args,indexes,members){ </xsl:text> + <xsl:text> this.element_id = elt_id; +</xsl:text> <xsl:text> this.element = id(elt_id); </xsl:text> <xsl:text> this.args = args; </xsl:text> <xsl:text> this.indexes = indexes; </xsl:text> - <xsl:text> this.offset = 0; -</xsl:text> <xsl:text> Object.keys(members).forEach(prop => this[prop]=members[prop]); </xsl:text> <xsl:text> } </xsl:text> + <xsl:text> +</xsl:text> <xsl:text> unsub(){ </xsl:text> <xsl:text> /* remove subsribers */ @@ -1078,9 +1084,10 @@ </xsl:otherwise> </xsl:choose> </func:function> - <xsl:template mode="widget_defs" match="widget[@type='Back']"> - <xsl:param name="hmi_element"/> - <xsl:text> on_click: function(evt) { + <xsl:template mode="widget_class" match="widget[@type='Back']"> + <xsl:text>class BackWidget extends Widget{ +</xsl:text> + <xsl:text> on_click(evt) { </xsl:text> <xsl:text> if(jump_history.length > 1){ </xsl:text> @@ -1092,44 +1099,51 @@ </xsl:text> <xsl:text> } </xsl:text> - <xsl:text> }, -</xsl:text> - <xsl:text> init: function() { -</xsl:text> - <xsl:text> this.element.setAttribute("onclick", "hmi_widgets['</xsl:text> - <xsl:value-of select="$hmi_element/@id"/> - <xsl:text>'].on_click(evt)"); -</xsl:text> - <xsl:text> }, -</xsl:text> - </xsl:template> - <xsl:template mode="widget_defs" match="widget[@type='Button']"> - <xsl:param name="hmi_element"/> - <xsl:text>frequency: 5, -</xsl:text> - <xsl:text>init: function() { -</xsl:text> - <xsl:text> this.element.addEventListener( -</xsl:text> - <xsl:text> "mousedown", -</xsl:text> - <xsl:text> evt => { -</xsl:text> - <xsl:text> change_hmi_value(this.indexes[0], "=1"); -</xsl:text> - <xsl:text> }); -</xsl:text> - <xsl:text> this.element.addEventListener( -</xsl:text> - <xsl:text> "mouseup", -</xsl:text> - <xsl:text> evt => { -</xsl:text> - <xsl:text> change_hmi_value(this.indexes[0], "=0"); -</xsl:text> - <xsl:text> }); -</xsl:text> - <xsl:text>}, + <xsl:text> } +</xsl:text> + <xsl:text> init() { +</xsl:text> + <xsl:text> this.element.setAttribute("onclick", "hmi_widgets['"+this.element_id+"'].on_click(evt)"); +</xsl:text> + <xsl:text> } +</xsl:text> + <xsl:text>} +</xsl:text> + </xsl:template> + <xsl:template mode="widget_class" match="widget[@type='Button']"> + <xsl:text>class ButtonWidget extends Widget{ +</xsl:text> + <xsl:text> frequency = 5; +</xsl:text> + <xsl:text> init() { +</xsl:text> + <xsl:text> // TODO : use attributes to allow interaction through svg:use +</xsl:text> + <xsl:text> // TODO : deal with dragging +</xsl:text> + <xsl:text> this.element.addEventListener( +</xsl:text> + <xsl:text> "mousedown", +</xsl:text> + <xsl:text> evt => { +</xsl:text> + <xsl:text> change_hmi_value(this.indexes[0], "=1"); +</xsl:text> + <xsl:text> }); +</xsl:text> + <xsl:text> this.element.addEventListener( +</xsl:text> + <xsl:text> "mouseup", +</xsl:text> + <xsl:text> evt => { +</xsl:text> + <xsl:text> change_hmi_value(this.indexes[0], "=0"); +</xsl:text> + <xsl:text> }); +</xsl:text> + <xsl:text> } +</xsl:text> + <xsl:text>} </xsl:text> </xsl:template> <xsl:template mode="widget_defs" match="widget[@type='CircularBar']"> @@ -1767,7 +1781,6 @@ </xsl:template> <xsl:template mode="widget_defs" match="widget[@type='ForEach']"> <xsl:param name="hmi_element"/> - <xsl:variable name="widgets" select="func:refered_elements($forEach_widgets)[not(@id = $forEach_widgets_ids)]"/> <xsl:variable name="class" select="arg[1]/@value"/> <xsl:variable name="base_path" select="path/@value"/> <xsl:variable name="hmi_index_base" select="$indexed_hmitree/*[@hmipath = $base_path]"/> @@ -2585,34 +2598,34 @@ <xsl:text> }, </xsl:text> </xsl:template> + <xsl:template mode="widget_class" match="widget[@type='Switch']"> + <xsl:text>class SwitchWidget extends Widget{ +</xsl:text> + <xsl:text> frequency = 5; +</xsl:text> + <xsl:text> dispatch(value) { +</xsl:text> + <xsl:text> for(let choice of this.choices){ +</xsl:text> + <xsl:text> if(value != choice.value){ +</xsl:text> + <xsl:text> choice.elt.setAttribute("style", "display:none"); +</xsl:text> + <xsl:text> } else { +</xsl:text> + <xsl:text> choice.elt.setAttribute("style", choice.style); +</xsl:text> + <xsl:text> } +</xsl:text> + <xsl:text> } +</xsl:text> + <xsl:text> } +</xsl:text> + <xsl:text>} +</xsl:text> + </xsl:template> <xsl:template mode="widget_defs" match="widget[@type='Switch']"> <xsl:param name="hmi_element"/> - <xsl:text> frequency: 5, -</xsl:text> - <xsl:text> dispatch: function(value) { -</xsl:text> - <xsl:text> for(let choice of this.choices){ -</xsl:text> - <xsl:text> if(value != choice.value){ -</xsl:text> - <xsl:text> choice.elt.setAttribute("style", "display:none"); -</xsl:text> - <xsl:text> } else { -</xsl:text> - <xsl:text> choice.elt.setAttribute("style", choice.style); -</xsl:text> - <xsl:text> } -</xsl:text> - <xsl:text> } -</xsl:text> - <xsl:text> }, -</xsl:text> - <xsl:text> init: function() { -</xsl:text> - <xsl:text> // Hello Switch -</xsl:text> - <xsl:text> }, -</xsl:text> <xsl:text> choices: [ </xsl:text> <xsl:variable name="regex" select="'^("[^"].*"|\-?[0-9]+|false|true)(#.*)?$'"/> @@ -3104,11 +3117,15 @@ </xsl:text> <xsl:text> let maxfreq = 0; </xsl:text> - <xsl:text> for(let widget of widgets) -</xsl:text> - <xsl:text> if(maxfreq < widget.frequency) -</xsl:text> - <xsl:text> maxfreq = widget.frequency; + <xsl:text> for(let widget of widgets){ +</xsl:text> + <xsl:text> let wf = widget.frequency; +</xsl:text> + <xsl:text> if(wf != undefined && maxfreq < wf) +</xsl:text> + <xsl:text> maxfreq = wf; +</xsl:text> + <xsl:text> } </xsl:text> <xsl:text> </xsl:text> diff -r 8f928cee01e5 -r 7349063b19d8 svghmi/svghmi.js --- a/svghmi/svghmi.js Wed May 13 14:48:52 2020 +0200 +++ b/svghmi/svghmi.js Thu May 14 09:24:09 2020 +0200 @@ -207,9 +207,11 @@ let new_period = 0; if(widgets.size > 0) { let maxfreq = 0; - for(let widget of widgets) - if(maxfreq < widget.frequency) - maxfreq = widget.frequency; + for(let widget of widgets){ + let wf = widget.frequency; + if(wf != undefined && maxfreq < wf) + maxfreq = wf; + } if(maxfreq != 0) new_period = 1000/maxfreq; diff -r 8f928cee01e5 -r 7349063b19d8 svghmi/widget_back.ysl2 --- a/svghmi/widget_back.ysl2 Wed May 13 14:48:52 2020 +0200 +++ b/svghmi/widget_back.ysl2 Thu May 14 09:24:09 2020 +0200 @@ -1,17 +1,17 @@ // widget_back.ysl2 -template "widget[@type='Back']", mode="widget_defs" { - param "hmi_element"; - - | on_click: function(evt) { - | if(jump_history.length > 1){ - | jump_history.pop(); - | let [page_name, index] = jump_history.pop(); - | switch_page(page_name, index); - | } - | }, - | init: function() { - | this.element.setAttribute("onclick", "hmi_widgets['«$hmi_element/@id»'].on_click(evt)"); - | }, -} - +template "widget[@type='Back']", mode="widget_class" + || + class BackWidget extends Widget{ + on_click(evt) { + if(jump_history.length > 1){ + jump_history.pop(); + let [page_name, index] = jump_history.pop(); + switch_page(page_name, index); + } + } + init() { + this.element.setAttribute("onclick", "hmi_widgets['"+this.element_id+"'].on_click(evt)"); + } + } + || diff -r 8f928cee01e5 -r 7349063b19d8 svghmi/widget_button.ysl2 --- a/svghmi/widget_button.ysl2 Wed May 13 14:48:52 2020 +0200 +++ b/svghmi/widget_button.ysl2 Thu May 14 09:24:09 2020 +0200 @@ -1,18 +1,20 @@ // widget_button.ysl2 -template "widget[@type='Button']", mode="widget_defs" { - param "hmi_element"; - | 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"); - | }); - | }, -} \ No newline at end of file +template "widget[@type='Button']", mode="widget_class" + || + class ButtonWidget extends Widget{ + frequency = 5; + init() { + this.element.addEventListener( + "mousedown", + evt => { + change_hmi_value(this.indexes[0], "=1"); + }); + this.element.addEventListener( + "mouseup", + evt => { + change_hmi_value(this.indexes[0], "=0"); + }); + } + } + || diff -r 8f928cee01e5 -r 7349063b19d8 svghmi/widget_foreach.ysl2 --- a/svghmi/widget_foreach.ysl2 Wed May 13 14:48:52 2020 +0200 +++ b/svghmi/widget_foreach.ysl2 Thu May 14 09:24:09 2020 +0200 @@ -1,7 +1,6 @@ template "widget[@type='ForEach']", mode="widget_defs" { param "hmi_element"; - const "widgets", "func:refered_elements($forEach_widgets)[not(@id = $forEach_widgets_ids)]"; const "class","arg[1]/@value"; diff -r 8f928cee01e5 -r 7349063b19d8 svghmi/widget_switch.ysl2 --- a/svghmi/widget_switch.ysl2 Wed May 13 14:48:52 2020 +0200 +++ b/svghmi/widget_switch.ysl2 Thu May 14 09:24:09 2020 +0200 @@ -1,20 +1,23 @@ // widget_switch.ysl2 +template "widget[@type='Switch']", mode="widget_class" + || + class SwitchWidget extends Widget{ + frequency = 5; + dispatch(value) { + for(let choice of this.choices){ + if(value != choice.value){ + choice.elt.setAttribute("style", "display:none"); + } else { + choice.elt.setAttribute("style", choice.style); + } + } + } + } + || + template "widget[@type='Switch']", mode="widget_defs" { param "hmi_element"; - | frequency: 5, - | dispatch: function(value) { - | for(let choice of this.choices){ - | if(value != choice.value){ - | choice.elt.setAttribute("style", "display:none"); - | } else { - | choice.elt.setAttribute("style", choice.style); - | } - | } - | }, - | init: function() { - | // Hello Switch - | }, | choices: [ const "regex",!"'^(\"[^\"].*\"|\-?[0-9]+|false|true)(#.*)?$'"!; foreach "$hmi_element/*[regexp:test(@inkscape:label,$regex)]" { diff -r 8f928cee01e5 -r 7349063b19d8 svghmi/widgets_common.ysl2 --- a/svghmi/widgets_common.ysl2 Wed May 13 14:48:52 2020 +0200 +++ b/svghmi/widgets_common.ysl2 Thu May 14 09:24:09 2020 +0200 @@ -65,13 +65,16 @@ emit "preamble:widget-base-class" { || class Widget { + offset = 0; + frequency = 10; /* FIXME arbitrary default max freq. Obtain from config ? */ constructor(elt_id,args,indexes,members){ + this.element_id = elt_id; this.element = id(elt_id); this.args = args; this.indexes = indexes; - this.offset = 0; Object.keys(members).forEach(prop => this[prop]=members[prop]); } + unsub(){ /* remove subsribers */ for(let index of this.indexes){ diff -r 8f928cee01e5 -r 7349063b19d8 tests/svghmi/svghmi_0@svghmi/svghmi.svg --- a/tests/svghmi/svghmi_0@svghmi/svghmi.svg Wed May 13 14:48:52 2020 +0200 +++ b/tests/svghmi/svghmi_0@svghmi/svghmi.svg Thu May 14 09:24:09 2020 +0200 @@ -16,7 +16,7 @@ version="1.1" id="hmi0" sodipodi:docname="svghmi.svg" - inkscape:version="0.92.4 (5da689c313, 2019-01-14)"> + inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"> <metadata id="metadata4542"> <rdf:RDF> @@ -31,6 +31,20 @@ </metadata> <defs id="defs2"> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="30 : 418 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1358 : 3.9999991 : 1" + inkscape:persp3d-origin="670 : 298 : 1" + id="perspective503" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 360 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1376 : 388 : 1" + inkscape:persp3d-origin="640 : 240 : 1" + id="perspective445" /> <inkscape:tag id="Set 1" inkscape:label="HMI:AccessList@Admin" @@ -127,13 +141,13 @@ inkscape:current-layer="hmi0" showgrid="false" units="px" - inkscape:zoom="0.35355339" - inkscape:cx="-418.67433" - inkscape:cy="-1206.7258" + inkscape:zoom="0.5" + inkscape:cx="523.16321" + inkscape:cy="-1.5475559" inkscape:window-width="1920" - inkscape:window-height="1080" + inkscape:window-height="1348" inkscape:window-x="3815" - inkscape:window-y="968" + inkscape:window-y="700" inkscape:window-maximized="0" showguides="true" inkscape:guide-bbox="true" /> @@ -912,29 +926,29 @@ <text xml:space="preserve" style="font-style:normal;font-weight:normal;font-size:80px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - x="98.164062" - y="469.12109" + x="38.164062" + y="449.12109" id="text134" inkscape:label="HMI:Display@/PUMP0/STROUT"><tspan sodipodi:role="line" id="tspan132" - x="98.164062" - y="469.12109" + x="38.164062" + y="449.12109" style="fill:#ffffff;fill-opacity:1;stroke-width:0.5px">8888</tspan></text> <text inkscape:label="HMI:Display@/PUMP0/BOOLOUT" id="text138" - y="569.12109" - x="98.164062" + y="549.12109" + x="38.164062" style="font-style:normal;font-weight:normal;font-size:80px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.5px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" xml:space="preserve"><tspan style="fill:#ffffff;fill-opacity:1;stroke-width:0.5px" - y="569.12109" - x="98.164062" + y="549.12109" + x="38.164062" id="tspan136" sodipodi:role="line">8888</tspan></text> <g - transform="matrix(0.5,0,0,0.5,90.110264,225.71623)" + transform="matrix(0.5,0,0,0.5,-9.889736,205.71623)" id="g208-1" inkscape:label="HMI:Input@/PUMP0/STRIN" style="stroke-width:2"> @@ -1124,196 +1138,6 @@ </g> </g> <g - transform="matrix(0.5,0,0,0.5,126.87458,546.40152)" - id="g208-1-8" - inkscape:label="HMI:Input@/PUMP0/STRIN" - style="stroke-width:2"> - <text - inkscape:label="value" - id="text164-3" - y="218.24219" - x="136.32812" - style="font-style:normal;font-weight:normal;font-size:160px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - xml:space="preserve"><tspan - style="stroke-width:2px" - y="218.24219" - x="136.32812" - id="tspan162-1" - sodipodi:role="line">8888</tspan></text> - <rect - style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ff00ff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" - id="rect166-8" - width="407.7037" - height="128" - x="139.85185" - y="95.40741" - onclick="" - inkscape:label="edit" /> - <g - transform="translate(-416.52022,170.47452)" - inkscape:label="+"dhu"" - id="g174-9" - style="stroke-width:2"> - <path - style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" - inkscape:transform-center-y="-14.956361" - d="m 797.19546,145.18619 -80.62929,0.60214 -0.60215,-80.629288 80.6293,-0.60214 z" - id="path168-6" - inkscape:connector-curvature="0" /> - <text - xml:space="preserve" - style="font-style:normal;font-weight:normal;font-size:20px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - x="733.58197" - y="111.05016" - id="text172-4"><tspan - sodipodi:role="line" - id="tspan170-3" - x="733.58197" - y="111.05016" - style="stroke-width:1px">dhu</tspan></text> - </g> - <g - transform="translate(-416.52022,170.47452)" - inkscape:label="="plop"" - id="g182-3" - style="stroke-width:2"> - <path - transform="matrix(0,-2.0000001,1.9999999,0,1034.195,1298.6541)" - sodipodi:type="star" - style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" - id="path176-3" - sodipodi:sides="3" - sodipodi:cx="596.74072" - sodipodi:cy="-184.98808" - sodipodi:r1="29.912722" - sodipodi:r2="14.956361" - sodipodi:arg1="0.52359878" - sodipodi:arg2="1.5707963" - inkscape:flatsided="true" - inkscape:rounded="0" - inkscape:randomized="0" - d="m 622.6459,-170.03172 -51.81035,0 25.90517,-44.86908 z" - inkscape:transform-center-y="-3.6154501e-05" - inkscape:transform-center-x="14.956371" /> - <text - id="text180-8" - y="111.05016" - x="633.09552" - style="font-style:normal;font-weight:normal;font-size:20px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - xml:space="preserve"><tspan - style="stroke-width:1px" - y="111.05016" - x="633.09552" - id="tspan178-6" - sodipodi:role="line">plop</tspan></text> - </g> - <g - transform="translate(-416.52022,170.47452)" - inkscape:label="="mhoo"" - id="g190-0" - style="stroke-width:2"> - <path - inkscape:transform-center-y="-5.9989963e-06" - d="m 648.55108,-186.34718 -103.62071,0 51.81035,-89.73817 z" - inkscape:randomized="0" - inkscape:rounded="0" - inkscape:flatsided="true" - sodipodi:arg2="1.5707963" - sodipodi:arg1="0.52359878" - sodipodi:r2="29.912722" - sodipodi:r1="59.825443" - sodipodi:cy="-216.2599" - sodipodi:cx="596.74072" - sodipodi:sides="3" - id="path184-4" - style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" - sodipodi:type="star" - transform="rotate(-90,746.45698,-44.543641)" - inkscape:transform-center-x="14.956364" /> - <text - xml:space="preserve" - style="font-style:normal;font-weight:normal;font-size:20px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - x="537.25018" - y="111.05016" - id="text188-8"><tspan - sodipodi:role="line" - id="tspan186-8" - x="537.25018" - y="111.05016" - style="stroke-width:1px">mhoo</tspan></text> - </g> - <g - transform="translate(-416.52022,170.47452)" - inkscape:label="="yodl"" - id="g198-8" - style="stroke-width:2"> - <path - sodipodi:type="star" - style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" - id="path192-9" - sodipodi:sides="3" - sodipodi:cx="596.74072" - sodipodi:cy="105.17262" - sodipodi:r1="59.825443" - sodipodi:r2="29.912722" - sodipodi:arg1="0.52359878" - sodipodi:arg2="1.5707963" - inkscape:flatsided="true" - inkscape:rounded="0" - inkscape:randomized="0" - d="m 648.55108,135.08534 -103.62071,0 51.81035,-89.738161 z" - inkscape:transform-center-y="-5.5023185e-06" - transform="matrix(0,-1,-1,0,1043.9134,701.91334)" - inkscape:transform-center-x="-14.956365" /> - <text - xml:space="preserve" - style="font-style:normal;font-weight:normal;font-size:20px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - x="925.82605" - y="111.05016" - id="text196-7"><tspan - sodipodi:role="line" - id="tspan194-7" - x="925.82605" - y="111.05016" - style="stroke-width:1px">yodl</tspan></text> - </g> - <g - transform="translate(-416.52022,170.47452)" - inkscape:label="="mhe"" - id="g206-1-6" - style="stroke-width:2"> - <path - inkscape:transform-center-y="-3.3040441e-05" - d="m 622.6459,151.4008 -51.81035,0 25.90517,-44.86908 z" - inkscape:randomized="0" - inkscape:rounded="0" - inkscape:flatsided="true" - sodipodi:arg2="1.5707963" - sodipodi:arg1="0.52359878" - sodipodi:r2="14.956361" - sodipodi:r1="29.912722" - sodipodi:cy="136.44444" - sodipodi:cx="596.74072" - sodipodi:sides="3" - id="path200-4" - style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" - sodipodi:type="star" - transform="matrix(0,-2.0000001,-1.9999999,0,1122.1514,1298.6541)" - inkscape:transform-center-x="-14.956349" /> - <text - id="text204-3" - y="111.05016" - x="842.71497" - style="font-style:normal;font-weight:normal;font-size:20px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - xml:space="preserve"><tspan - style="stroke-width:1px" - y="111.05016" - x="842.71497" - id="tspan202-0" - sodipodi:role="line">mhe</tspan></text> - </g> - </g> - <g inkscape:label="HMI:Keypad:HMI_INT:HMI_REAL" id="g2432" style="fill-rule:evenodd;stroke-width:0.47631353" @@ -2692,4 +2516,144 @@ sodipodi:type="star" inkscape:transform-center-x="1.0089177e-06" /> </g> + <g + transform="translate(-867.71696,-14.163562)" + id="g443" + inkscape:label="HMI:Button@/SELECTION"> + <g + id="g435" + inkscape:label="bg"> + <rect + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:#ff6600;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + id="rect433" + width="245.44583" + height="95.723877" + x="971.96545" + y="594.82263" + ry="35.579063" + inkscape:label="button" /> + </g> + <g + id="g441" + inkscape:label="text"> + <text + inkscape:label="setting_jmp" + id="text439" + y="656.98151" + x="1090.7626" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;display:inline;fill:#ff6600;fill-opacity:1;stroke:none;stroke-width:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + style="text-align:center;text-anchor:middle;fill:#ff6600;stroke-width:0.99999994px" + y="656.98151" + x="1090.7626" + id="tspan437" + sodipodi:role="line">up</tspan></text> + </g> + </g> + <g + id="g5053" + inkscape:label="HMI:Switch@/PUMP0/BOOLOUT"> + <g + sodipodi:type="inkscape:box3d" + id="g473" + style="fill:#ff0000;stroke:#ff00ff" + inkscape:perspectiveID="#perspective445" + inkscape:corner0="-0.22508846 : -0.3474613 : 0 : 1" + inkscape:corner7="-0.30162293 : -0.45734167 : 0.25 : 1" + inkscape:label="true"> + <path + sodipodi:type="inkscape:box3dside" + id="path461" + style="fill:#353564;fill-rule:evenodd;stroke:none;stroke-linejoin:round" + inkscape:box3dsidetype="6" + d="M 825.90072,963.24473 V 1105.042 L 960.08286,916.47892 V 809.26931 Z" + points="825.90072,1105.042 960.08286,916.47892 960.08286,809.26931 825.90072,963.24473 " /> + <path + sodipodi:type="inkscape:box3dside" + id="path463" + style="fill:#afafde;fill-rule:evenodd;stroke:none;stroke-linejoin:round" + inkscape:box3dsidetype="13" + d="m 825.90072,1105.042 90.50967,81.6485 121.15161,-225.30347 -77.47914,-44.90811 z" + points="916.41039,1186.6905 1037.562,961.38703 960.08286,916.47892 825.90072,1105.042 " /> + <path + sodipodi:type="inkscape:box3dside" + id="path465" + style="fill:#e9e9ff;fill-rule:evenodd;stroke:none;stroke-linejoin:round" + inkscape:box3dsidetype="11" + d="m 960.08286,809.26931 77.47914,36.25624 v 115.86148 l -77.47914,-44.90811 z" + points="1037.562,845.52555 1037.562,961.38703 960.08286,916.47892 960.08286,809.26931 " /> + <path + sodipodi:type="inkscape:box3dside" + id="path467" + style="fill:#4d4d9f;fill-rule:evenodd;stroke:none;stroke-linejoin:round" + inkscape:box3dsidetype="5" + d="M 825.90072,963.24473 916.41039,1029.3537 1037.562,845.52555 960.08286,809.26931 Z" + points="916.41039,1029.3537 1037.562,845.52555 960.08286,809.26931 825.90072,963.24473 " /> + <path + sodipodi:type="inkscape:box3dside" + id="path469" + style="fill:#d7d7ff;fill-rule:evenodd;stroke:none;stroke-linejoin:round" + inkscape:box3dsidetype="14" + d="m 916.41039,1029.3537 v 157.3368 L 1037.562,961.38703 V 845.52555 Z" + points="916.41039,1186.6905 1037.562,961.38703 1037.562,845.52555 916.41039,1029.3537 " /> + <path + sodipodi:type="inkscape:box3dside" + id="path471" + style="fill:#8686bf;fill-rule:evenodd;stroke:none;stroke-linejoin:round" + inkscape:box3dsidetype="3" + d="m 825.90072,963.24473 90.50967,66.10897 v 157.3368 l -90.50967,-81.6485 z" + points="916.41039,1029.3537 916.41039,1186.6905 825.90072,1105.042 825.90072,963.24473 " /> + </g> + <g + sodipodi:type="inkscape:box3d" + id="g501" + style="fill:#ff0000;stroke:#ff00ff" + inkscape:perspectiveID="#perspective503" + inkscape:corner0="-0.22508846 : -0.3474613 : 0 : 1" + inkscape:corner7="-0.30162293 : -0.45734167 : 0.25 : 1" + inkscape:label="false"> + <path + sodipodi:type="inkscape:box3dside" + id="path489" + style="fill:#353564;fill-rule:evenodd;stroke:none;stroke-linejoin:round" + inkscape:box3dsidetype="6" + d="M 855.90072,905.24473 V 1047.042 L 978.37453,966.29311 V 859.08349 Z" + points="855.90072,1047.042 978.37453,966.29311 978.37453,859.08349 855.90072,905.24473 " /> + <path + sodipodi:type="inkscape:box3dside" + id="path491" + style="fill:#afafde;fill-rule:evenodd;stroke:none;stroke-linejoin:round" + inkscape:box3dsidetype="13" + d="m 855.90072,1047.042 90.50967,81.6485 108.49841,-108.7886 -76.53427,-53.60879 z" + points="946.41039,1128.6905 1054.9088,1019.9019 978.37453,966.29311 855.90072,1047.042 " /> + <path + sodipodi:type="inkscape:box3dside" + id="path493" + style="fill:#e9e9ff;fill-rule:evenodd;stroke:none;stroke-linejoin:round" + inkscape:box3dsidetype="11" + d="m 978.37453,859.08349 76.53427,44.9569 v 115.86151 l -76.53427,-53.60879 z" + points="1054.9088,904.04039 1054.9088,1019.9019 978.37453,966.29311 978.37453,859.08349 " /> + <path + sodipodi:type="inkscape:box3dside" + id="path495" + style="fill:#4d389f;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-linejoin:round" + inkscape:box3dsidetype="5" + d="m 855.90072,905.24473 90.50967,66.109 108.49841,-67.31334 -76.53427,-44.9569 z" + points="946.41039,971.35373 1054.9088,904.04039 978.37453,859.08349 855.90072,905.24473 " /> + <path + sodipodi:type="inkscape:box3dside" + id="path497" + style="fill:#d78bff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-linejoin:round" + inkscape:box3dsidetype="14" + d="M 946.41039,971.35373 V 1128.6905 L 1054.9088,1019.9019 V 904.04039 Z" + points="946.41039,1128.6905 1054.9088,1019.9019 1054.9088,904.04039 946.41039,971.35373 " /> + <path + sodipodi:type="inkscape:box3dside" + id="path499" + style="fill:#8667bf;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-linejoin:round" + inkscape:box3dsidetype="3" + d="m 855.90072,905.24473 90.50967,66.109 v 157.33677 l -90.50967,-81.6485 z" + points="946.41039,971.35373 946.41039,1128.6905 855.90072,1047.042 855.90072,905.24473 " /> + </g> + </g> </svg>