--- a/svghmi/gen_index_xhtml.xslt Fri Jul 17 12:19:53 2020 +0200
+++ b/svghmi/gen_index_xhtml.xslt Fri Jul 17 12:21:45 2020 +0200
@@ -658,11 +658,17 @@
<xsl:text>All units must be set to "px" in Inkscape's document properties</xsl:text>
- <xsl:variable name="to_unlink" select="$hmi_elements[not(@id = $hmi_pages)]/descendant-or-self::svg:use"/>
+ <xsl:variable name="hmi_lists_descs" select="$parsed_widgets/widget[@type = 'List']"/> + <xsl:variable name="hmi_lists" select="$hmi_elements[@id = $hmi_lists_descs/@id]"/> + <xsl:variable name="targets_not_to_unlink" select="$hmi_elements[@id = $hmi_lists/@id]/descendant::svg:*"/> + <xsl:variable name="to_unlink" select="$hmi_elements[not(@id = $hmi_pages/@id)]/descendant-or-self::svg:use"/> <xsl:template xmlns="http://www.w3.org/2000/svg" mode="inline_svg" match="svg:use">
+ <xsl:variable name="targetid" select="substring-after(@xlink:href,'#')"/> - <xsl:when test="@id = $to_unlink/@id">
- <xsl:call-template name="unlink_clone"/>
+ <xsl:when test="@id = $to_unlink/@id and not($targetid = $targets_not_to_unlink/@id)"> + <xsl:call-template name="unlink_clone"> + <xsl:with-param name="targetid" select="$targetid"/> @@ -699,7 +705,7 @@
<xsl:variable name="merge_use_attrs" select="exsl:node-set($_merge_use_attrs)"/>
<xsl:template xmlns="http://www.w3.org/2000/svg" name="unlink_clone">
- <xsl:variable name="targetid" select="substring-after(@xlink:href,'#')"/>
+ <xsl:param name="targetid"/> <xsl:variable name="target" select="//svg:*[@id = $targetid]"/>
@@ -816,6 +822,13 @@
+ <xsl:text>Not to unlink : + <xsl:for-each select="$targets_not_to_unlink"> + <xsl:value-of select="@id"/> @@ -2149,7 +2162,7 @@
<xsl:template mode="widget_class" match="widget[@type='JsonTable']">
<xsl:text>class JsonTableWidget extends Widget{
- <xsl:text> on_click(evt) {
+ <xsl:text> do_http_request() { <xsl:text> const query = {
@@ -2179,12 +2192,24 @@
<xsl:text> .then(res => res.json())
- <xsl:text> .then(res => console.log(res));
+ <xsl:text> .then(this.spread_json_data); + <xsl:text> dispatch(value) { + <xsl:text> this.do_http_request(); + <xsl:text> on_click(evt) { + <xsl:text> this.do_http_request(); <xsl:text> this.element.setAttribute("onclick", "hmi_widgets['"+this.element_id+"'].on_click(evt)");
@@ -2194,6 +2219,86 @@
+ <xsl:template mode="json_table_elt_render" match="svg:*"> + <xsl:message terminate="no"> + <xsl:text>JsonTable Widget can't contain element of type </xsl:text> + <xsl:value-of select="local-name()"/> + <xsl:template mode="json_table_elt_render" match="svg:use"> + <xsl:param name="value_expr"/> + <xsl:text> console.log("</xsl:text> + <xsl:value-of select="@id"/> + <xsl:text>", "</xsl:text> + <xsl:value-of select="$value_expr"/> + <xsl:text>", </xsl:text> + <xsl:value-of select="$value_expr"/> + <xsl:template mode="json_table_elt_render" match="svg:text"> + <xsl:param name="value_expr"/> + <xsl:text> console.log("</xsl:text> + <xsl:value-of select="@id"/> + <xsl:text>", "</xsl:text> + <xsl:value-of select="$value_expr"/> + <xsl:text>", </xsl:text> + <xsl:value-of select="$value_expr"/> + <xsl:template mode="json_table_render" match="svg:*"> + <xsl:param name="objname"/> + <xsl:apply-templates mode="json_table_elt_render" select="."> + <xsl:with-param name="value_expr"> + <xsl:value-of select="$objname"/> + <xsl:value-of select="@inkscape:label"/> + <xsl:template mode="json_table_render" match="svg:g"> + <xsl:param name="objname"/> + <xsl:text>let obj_</xsl:text> + <xsl:value-of select="@id"/> + <xsl:text> = </xsl:text> + <xsl:value-of select="$objname"/> + <xsl:value-of select="@inkscape:label"/> + <xsl:apply-templates mode="json_table_render" select="*[@inkscape:label]"> + <xsl:with-param name="objname"> + <xsl:text>obj_</xsl:text> + <xsl:value-of select="@id"/> + <xsl:template mode="widget_defs" match="widget[@type='JsonTable']"> + <xsl:param name="hmi_element"/> + <xsl:call-template name="defs_by_labels"> + <xsl:with-param name="hmi_element" select="$hmi_element"/> + <xsl:with-param name="labels"> + <xsl:text>data</xsl:text> + <xsl:call-template name="defs_by_labels"> + <xsl:with-param name="hmi_element" select="$hmi_element"/> + <xsl:with-param name="labels"> + <xsl:text>forward backward cursor</xsl:text> + <xsl:with-param name="mandatory" select="'no'"/> + <xsl:variable name="data_elt" select="$result_svg_ns//*[@id = $hmi_element/@id]/*[@inkscape:label = 'data']"/> + <xsl:text>spread_json_data: function(jdata) { + <xsl:text> console.log(jdata); + <xsl:apply-templates mode="json_table_render" select="$data_elt/*"> + <xsl:with-param name="objname" select="'jdata'"/> <xsl:template name="jump_widget_activity">
<xsl:param name="hmi_element"/>
<xsl:call-template name="defs_by_labels">
--- a/svghmi/widget_jsontable.ysl2 Fri Jul 17 12:19:53 2020 +0200
+++ b/svghmi/widget_jsontable.ysl2 Fri Jul 17 12:21:45 2020 +0200
@@ -3,7 +3,7 @@
template "widget[@type='JsonTable']", mode="widget_class"
class JsonTableWidget extends Widget{
@@ -18,11 +18,54 @@
fetch(this.args[0], options)
- .then(res => console.log(res));
+ .then(this.spread_json_data); + this.do_http_request(); + this.do_http_request(); this.element.setAttribute("onclick", "hmi_widgets['"+this.element_id+"'].on_click(evt)");
+template "svg:*", mode="json_table_elt_render" { + warning > JsonTable Widget can't contain element of type «local-name()». +template "svg:use", mode="json_table_elt_render" { + | console.log("«@id»", "«$value_expr»", «$value_expr»); +template "svg:text", mode="json_table_elt_render" { + | console.log("«@id»", "«$value_expr»", «$value_expr»); +template "svg:*", mode="json_table_render" { + apply ".", mode="json_table_elt_render" with "value_expr" > «$objname»«@inkscape:label» +template "svg:g", mode="json_table_render" { + | let obj_«@id» = «$objname»«@inkscape:label»; + apply "*[@inkscape:label]", mode="json_table_render" + with "objname" > obj_«@id» +template "widget[@type='JsonTable']", mode="widget_defs" { + optional_labels("forward backward cursor"); + const "data_elt", "$result_svg_ns//*[@id = $hmi_element/@id]/*[@inkscape:label = 'data']"; + | spread_json_data: function(jdata) { + apply "$data_elt/*", mode="json_table_render" with "objname","'jdata'"; --- a/tests/svghmi/py_ext_0@py_ext/pyfile.xml Fri Jul 17 12:19:53 2020 +0200
+++ b/tests/svghmi/py_ext_0@py_ext/pyfile.xml Fri Jul 17 12:21:45 2020 +0200
@@ -2,10 +2,12 @@
<PyFile xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<variable name="SomePLCglobal" type="HMI_STRING" onchange="MyOnChangeFunc"/>
+ <variable name="AlarmCount" type="HMI_INT"/> from twisted.web.resource import Resource
class AlarmJsonResource(Resource):
def render_GET(self, request):
@@ -15,7 +17,13 @@
newdata = request.content.getvalue()
+ {"name":"three", "sides":3}, + {"name":"four", "sides":4}, + {"name":"five", "sides":5}, + {"name":"six", "sides":6}, + return json.dumps(selected_alarms) def MyOnChangeFunc(changed_var_name):
--- a/tests/svghmi/svghmi_0@svghmi/svghmi.svg Fri Jul 17 12:19:53 2020 +0200
+++ b/tests/svghmi/svghmi_0@svghmi/svghmi.svg Fri Jul 17 12:21:45 2020 +0200
@@ -138,14 +138,14 @@
inkscape:document-units="px"
- inkscape:current-layer="hmi0"
+ inkscape:current-layer="g1384" - inkscape:zoom="0.35355339"
- inkscape:cx="460.66016"
- inkscape:cy="-571.17456"
- inkscape:window-width="1800"
- inkscape:window-height="1861"
+ inkscape:cx="841.23474" + inkscape:cy="298.33077" + inkscape:window-width="2807" + inkscape:window-height="1582" inkscape:window-maximized="0"
@@ -235,7 +235,8 @@
- inkscape:label="HMI:Input@/TARGETPRESSURE">
+ inkscape:label="HMI:Input@/TARGETPRESSURE" + transform="matrix(0.63690435,0,0,0.63690435,12.496106,18.355376)"> @@ -348,13 +349,13 @@
inkscape:label="HMI:Display@/PUMP0/PRESSURE"
- 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:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ style="font-style:normal;font-weight:normal;font-size:101.9046936px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.63690436px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" xml:space="preserve"><tspan
- style="fill:#ffffff;fill-opacity:1;stroke-width:1px"
+ style="fill:#ffffff;fill-opacity:1;stroke-width:0.63690436px" sodipodi:role="line">8888</tspan></text>
@@ -432,26 +433,28 @@
- style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#ff0000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ style="font-style:normal;font-weight:normal;font-size:25.4761734px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#ff0000;fill-opacity:1;stroke:none;stroke-width:0.63690436px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" inkscape:label="setpoint_label"><tspan
- y="77.142853">SetPoint</tspan></text>
+ style="stroke-width:0.63690436px">SetPoint</tspan></text>
- style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#008000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ style="font-style:normal;font-weight:normal;font-size:25.4761734px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#008000;fill-opacity:1;stroke:none;stroke-width:0.63690436px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" inkscape:label="actual_label"><tspan
- sodipodi:role="line">Actual</tspan></text>
+ style="stroke-width:0.63690436px">Actual</tspan></text> style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#ff6600;fill-opacity:1;stroke:none;stroke-width:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
@@ -2317,7 +2320,7 @@
inkscape:label="HMI:DropDown:1:2:3:4:5:6:7:8:9:10@/SELECTION"
- transform="translate(0,-640)">
+ transform="matrix(0.5,0,0,0.5,423.93816,-131.83418)"> 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:#53676c;fill-opacity:1;fill-rule:nonzero;stroke:none;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"
@@ -2452,14 +2455,14 @@
- style="stroke-width:1px">8888</tspan></text>
+ style="stroke-width:1px">8</tspan></text> 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"
- sodipodi:cx="596.74072"
+ sodipodi:cx="276.74072" @@ -2468,7 +2471,7 @@
inkscape:flatsided="true"
- d="m 622.6459,-210.03172 -51.81035,0 25.90517,-44.86908 z"
+ d="m 302.6459,-210.03172 -51.81035,0 25.90517,-44.86908 z" inkscape:transform-center-y="7.4781812"
@@ -2483,7 +2486,7 @@
inkscape:transform-center-y="-7.4781804"
- d="m 622.6459,111.4008 -51.81035,0 25.90517,-44.869079 z"
+ d="m 302.6459,111.4008 -51.81035,0 25.90517,-44.869079 z" inkscape:flatsided="true"
@@ -2492,7 +2495,7 @@
- sodipodi:cx="596.74072"
+ sodipodi:cx="276.74072" 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"
@@ -2500,7 +2503,7 @@
inkscape:transform-center-y="-10.828983"
- d="m 626.14807,189.68763 -58.37872,0.43598 -0.43597,-58.37872 58.37871,-0.43597 z"
+ d="m 306.14807,189.68763 -58.37872,0.43598 -0.43597,-58.37872 58.37871,-0.43597 z" inkscape:flatsided="true"
@@ -2509,7 +2512,7 @@
- sodipodi:cx="596.74072"
+ sodipodi:cx="276.74072" 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"
@@ -2532,9 +2535,9 @@
@@ -2850,13 +2853,332 @@
sodipodi:role="line">mhe</tspan></text>
- style="fill:#4d389f;fill-opacity:1;stroke:#ff00ff"
- inkscape:label="HMI:JsonTable:/alarms:mhoooo:666" />
+ inkscape:label="HMI:JsonTable:/alarms@/ALARMCOUNT"> + inkscape:label="cursor" + 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" + 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 1226.2165,18.9847 34.1278,34.74552 h -68.2556 z" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccc" /> + inkscape:label="forward" + sodipodi:nodetypes="cccc" + inkscape:connector-curvature="0" + d="m 1226.2165,283.7301 34.1278,-34.7453 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" /> + transform="translate(52.325902,207.55635)"> + inkscape:transform-center-x="0.14620371" + inkscape:transform-center-y="2.9995242" + transform="translate(-198.17662,280.01428)" + inkscape:label=".sides" /> + style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff0000;fill-opacity:1;stroke:none" + inkscape:label=".name"><tspan + y="56.106419">value</tspan></text> + transform="translate(0,-64)" + transform="translate(0,-128)" /> + transform="translate(0,-192)" + inkscape:label="HMI:List:polygons"> + inkscape:transform-center-y="2.9995242" + inkscape:transform-center-x="0.14620371" + d="m 861.96316,-226.81598 -27.92731,5.51725 -27.92732,5.51724 9.18558,-26.94439 9.18559,-26.94439 18.74173,21.42715 z" + inkscape:randomized="0" + inkscape:flatsided="false" + sodipodi:arg2="1.3757507" + sodipodi:arg1="0.32855317" + sodipodi:cy="-237.42258" + sodipodi:cx="830.85046" + style="fill:#8fbc8f;fill-opacity:1;stroke:#ff0000" + inkscape:label="three" /> + style="fill:#ff8c00;fill-opacity:1;stroke:#ff0000" + sodipodi:cx="890.85046" + sodipodi:cy="-237.42258" + sodipodi:arg1="0.32855317" + sodipodi:arg2="1.1139513" + inkscape:flatsided="false" + inkscape:randomized="0" + d="m 921.96316,-226.81598 -23.8627,4.1434 -17.8566,16.3627 -4.1434,-23.8627 -16.36269,-17.8566 23.86269,-4.1434 17.85661,-16.3627 4.14339,23.8627 z" + inkscape:transform-center-x="0.14620371" + inkscape:transform-center-y="2.9995242" + inkscape:label="four" /> + inkscape:transform-center-y="2.9995242" + inkscape:transform-center-x="0.14620371" + d="m 981.96316,-226.81598 -21.64455,2.82766 -9.94127,19.4333 -9.37779,-19.7114 -21.55419,-3.44949 15.84875,-15.00997 -3.37994,-21.5652 19.17286,10.43473 19.46526,-9.87854 -3.99927,21.45898 z" + inkscape:randomized="0" + inkscape:flatsided="false" + sodipodi:arg2="0.9568717" + sodipodi:arg1="0.32855317" + sodipodi:cy="-237.42258" + sodipodi:cx="950.85046" + style="fill:#bc8f8f;fill-opacity:1;stroke:#ff0000" + inkscape:label="five" /> + style="fill:#f0f8ff;fill-opacity:1;stroke:#ff0000" + sodipodi:cx="1010.8505" + sodipodi:cy="-237.42258" + sodipodi:arg1="0.32855317" + sodipodi:arg2="0.85215195" + inkscape:flatsided="false" + inkscape:randomized="0" + d="m 1041.9632,-226.81598 -20.2921,1.76437 -4.4498,19.87672 -11.6741,-16.69134 -19.43861,6.08474 8.61809,-18.45571 -14.98885,-13.79198 20.29217,-1.76436 4.4498,-19.87673 11.674,16.69134 19.4387,-6.08473 -8.6181,18.4557 z" + inkscape:transform-center-x="0.14620371" + inkscape:transform-center-y="2.9995242" + inkscape:label="six" /> + inkscape:transform-center-y="2.9995242" + inkscape:transform-center-x="0.14620371" + d="m 1101.9632,-226.81598 -19.398,0.92116 -0.6089,19.41024 -12.8146,-14.59158 -15.5551,11.62603 3.4184,-19.11656 -18.7881,-4.91281 17.0772,-9.24638 -7.8732,-17.75221 17.8766,7.58652 8.9704,-17.22384 5.2145,18.70661 19.0591,-3.72556 -11.3742,15.74025 z" + inkscape:randomized="0" + inkscape:flatsided="false" + sodipodi:arg2="0.77735212" + sodipodi:arg1="0.32855317" + sodipodi:cy="-237.42258" + sodipodi:cx="1070.8505" + style="fill:#ba55d3;fill-opacity:1;stroke:#ff0000" + inkscape:label="seven" /> + style="fill:#ffff00;fill-opacity:1;stroke:#ff0000" + sodipodi:cx="1130.8505" + sodipodi:cy="-237.42258" + sodipodi:arg1="0.32855317" + sodipodi:arg2="0.72125225" + inkscape:flatsided="false" + inkscape:randomized="0" + d="m 1161.9632,-226.81598 -18.77,0.24617 2.1573,18.64723 -13.4465,-13.09832 -11.6601,14.71102 -0.2462,-18.76999 -18.6472,2.15729 13.0983,-13.44645 -14.711,-11.66015 18.77,-0.24617 -2.1573,-18.64723 13.4464,13.09832 11.6602,-14.71102 0.2461,18.77 18.6473,-2.1573 -13.0984,13.44646 z" + inkscape:transform-center-x="0.14620371" + inkscape:transform-center-y="2.9995242" + inkscape:label="eight" /> + transform="matrix(3.3549332,0,0,3.14525,-181.87457,3116.0198)" + style="fill-rule:evenodd;stroke-width:0.47631353" + inkscape:label="HMI:ModalOKDialog"> + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.6;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.16776976;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 54.211099,1.2654702 H 435.73881 V 230.18209 H 54.211099 Z" + inkscape:connector-curvature="0" + inkscape:label="Background" + sodipodi:nodetypes="ccccc" /> + 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:#fffff5;fill-opacity:1;fill-rule:nonzero;stroke:#202326;stroke-width:0;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="Message" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:19.0763855px;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:#000000;fill-opacity:1;stroke:none;stroke-width:0.47690967px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + style="text-align:center;text-anchor:middle;stroke-width:0.47690967px">message</tspan></text> + transform="translate(-158.98593,95.381925)" + inkscape:connector-curvature="0" + d="m 363.41531,54.792986 h 81.09115 c 3.34,0 5.01006,3.34003 5.01006,5.010045 v 30.060225 c 0,3.340029 -1.67006,5.010032 -5.01006,5.010032 h -81.09115 c -1.67006,0 -5.01007,-1.670003 -5.01007,-5.010032 V 59.803031 c 0,-1.670015 3.34001,-5.010045 5.01007,-5.010045 z" + style="opacity:1;vector-effect:none;fill:#4f4c4d;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.16824313;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + sodipodi:nodetypes="sssssssss" /> + transform="scale(1.0007154,0.99928511)" + style="font-weight:normal;font-size:10.63882256px;font-family:Arial;fill:#ffffff;fill-rule:evenodd;stroke-width:0.36866826" + style="text-align:center;text-anchor:middle" + id="tspan5195">OK</tspan> + transform="scale(0.96824589,1.0327955)" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.31375408px;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:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.30784383px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + style="stroke-width:0.30784383px" + sodipodi:role="line">information</tspan></text> + transform="matrix(0.31845218,0,0,0.31845218,701.53368,169.53582)" + inkscape:label="HMI:Input@/ALARMCOUNT" + 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:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + inkscape:label="value"><tspan + style="stroke-width:1px">8888</tspan></text> + transform="scale(1,-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:#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" + 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:randomized="0" + d="m 622.6459,-170.03172 -51.81035,0 25.90517,-44.86908 z" + inkscape:transform-center-y="7.4781812" + 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: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" /> + inkscape:transform-center-y="-7.4781804" + d="m 622.6459,151.4008 -51.81035,0 25.90517,-44.86908 z" + inkscape:randomized="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" + 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" + sodipodi:type="star" />