--- a/svghmi/widget_animate.ysl2 Wed Sep 30 12:31:59 2020 +0200
+++ b/svghmi/widget_animate.ysl2 Thu Oct 01 14:23:27 2020 +0200
@@ -5,9 +5,10 @@
class AnimateWidget extends Widget{
frequency = 5;
speed = 0;
+ widget_center = undefined;
dispatch(value) {
- this.speed = value;
+ this.speed = value / 5;
//reconfigure animation
this.request_animate();
@@ -15,14 +16,29 @@
animate(){
// change animation properties
- this.element.children[0].setAttribute("dur", String(this.speed)+"s")
+ for(let child of this.element.children){
+ if(child.nodeName == "animateTransform"){
+ if(this.speed > 0){
+ child.setAttribute("dur", this.speed+"s");
+ child.setAttribute("from", "0 "+this.widget_center[0]+" "+this.widget_center[1]);
+ child.setAttribute("to", "360 "+this.widget_center[0]+" "+this.widget_center[1]);
+ }
+ else if(this.speed < 0){
+ child.setAttribute("dur", (-1)*this.speed+"s");
+ child.setAttribute("from", "360 "+this.widget_center[0]+" "+this.widget_center[1]);
+ child.setAttribute("to", "0 "+this.widget_center[0]+" "+this.widget_center[1]);
+ }
+ else{
+ child.setAttribute("from", "0 "+this.widget_center[0]+" "+this.widget_center[1]);
+ child.setAttribute("to", "0 "+this.widget_center[0]+" "+this.widget_center[1]);
+ }
+ }
+ }
}
init() {
- let width = this.element.getAttribute("width");
- let height = this.element.getAttribute("height");
- this.element.setAttribute("x",width/-2);
- this.element.setAttribute("y",height/-2);
+ let widget_pos = this.element.getBBox();
+ this.widget_center = [(widget_pos.x+widget_pos.width/2), (widget_pos.y+widget_pos.height/2)];
}
}
||
--- a/svghmi/widget_button.ysl2 Wed Sep 30 12:31:59 2020 +0200
+++ b/svghmi/widget_button.ysl2 Thu Oct 01 14:23:27 2020 +0200
@@ -25,13 +25,15 @@
}
animate(){
- // redraw button on screen refresh
- if (this.state_hmi) {
- this.active_elt.setAttribute("style", this.active_style);
- this.inactive_elt.setAttribute("style", "display:none");
- } else {
- this.inactive_elt.setAttribute("style", this.inactive_style);
- this.active_elt.setAttribute("style", "display:none");
+ if (this.active_style && this.inactive_style) {
+ // redraw button on screen refresh
+ if (this.state_hmi) {
+ this.active_elt.setAttribute("style", this.active_style);
+ this.inactive_elt.setAttribute("style", "display:none");
+ } else {
+ this.inactive_elt.setAttribute("style", this.inactive_style);
+ this.active_elt.setAttribute("style", "display:none");
+ }
}
}
--- a/svghmi/widget_circularslider.ysl2 Wed Sep 30 12:31:59 2020 +0200
+++ b/svghmi/widget_circularslider.ysl2 Thu Oct 01 14:23:27 2020 +0200
@@ -7,16 +7,33 @@
range = undefined;
circle = undefined;
handle_pos = undefined;
- svg_dist = undefined;
+ curr_value = 0;
drag = false;
enTimer = false;
last_drag = false;
dispatch(value) {
+ let [min,max,start,totallength] = this.range;
+ //save current value inside widget
+ this.curr_value = value;
+
+ //check if in range
+ if (this.curr_value > max){
+ this.curr_value = max;
+ this.apply_hmi_value(0, this.curr_value);
+ }
+ else if (this.curr_value < min){
+ this.curr_value = min;
+ this.apply_hmi_value(0, this.curr_value);
+ }
+
if(this.value_elt)
this.value_elt.textContent = String(value);
- this.update_DOM(value, this.handle_elt);
+ //don't update if draging and setpoint ghost doesn't exist
+ if(!this.drag || (this.setpoint_elt != undefined)){
+ this.update_DOM(value, this.handle_elt);
+ }
}
update_DOM(value, elt){
@@ -25,6 +42,7 @@
let tip = this.range_elt.getPointAtLength(length);
elt.setAttribute('transform',"translate("+(tip.x-this.handle_pos.x)+","+(tip.y-this.handle_pos.y)+")");
+ // show or hide ghost if exists
if(this.setpoint_elt != undefined){
if(this.last_drag!= this.drag){
if(this.drag){
@@ -38,21 +56,28 @@
}
on_release(evt) {
+ //unbind events
window.removeEventListener("touchmove", this.on_bound_drag, true);
window.removeEventListener("mousemove", this.on_bound_drag, true);
window.removeEventListener("mouseup", this.bound_on_release, true)
window.removeEventListener("touchend", this.bound_on_release, true);
window.removeEventListener("touchcancel", this.bound_on_release, true);
+
+ //reset drag flag
if(this.drag){
this.drag = false;
}
+
+ // get final position
this.update_position(evt);
}
on_drag(evt){
+ //ignore drag event for X amount of time and if not selected
if(this.enTimer && this.drag){
this.update_position(evt);
+
//reset timer
this.enTimer = false;
setTimeout("{hmi_widgets['"+this.element_id+"'].enTimer = true;}", 100);
@@ -103,40 +128,54 @@
//get handle distance from mouse position
if(fi<fiEnd){
- this.svg_dist=(fi)/(fiEnd)*(this.range[1]-this.range[0]);
+ this.curr_value=(fi)/(fiEnd)*(this.range[1]-this.range[0]);
}
else if(fiEnd<fi && fi<fiEnd+minMax){
- this.svg_dist = this.range[1];
+ this.curr_value = this.range[1];
}
else{
- this.svg_dist = this.range[0];
- }
-
-
- this.apply_hmi_value(0, Math.ceil(this.svg_dist));
-
- // update ghost cursor
- if(this.setpoint_elt != undefined){
- this.request_animate();
- }
+ this.curr_value = this.range[0];
+ }
+
+ //apply value to hmi
+ this.apply_hmi_value(0, Math.ceil(this.curr_value));
+
+ //redraw handle
+ this.request_animate();
+
}
}
animate(){
- this.update_DOM(this.svg_dist, this.setpoint_elt);
+ // redraw handle on screen refresh
+ // check if setpoint(ghost) handle exsist otherwise update main handle
+ if(this.setpoint_elt != undefined){
+ this.update_DOM(this.curr_value, this.setpoint_elt);
+ }
+ else{
+ this.update_DOM(this.curr_value, this.handle_elt);
+ }
}
on_select(evt){
+ //enable drag flag and timer
this.drag = true;
this.enTimer = true;
+
+ //bind events
window.addEventListener("touchmove", this.on_bound_drag, true);
window.addEventListener("mousemove", this.on_bound_drag, true);
- window.addEventListener("mouseup", this.bound_on_release, true)
+ window.addEventListener("mouseup", this.bound_on_release, true);
window.addEventListener("touchend", this.bound_on_release, true);
window.addEventListener("touchcancel", this.bound_on_release, true);
+
+ //update postion on mouse press
this.update_position(evt);
+
+ //prevent next events
+ evt.stopPropagation();
}
init() {
@@ -175,23 +214,19 @@
this.bound_on_release = this.on_release.bind(this);
this.on_bound_drag = this.on_drag.bind(this);
- //init events
+ this.handle_elt.addEventListener("mousedown", this.bound_on_select);
this.element.addEventListener("mousedown", this.bound_on_select);
this.element.addEventListener("touchstart", this.bound_on_select);
-
+ //touch recognised as page drag without next command
+ document.body.addEventListener("touchstart", function(e){}, false);
+
+ //save ghost style
+ //save ghost style
if(this.setpoint_elt != undefined){
this.setpoint_style = this.setpoint_elt.getAttribute("style");
this.setpoint_elt.setAttribute("style", "display:none");
}
-
- window.addEventListener("touchmove", hmi_widgets[this.element_id].update_position.bind(this));
- window.addEventListener("mousemove", hmi_widgets[this.element_id].update_position.bind(this));
-
- window.addEventListener("mouseup", hmi_widgets[this.element_id].on_release.bind(this))
- window.addEventListener("touchend", hmi_widgets[this.element_id].on_release.bind(this));
- window.addEventListener("touchcancel", hmi_widgets[this.element_id].on_release.bind(this));
-
}
}
||
@@ -199,6 +234,6 @@
template "widget[@type='CircularSlider']", mode="widget_defs" {
param "hmi_element";
labels("handle range");
- optional_labels("value min max");
+ optional_labels("value min max setpoint");
|,
}
--- a/svghmi/widget_slider.ysl2 Wed Sep 30 12:31:59 2020 +0200
+++ b/svghmi/widget_slider.ysl2 Thu Oct 01 14:23:27 2020 +0200
@@ -6,7 +6,9 @@
frequency = 5;
range = undefined;
handle_orig = undefined;
- scroll_size = 10;
+ scroll_size = undefined;
+ scroll_range = 0;
+ scroll_visible = 7;
min_size = 0.07;
fi = undefined;
curr_value = 0;
@@ -15,16 +17,51 @@
handle_click = undefined;
last_drag = false;
- dispatch(value) {
- //save current value inside widget
- this.curr_value = value;
-
- if(this.value_elt)
- this.value_elt.textContent = String(value);
+ dispatch(value,oldval, index) {
+ if (index == 0){
+ let [min,max,start,totallength] = this.range;
+ //save current value inside widget
+ this.curr_value = value;
+
+ //check if in range
+ if (this.curr_value > max){
+ this.curr_value = max;
+ this.apply_hmi_value(0, this.curr_value);
+ }
+ else if (this.curr_value < min){
+ this.curr_value = min;
+ this.apply_hmi_value(0, this.curr_value);
+ }
+
+ if(this.value_elt)
+ this.value_elt.textContent = String(value);
+ }
+ else if(index == 1){
+ this.scroll_range = value;
+ this.set_scroll();
+ }
+ else if(index == 2){
+ this.scroll_visible = value;
+ this.set_scroll();
+ }
//don't update if draging and setpoint ghost doesn't exist
if(!this.drag || (this.setpoint_elt != undefined)){
- this.update_DOM(value, this.handle_elt);
+ this.update_DOM(this.curr_value, this.handle_elt);
+ }
+ }
+
+ set_scroll(){
+ //check if range is bigger than visible and set scroll size
+ if(this.scroll_range > this.scroll_visible){
+ this.scroll_size = this.scroll_range - this.scroll_visible;
+ this.range[0] = 0;
+ this.range[1] = this.scroll_size;
+ }
+ else{
+ this.scroll_size = 1;
+ this.range[0] = 0;
+ this.range[1] = 1;
}
}
@@ -197,14 +234,13 @@
this.curr_value=Math.ceil((html_dist/range_length)*(this.range[1]-this.range[0])+this.range[0]);
}
- //check if in range
+ //check if in range and apply
if (this.curr_value > max){
this.curr_value = max;
}
else if (this.curr_value < min){
this.curr_value = min;
}
-
this.apply_hmi_value(0, this.curr_value);
//redraw handle
@@ -224,75 +260,45 @@
}
on_select(evt){
- if (evt.currentTarget != this.up_elt || evt.currentTarget != this.down_elt){
- //enable drag flag and timer
- this.drag = true;
- this.enTimer = true;
-
- //bind events
- window.addEventListener("touchmove", this.on_bound_drag, true);
- window.addEventListener("mousemove", this.on_bound_drag, true);
-
- window.addEventListener("mouseup", this.bound_on_release, true);
- window.addEventListener("touchend", this.bound_on_release, true);
- window.addEventListener("touchcancel", this.bound_on_release, true);
-
- // check if handle was pressed
- if (evt.currentTarget == this.handle_elt){
- //get mouse position on the handle
- let mouseX = undefined;
- let mouseY = undefined;
- if (evt.type.startsWith("touch")){
- mouseX = Math.ceil(evt.touches[0].clientX);
- mouseY = Math.ceil(evt.touches[0].clientY);
- }
- else{
- mouseX = evt.pageX;
- mouseY = evt.pageY;
- }
- //save coordinates and orig value
- this.handle_click = [mouseX,mouseY,this.curr_value];
+ //enable drag flag and timer
+ this.drag = true;
+ this.enTimer = true;
+
+ //bind events
+ window.addEventListener("touchmove", this.on_bound_drag, true);
+ window.addEventListener("mousemove", this.on_bound_drag, true);
+
+ window.addEventListener("mouseup", this.bound_on_release, true);
+ window.addEventListener("touchend", this.bound_on_release, true);
+ window.addEventListener("touchcancel", this.bound_on_release, true);
+
+ // check if handle was pressed
+ if (evt.currentTarget == this.handle_elt){
+ //get mouse position on the handle
+ let mouseX = undefined;
+ let mouseY = undefined;
+ if (evt.type.startsWith("touch")){
+ mouseX = Math.ceil(evt.touches[0].clientX);
+ mouseY = Math.ceil(evt.touches[0].clientY);
}
else{
- // get new handle position and reset if handle was not pressed
- this.handle_click = undefined;
- this.update_position(evt);
- }
-
- //prevent next events
- evt.stopPropagation();
+ mouseX = evt.pageX;
+ mouseY = evt.pageY;
+ }
+ //save coordinates and orig value
+ this.handle_click = [mouseX,mouseY,this.curr_value];
}
else{
- //prevent next events if up/down were pressed
- evt.stopPropagation();
- }
- }
-
- on_up_button(evt){
- // go one position up and check if in bounds
- this.curr_value = this.curr_value + 1;
- if (this.curr_value > this.range[1]){
- this.curr_value = this.range[1];
- }
-
- this.apply_hmi_value(0, this.curr_value);
-
- //redraw handle
- this.request_animate();
- }
-
- on_down_button(evt){
- // go one position down
- this.curr_value = this.curr_value - 1;
- if (this.curr_value < this.range[0]){
- this.curr_value = this.range[0];
- }
-
- this.apply_hmi_value(0, this.curr_value);
-
- //redraw handle
- this.request_animate();
- }
+ // get new handle position and reset if handle was not pressed
+ this.handle_click = undefined;
+ this.update_position(evt);
+ }
+
+ //prevent next events
+ evt.stopPropagation();
+
+ }
+
init() {
//set min max value if not defined
@@ -303,13 +309,6 @@
Number(this.max_elt.textContent) :
this.args.length >= 2 ? this.args[1] : 100;
- //init up down button if exists
- if(this.up_elt){
- this.up_elt.setAttribute("onclick", "hmi_widgets['"+this.element_id+"'].on_up_button(evt)");
- }
- if(this.down_elt){
- this.down_elt.setAttribute("onclick", "hmi_widgets['"+this.element_id+"'].on_down_button(evt)");
- }
// save initial parameters
this.range_elt.style.strokeMiterlimit="0";
@@ -325,9 +324,12 @@
this.on_bound_drag = this.on_drag.bind(this);
this.handle_elt.addEventListener("mousedown", this.bound_on_select);
- this.range_elt.addEventListener("mousedown", this.bound_on_select);
- this.range_elt.addEventListener("touchstart", this.bound_on_select);
-
+ this.element.addEventListener("mousedown", this.bound_on_select);
+ this.element.addEventListener("touchstart", this.bound_on_select);
+ //touch recognised as page drag without next command
+ document.body.addEventListener("touchstart", function(e){}, false);
+
+ //save ghost style
if(this.setpoint_elt != undefined){
this.setpoint_style = this.setpoint_elt.getAttribute("style");
this.setpoint_elt.setAttribute("style", "display:none");
@@ -340,6 +342,6 @@
template "widget[@type='Slider']", mode="widget_defs" {
param "hmi_element";
labels("handle range");
- optional_labels("value min max setpoint up down");
+ optional_labels("value min max setpoint");
|,
}
--- a/tests/svghmi/svghmi_0@svghmi/svghmi.svg Wed Sep 30 12:31:59 2020 +0200
+++ b/tests/svghmi/svghmi_0@svghmi/svghmi.svg Thu Oct 01 14:23:27 2020 +0200
@@ -16,7 +16,7 @@
version="1.1"
id="hmi0"
sodipodi:docname="svghmi.svg"
- inkscape:version="0.92.3 (2405546, 2018-03-11)">
+ inkscape:version="0.92.5 (0.92.5+68)">
<metadata
id="metadata4542">
<rdf:RDF>
@@ -197,16 +197,16 @@
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:document-units="px"
- inkscape:current-layer="g1384"
+ inkscape:current-layer="hmi0"
showgrid="false"
units="px"
- inkscape:zoom="1.0913159"
- inkscape:cx="-911.00114"
- inkscape:cy="181.96708"
- inkscape:window-width="1800"
- inkscape:window-height="836"
- inkscape:window-x="0"
- inkscape:window-y="27"
+ inkscape:zoom="2.1826317"
+ inkscape:cx="-408.38959"
+ inkscape:cy="176.28106"
+ inkscape:window-width="1863"
+ inkscape:window-height="1176"
+ inkscape:window-x="57"
+ inkscape:window-y="24"
inkscape:window-maximized="1"
showguides="true"
inkscape:guide-bbox="true" />
@@ -5223,6 +5223,9 @@
<g
id="g908"
inkscape:label="HMI:VarInit:100@.range" />
+ <g
+ inkscape:label="HMI:VarInit:7@.visibleAlarms"
+ id="g906-3" />
<rect
style="color:#000000;fill:#4d4d4d"
id="rect2015"
@@ -5549,32 +5552,53 @@
sodipodi:type="star" />
</g>
<g
- id="g1553"
- transform="matrix(0.5,0,0,0.5,-774.48108,252.30551)">
+ id="g1766"
+ inkscape:label="HMI:Slider@.position@.range@.alarmVisible">
+ <g
+ transform="matrix(0.620824,0,0,0.5,-963.61047,260.72872)"
+ id="g1752"
+ inkscape:label="HMI:Input@.position">
+ <path
+ inkscape:label="+1"
+ 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:#ff6600;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.55573034px;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"
+ d="m 1175.2115,143.25263 34.1278,56.73732 h -68.2556 z"
+ id="path1266"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccc" />
+ <path
+ inkscape:label="-1"
+ sodipodi:nodetypes="cccc"
+ inkscape:connector-curvature="0"
+ id="path1268"
+ d="m 1175.2115,851.99803 34.1278,-54.90445 h -68.2556 z"
+ 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:#ff6600;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.51411843px;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" />
+ </g>
+ <path
+ style="opacity:0;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.00058591px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M -234.01102,648.56465 V 371.89445"
+ id="path1772"
+ inkscape:connector-curvature="0"
+ inkscape:label="range" />
<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:#bc8f8f;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2px;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"
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.30952382;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#cccccc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.03627348px;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="rect1264-3"
+ width="42.374725"
+ height="276.64423"
+ x="-255.19838"
+ y="371.91068"
+ rx="7.6034913"
+ ry="6.8822322"
+ inkscape:label="background" />
+ <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:#ff6600;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.11429262px;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="rect1264"
- width="68.255615"
- height="165.68298"
- x="1141.0836"
- y="420.78394"
- rx="12.247418"
- ry="14"
- inkscape:label="cursor" />
- <path
- sodipodi:nodetypes="cccc"
- inkscape:connector-curvature="0"
- id="path1266"
- d="m 1175.2115,371.25263 34.1278,34.74552 h -68.2556 z"
- 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:#bc8f8f;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2px;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:label="backward" />
- <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:#bc8f8f;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2px;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"
- d="m 1175.2115,635.99803 34.1278,-34.7453 h -68.2556 z"
- id="path1268"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="cccc"
- inkscape:label="forward" />
+ width="42.374725"
+ height="82.841492"
+ x="-255.19838"
+ y="565.71338"
+ rx="7.6034913"
+ ry="7"
+ inkscape:label="handle" />
</g>
<g
id="g893"
@@ -6029,16 +6053,6 @@
x="-546.47461"
id="tspan2172"
sodipodi:role="line">Status</tspan></text>
- <text
- xml:space="preserve"
- style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ff0000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- x="-241.25107"
- y="513.61072"
- id="text2184"><tspan
- sodipodi:role="line"
- id="tspan2182"
- x="-241.25107"
- y="513.61072">TODO</tspan></text>
<g
transform="matrix(0.57180538,0,0,0.57180538,226.35945,-231.48695)"
inkscape:label="HMI:Jump:AlarmPage"
--- a/tests/svghmi_v2/plc.xml Wed Sep 30 12:31:59 2020 +0200
+++ b/tests/svghmi_v2/plc.xml Thu Oct 01 14:23:27 2020 +0200
@@ -1,7 +1,7 @@
<?xml version='1.0' encoding='utf-8'?>
<project xmlns:ns1="http://www.plcopen.org/xml/tc6_0201" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.plcopen.org/xml/tc6_0201">
<fileHeader companyName="Unknown" productName="Unnamed" productVersion="1" creationDateTime="2019-08-06T14:23:42"/>
- <contentHeader name="Unnamed" modificationDateTime="2020-09-23T16:29:40">
+ <contentHeader name="Unnamed" modificationDateTime="2020-09-30T13:04:27">
<coordinateInfo>
<fbd>
<scaling x="5" y="5"/>
@@ -77,7 +77,7 @@
</variable>
<variable name="Speed">
<type>
- <derived name="HMI_REAL"/>
+ <derived name="HMI_INT"/>
</type>
</variable>
</localVars>
--- a/tests/svghmi_v2/svghmi_0@svghmi/svghmi.svg Wed Sep 30 12:31:59 2020 +0200
+++ b/tests/svghmi_v2/svghmi_0@svghmi/svghmi.svg Thu Oct 01 14:23:27 2020 +0200
@@ -16,7 +16,7 @@
version="1.1"
id="hmi0"
sodipodi:docname="svghmi.svg"
- inkscape:version="0.92.5 (0.92.5+68)"
+ inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
inkscape:label="Layer">
<metadata
id="metadata4542">
@@ -109,13 +109,13 @@
inkscape:current-layer="hmi0"
showgrid="false"
units="px"
- inkscape:zoom="1.4142136"
- inkscape:cx="660.12647"
- inkscape:cy="334.93826"
- inkscape:window-width="2503"
- inkscape:window-height="1416"
- inkscape:window-x="57"
- inkscape:window-y="24"
+ inkscape:zoom="0.7071068"
+ inkscape:cx="-76.932824"
+ inkscape:cy="317.38961"
+ inkscape:window-width="1920"
+ inkscape:window-height="1137"
+ inkscape:window-x="-8"
+ inkscape:window-y="-8"
inkscape:window-maximized="1"
showguides="true"
inkscape:guide-bbox="true" />
@@ -129,7 +129,7 @@
inkscape:label="HMI:Page:Home"
sodipodi:insensitive="true" />
<g
- inkscape:label="HMI:Slider@/PUMP0/SLOTH"
+ inkscape:label="HMI:Slider@/SPEED"
transform="matrix(7.5590552,0,0,7.5590552,-710.78539,551.61779)"
id="g110-0">
<path
@@ -1620,19 +1620,47 @@
id="rect477hjoj"
style="opacity:1;fill:#ff0015;fill-opacity:1;stroke:none" />
</g>
- <image
- y="128.18585"
- x="899.05353"
- id="fan_rotatte"
- xlink:href="data:image/png;base64,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 pwU/G0JIJP1/qNlc/9VTTLcAAAAASUVORK5CYII= "
- preserveAspectRatio="none"
- height="294"
- width="312"
+ <g
+ id="g1439"
inkscape:label="HMI:Animate@/SPEED">
- <animateMotion
- path="M 1060.6274,332 A 22.627417,23.688076 0 0 1 1038,355.68808 22.627417,23.688076 0 0 1 1015.3726,332 22.627417,23.688076 0 0 1 1038,308.31192 22.627417,23.688076 0 0 1 1060.6274,332 Z"
- dur="0.5s"
- rotate="auto"
+ <animateTransform
+ attributeName="transform"
+ attributeType="XML"
+ type="rotate"
+ from="0 1049 278"
+ to="360 1049 278"
+ dur="1s"
repeatCount="indefinite" />
- </image>
+ <circle
+ r="32.057827"
+ cy="278.18585"
+ cx="1049.0535"
+ id="path1380"
+ style="fill:#ececec;fill-opacity:1;stroke:#ff0000;stroke-width:2.95733476;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ y="128.18585"
+ x="899.05353"
+ height="300"
+ width="300"
+ id="rect1382"
+ style="opacity:0;fill:#ececec;fill-opacity:1;stroke:none;stroke-width:3.69000006;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="sssssss"
+ inkscape:connector-curvature="0"
+ id="path1388"
+ d="m 1021.7548,245.83452 c 1.9692,9.54564 9.417,-4.37059 26.6751,-4.06174 27.2477,0.48762 30.0401,21.24497 35.5749,12.81174 6.6594,-10.14673 12.6699,-22.7446 14.75,-33.25 13.5509,-68.43783 -46.4736,-97.18589 -72,-91.49999 -40.88858,9.10778 -49.54078,47.21136 -31.99998,71.75 13.16428,18.41615 23.37448,26.67508 26.99998,44.24999 z"
+ style="fill:#fd0000;fill-opacity:1;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="sssssss"
+ inkscape:connector-curvature="0"
+ id="path1388-9"
+ d="m 1091.4532,274.25975 c -8.9783,-3.79302 -1.7422,10.23457 -11.7862,24.27224 -15.8577,22.16324 -34.5364,12.68834 -30.7308,22.03024 4.5788,11.24 11.5443,23.3361 19.0162,31.0083 48.6752,49.9808 106.3992,16.8549 116.1963,-7.3926 15.6932,-38.84015 -10.7791,-67.57972 -40.9378,-67.05341 -22.634,0.39495 -35.2273,4.11873 -51.7577,-2.86477 z"
+ style="fill:#fd0000;fill-opacity:1;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="sssssss"
+ inkscape:connector-curvature="0"
+ id="path1388-9-8"
+ d="m 1032.8567,317.85643 c 7.5732,-6.1355 -8.2092,-6.3552 -15.8654,-21.82523 -12.0882,-24.42445 5.0646,-36.44319 -4.9688,-37.48364 -12.07218,-1.25186 -26.02318,-0.80116 -36.30958,2.17903 -67.0109,19.41388 -64.9607,85.93594 -48.1806,105.99474 26.8787,32.1304 64.6969,22.3051 78.43058,-4.5502 10.3071,-20.1549 12.9505,-33.0184 26.8938,-44.3147 z"
+ style="fill:#fd0000;fill-opacity:1;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ </g>
</svg>