bartbutenaers / node-red-contrib-ui-svg

A Node-RED widget node to show interactive SVG (vector graphics) in the dashboard
Apache License 2.0
94 stars 27 forks source link

"JS" tab sheet and Javascript events via msg not available #76

Closed krikkoo closed 3 years ago

krikkoo commented 4 years ago

Hi, first of all thank you for your great job. I would ask you if there is some issue in my node red installation, it is installed on Rasberry pi 3. As per readme file it should be available a JS tab and also the possibility to inject javascript code trough msg.payload, but in my SVG config screen it not present JS tab and if I try to send JS in payload I received the following message "The msg.payload contains an object that has an unsupported command property 'add_js_event'". I have tried on chrome and safari browser with the same result.

Can you kindly help me please to understand what is wrong in my setup.

Thanks in advance. Best Regards

bartbutenaers commented 4 years ago

Hi @krikkoo, As you can see on the Node-RED forum, I have announced the JS functionality 6 days ago as 2.1.0 beta version. I hope that both requestors of the 2 large new features will do some tests before I publish it on NPM. If nobody has responded next week, I will publish it anyway ... Bart

krikkoo commented 4 years ago

Hi @bartbutenaers, Thank you for your clarification. I have installed your beta to have same test. Please note that my knowledge on JS is very low, I have copied your example about circle and I would you report the following, maybe will be useful for you: On Safari double click injection it seems not work On chrome it work the injection but the browser enter in a loop and continues to show the alert after the first double click even if I click OK in the pop-up.

Thank you for your great job Regards Record screen.mov.zip

bartbutenaers commented 4 years ago

Hey @krikkoo, Thanks for testing!

On Safari double click injection it seems not work

Are there any errors in the browser console logs?

On chrome it work the injection but the browser enter in a loop

I cannog explain that. I do all my developments in Chrome on Winows 10. On which OS are you running?

krikkoo commented 4 years ago

Hi, In the console no error is raising, so I suppose there is no issue in the development, probably compatibility problems. My OS is Catalina 10.15.7, Safari version is 14.0 and Chrome version is 86.0.4240.183 Maybe you can do some test in a virtual box machine. I can tell you another thing that not work in Safari but work in Chrome; In the Animate tab the "animation type" dropdown not appearing even if attribute name is "transform", but this deviate from this topic.

Any way thanks for your support and job.

bartbutenaers commented 3 years ago

Maybe you can do some test in a virtual box machine.

Ok thanks. Then this new version will have to wait some time, because I have not enough free time at the moment to setup such an environment where I can start debugging. Damn ...

krikkoo commented 3 years ago

Thanks to you for your devotion. I would you ask you another thinks that I did not found in any example, how it is possible to trigger an automation inside the JS tab with script. I tried a lot but my JS is limited. Thank you again.

bartbutenaers commented 3 years ago

@krikkoo, I have installed MacOS via VirtualBox on my Windows 10 portable. At the end I have nothing fixed in my code, because I 'think' that it works correctly... Instead I assume it was caused due to some issues in my example flow.

Updated example flow

Here is a better example flow (which I will update on the readme page):

image

[{"id":"89244415.be9278","type":"ui_svg_graphics","z":"a03bd3cf.177578","group":"5ae1b679.de89c8","order":4,"width":"0","height":"0","svgString":"<svg x=\"0\" y=\"0\" height=\"350\" viewBox=\"-0.04032258064515237 0 250.0806451612903 350\" width=\"250\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:svg=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" preserveAspectRatio=\"xMidYMid meet\">\n<circle id=\"my_circle\" cx=\"30\" cy=\"30\" r=\"25\" style=\"stroke: none; fill: #0000ff;\">\n</circle>\n</svg>","clickableShapes":[],"javascriptHandlers":[{"selector":"#my_circle","action":"click","sourceCode":"var letters = '0123456789ABCDEF';\n  var color = '#';\n  for (var i = 0; i < 6; i++) {\n    color += letters[Math.floor(Math.random() * 16)];\n  }\n\n$(\"#my_circle\")[0].style.fill = color;\n \n$scope.send({payload: color, topic: 'circle_color'})"}],"smilAnimations":[{"id":"","targetId":"","classValue":"","attributeName":"transform","transformType":"rotate","fromValue":"","toValue":"","trigger":"msg","duration":"1","durationUnit":"s","repeatCount":"0","end":"restore","delay":"1","delayUnit":"s","custom":""}],"bindings":[],"showCoordinates":false,"autoFormatAfterEdit":true,"showBrowserErrors":true,"showBrowserEvents":true,"outputField":"payload","editorUrl":"http://drawsvg.org/drawsvg.html","directory":"","panning":"disabled","zooming":"disabled","panOnlyWhenZoomed":false,"doubleClickZoomEnabled":false,"mouseWheelZoomEnabled":false,"name":"SVG with Javascript","x":540,"y":180,"wires":[["e06da0e0.2c837"]]},{"id":"d9df6292.785bc","type":"inject","z":"a03bd3cf.177578","name":"Show alert at click","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"{\"command\":\"add_js_event\",\"event\":\"click\",\"selector\":\"#my_circle\",\"script\":\"alert('Click event handled on the client ...')\"}","payloadType":"json","x":230,"y":140,"wires":[["89244415.be9278"]]},{"id":"5074f893.d378d8","type":"inject","z":"a03bd3cf.177578","name":"Remove clicked event","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"{\"command\":\"remove_js_event\",\"event\":\"click\",\"selector\":\"#my_circle\"}","payloadType":"json","x":240,"y":180,"wires":[["89244415.be9278"]]},{"id":"e06da0e0.2c837","type":"debug","z":"a03bd3cf.177578","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":750,"y":180,"wires":[]},{"id":"8572fad7.dd39b8","type":"inject","z":"a03bd3cf.177578","name":"change color at click","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"{\"command\":\"add_js_event\",\"event\":\"click\",\"selector\":\"#my_circle\",\"script\":\"var letters = '0123456789ABCDEF';  var color = '#';  for (var i = 0; i < 6; i++) {    color += letters[Math.floor(Math.random() * 16)];  } $('#my_circle')[0].style.fill = color; $scope.send({payload: color, topic: 'circle_color'})\"}","payloadType":"json","x":230,"y":280,"wires":[["89244415.be9278"]]},{"id":"f678a359.157b4","type":"comment","z":"a03bd3cf.177578","name":"Multiline program ...","info":"","x":220,"y":240,"wires":[]},{"id":"5ae1b679.de89c8","type":"ui_group","name":"Press Demo","tab":"3667e211.c08f0e","order":1,"disp":true,"width":"5","collapse":false},{"id":"3667e211.c08f0e","type":"ui_tab","name":"Home","icon":"dashboard","order":1,"disabled":false,"hidden":false}]

This works for me on MacOs in Safari:

macos_safari_click

And on MacOs in Chrome I also get a 'single' alert popup:

macos_chrome

Replace a previous event handler

Note that you need to remove the previous event handler (via the center inject node), before you add a new event handler. Otherwise you will see this error (when you have activated the setting 'show browser errors on server side':

image

Syntax errors in injected Javascript code

Note that errors in the injected Javascript code will also be displayed, when that setting is activated. For example we inject javascript code where a ; is forgotten between the two statements:

"var x=1 var y=2;"

Then this error will be displayed, as soon as you trigger the event in the dashboard (i.e. as soon as the javascript code is executed):

image

Show browser events on the server

And to make troubleshooting a bit easier in the future, I have added a extra checkbox:

image

When that checkbox is checked, a entry will appear in the Debug sidebar for every event that will be triggered:

image

Can you let me know if this works also works on your Mac?

Animation type dropdown

For me the dropdown appears both in Chrome and Safari. Of course it will only appear for attribute name "transform" and after you press the TAB button. For example for Safari:

safari_animate_dropdown

Your new question

how it is possible to trigger an automation inside the JS tab with script. I tried a lot but my JS is limited.

What do you mean with "automation". And please share what you have tried already! And please ask javascript related questions next time on the Node-RED forum, because I cannot solve all kind of javascript related questions here on my own...

krikkoo commented 3 years ago

Hi Bart, Thank you for your complete report, you are the best one. I have fixed the example like yours and now it work like a charm. I don't know why the animation dropdown did not appear, after the latest update it works.

Coming back to my query, I have this animation

Schermata 2020-11-10 alle 00 14 55

and I would like to trigger it from JS tab

Schermata 2020-11-10 alle 19 15 29

I have tried lot of command without success. This error appear.

Schermata 2020-11-10 alle 19 28 41

I know it could be possible to create a message payload to do the same thing, but from JS should be easier and faster.

Thank you again for your support and sorry if I bothered you. You can close the issue. Regards

bartbutenaers commented 3 years ago

I have tried lot of command without success.

That is indeed weird... Should really expect that your flow should work. Can you please export this part of your flow and share it here!

I have created quickly a test flow:

[{"id":"b209d867.8fb108","type":"ui_svg_graphics","z":"6e219eb.05dce6","group":"5ae1b679.de89c8","order":4,"width":"0","height":"0","svgString":"<svg x=\"0\" y=\"0\" height=\"350\" viewBox=\"-0.04032258064515237 0 250.0806451612903 350\" width=\"250\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:svg=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" preserveAspectRatio=\"xMidYMid meet\">\n<circle id=\"my_circle\" cx=\"30\" cy=\"30\" r=\"25\" style=\"stroke: none; fill: #0000ff;\">\n</circle>\n</svg>","clickableShapes":[],"javascriptHandlers":[{"selector":"#my_circle","action":"click","sourceCode":"$(\"#my_animation\")[0].beginElement()"}],"smilAnimations":[{"id":"my_animation","targetId":"my_circle","classValue":"","attributeName":"fill","transformType":"rotate","fromValue":"blue","toValue":"red","trigger":"msg","duration":"3","durationUnit":"s","repeatCount":"0","end":"restore","delay":"1","delayUnit":"s","custom":""}],"bindings":[],"showCoordinates":false,"autoFormatAfterEdit":true,"showBrowserErrors":true,"showBrowserEvents":true,"outputField":"payload","editorUrl":"http://drawsvg.org/drawsvg.html","directory":"","panning":"disabled","zooming":"disabled","panOnlyWhenZoomed":false,"doubleClickZoomEnabled":false,"mouseWheelZoomEnabled":false,"name":"SVG with Javascript","x":680,"y":320,"wires":[["e3544234.437"]]},{"id":"5ae1b679.de89c8","type":"ui_group","name":"Press Demo","tab":"3667e211.c08f0e","order":1,"disp":true,"width":"5","collapse":false},{"id":"3667e211.c08f0e","type":"ui_tab","name":"Home","icon":"dashboard","order":1,"disabled":false,"hidden":false}]
  1. The SVG contains a simple circly with id my_circle:

    <svg x="0" y="0" height="350" viewBox="-0.04032258064515237 0 250.0806451612903 350" width="250" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" preserveAspectRatio="xMidYMid meet">
      <circle id="my_circle" cx="30" cy="30" r="25" style="stroke: none; fill: #0000ff;">
      </circle>
    </svg>
  2. I have an animation with id my_animation, that changes the my_circle's color from blue to red:

    image

  3. my_animation should be started as soon as the circle is clicked:

    image

  4. And it indeed works like that:

    svg_js_animation

No idea why your example doesn't work, when looking at the screenshots....

krikkoo commented 3 years ago

I have added your flow and it works as expected, great..

Can you please export this part of your flow and share it here!

Here below my test, it is a work in progress and some things could be improved.

[{"id":"9d2ddf5e.b72f08","type":"tab","label":"Flow 2","disabled":false,"info":""},{"id":"cbaacb83.0da518","type":"ui_svg_graphics","z":"9d2ddf5e.b72f08","group":"4ffb8df1.2bd194","order":1,"width":"0","height":"0","svgString":"<svg x=\"0\" y=\"0\" height=\"204\" width=\"264\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:svg=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" preserveAspectRatio=\"xMidYMid meet\">\n\n  <g id=\"background\">\n    <rect id=\"background_rect\" x=\"2\" y=\"2\" rx=\"10\" ry=\"10\" height=\"170\" width=\"260\" fill=\"var(--nr-dashboard-widgetTextColor)\" style=\"stroke:black;stroke-width:1px;\"/>\n    <image id=\"away_set_img\" x=\"70\" y=\"139\" width=\"36\" height=\"24\" style=\"cursor:pointer;\" preserveAspectRatio=\"xMidYMid meet\" xlink:href=\"data:image/png;base64,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\"/>\n    <image id=\"frozen_set_img\" x=\"20\" y=\"139\" width=\"36\" height=\"24\" style=\"cursor:pointer;\" preserveAspectRatio=\"xMidYMid meet\" xlink:href=\"data:image/png;base64,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\"/>\n    <text id=\"room_text\" x=\"180\" y=\"31\" style=\"fill: black; font-family: Arial; font-size: 25px; text-anchor: middle; font-variant-caps: small-caps;font-weight:lighter;\" lengthAdjust=\"spacing\">Salone</text>\n    <text id=\"battery\" x=\"220\" y=\"163\" font-family=\"FontAwesome\" fill=\"black\" font-size=\"20px\" display=\"inline\"></text>\n    <image id=\"wifi4_img\" x=\"160\" y=\"144\" width=\"40\" height=\"18\" display=\"none\" preserveAspectRatio=\"xMidYMid meet\" xlink:href=\"data:image/png;base64,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\"/>\n    <image id=\"wifi3_img\" x=\"160\" y=\"144\" width=\"40\" height=\"18\" display=\"none\" preserveAspectRatio=\"xMidYMid meet\" xlink:href=\"data:image/png;base64,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\"/>\n    <image id=\"wifi2_img\" x=\"160\" y=\"144\" width=\"40\" height=\"18\" display=\"none\" preserveAspectRatio=\"xMidYMid meet\" xlink:href=\"data:image/png;base64,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\"/>\n    <image id=\"wifi1_img\" x=\"160\" y=\"144\" width=\"40\" height=\"18\" display=\"none\" preserveAspectRatio=\"xMidYMid meet\" xlink:href=\"data:image/png;base64,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\"/>\n    <image id=\"wifierr_img\" x=\"160\" y=\"144\" width=\"40\" height=\"18\" display=\"inline\" preserveAspectRatio=\"xMidYMid meet\" xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAQCAYAAAAFzx/vAAAAAXNSR0IArs4c6QAAAWNJREFUOBFjZCAR+Pj4SP/+/dvi/////EB8c/fu3UdJMYKRFMWurq75QPWdQIvYYfoYGRlPcXNzu2/YsOEDTAwfzYxPElkOaJkqkL8ZaBkrkN4DsghI6wCx9K9fv9jv3bu3E8gmCJgIqoAqYGJiEgRatgTIncfKyuoDDMpIIPsFVBrkGKIAC1GqgIp27twJ8hEIg4Gbm1vWv3//JEAcoG/3QEQJk0T7EGYU0JeMwOCdAbRsKlDsPxB37Nq1axJMnhBNUqIBGebp6SkDTKWPQWygz2KBQQsKZqIBOT5kAVq0GIStra1XEG0TVCHJFlpYWDwBJqCNQP1rgPgfqRYSnS1gBrOwsIQA43E1kB/55MmTo3fv3r0HkyOGJjqVwgwDZonbwDgEZfI/wGC9DxOnKZ2WlsYaGhpKcujQ1FGDxnBGZ2dnUOaFg71794LzJqniLi4uKObs2bMHbA66OMnZAu4yMhkA9cF4tNDwDZEAAAAASUVORK5CYII=\"/>\n  </g>\n  <g id=\"temp_get_group\">\n    <rect id=\"temp_get_rect\" x=\"20\" y=\"42\" width=\"90\" height=\"85\" rx=\"10\" ry=\"10\" style=\"fill:white;stroke:silver;stroke-width:1px;\"/>\n    <text id=\"temp_get_text\"  x=\"40\" y=\"90\" style=\"fill:black;font-family:Arial;font-size:40px;\">22</text>\n    <text id=\"temp_get_decimal_text\" x=\"82\" y=\"75\" style=\"fill:black;font-family:Arial;font-size:20px;\">0</text>\n    <image id=\"boiler_on_img\" x=\"38\" y=\"87\" width=\"38\" height=\"40\" display=\"inline\" preserveAspectRatio=\"xMidYMid meet\" xlink:href=\"data:image/png;base64,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dHA6Ly9ucy51c2VwbHVzLm9yZy9sZGYveG1wLzEuMC8iCiAgICB4bWxuczpHSU1QPSJodHRwOi8vd3d3LmdpbXAub3JnL3htcC8iCiAgICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgICB4bWxuczpleGlmPSJodHRwOi8vbnMuYWRvYmUuY29tL2V4aWYvMS4wLyIKICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgeG1wTU06RG9jdW1lbnRJRD0iZ2ltcDpkb2NpZDpnaW1wOjRhYzkxOTI2LWZmNjMtNDI3Mi1iYjU2LWUyMjg4MTUwZmE4NyIKICAgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo4YmFlYmM2MS1hMTdjLTRmNGItYmM2Ni05YTRjYTI5ZWQzZTYiCiAgIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo3MDAyY2YzYy1jYmNiLTQ5NGItODdkOS1kMDUwYTEyNzU3NzMiCiAgIEdJTVA6QVBJPSIyLjAiCiAgIEdJTVA6UGxhdGZvcm09Ik1hYyBPUyIKICAgR0lNUDpUaW1lU3RhbXA9IjE2MDM1NzcwMDY4MjU0NTciCiAgIEdJTVA6VmVyc2lvbj0iMi4xMC4xMiIKICAgZGM6Rm9ybWF0PSJpbWFnZS9wbmciCiAgIGV4aWY6UGl4ZWxYRGltZW5zaW9uPSI0OSIKICAgZXhpZjpQaXhlbFlEaW1lbnNpb249IjUxIgogICB4bXA6Q3JlYXRvclRvb2w9IkdJTVAgMi4xMCI+CiAgIDxpcHRjRXh0OkxvY2F0aW9uQ3JlYXRlZD4KICAgIDxyZGY6QmFnLz4KICAgPC9pcHRjRXh0OkxvY2F0aW9uQ3JlYXRlZD4KICAgPGlwdGNFeHQ6TG9jYXRpb25TaG93bj4KICAgIDxyZGY6QmFnLz4KICAgPC9pcHRjRXh0OkxvY2F0aW9uU2hvd24+CiAgIDxpcHRjRXh0OkFydHdvcmtPck9iamVjdD4KICAgIDxyZGY6QmFnLz4KICAgPC9pcHRjRXh0OkFydHdvcmtPck9iamVjdD4KICAgPGlwdGNFeHQ6UmVnaXN0cnlJZD4KICAgIDxyZGY6QmFnLz4KICAgPC9pcHRjRXh0OlJlZ2lzdHJ5SWQ+CiAgIDx4bXBNTTpIaXN0b3J5PgogICAgPHJkZjpTZXE+CiAgICAgPHJkZjpsaQogICAgICBzdEV2dDphY3Rpb249InNhdmVkIgogICAgICBzdEV2dDpjaGFuZ2VkPSIvIgogICAgICBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOmRmYzgwM2E4LTMyMTQtNGZjYy05N2IwLTVmZDg2M2FhMWJlZiIKICAgICAgc3RFdnQ6c29mdHdhcmVBZ2VudD0iR2ltcCAyLjEwIChNYWMgT1MpIgogICAgICBzdEV2dDp3aGVuPSIyMDIwLTEwLTI1VDAwOjAzOjI2KzAyOjAwIi8+CiAgICA8L3JkZjpTZXE+CiAgIDwveG1wTU06SGlzdG9yeT4KICAgPHBsdXM6SW1hZ2VTdXBwbGllcj4KICAgIDxyZGY6U2VxLz4KICAgPC9wbHVzOkltYWdlU3VwcGxpZXI+CiAgIDxwbHVzOkltYWdlQ3JlYXRvcj4KICAgIDxyZGY6U2VxLz4KICAgPC9wbHVzOkltYWdlQ3JlYXRvcj4KICAgPHBsdXM6Q29weXJpZ2h0T3duZXI+CiAgICA8cmRmOlNlcS8+CiAgIDwvcGx1czpDb3B5cmlnaHRPd25lcj4KICAgPHBsdXM6TGljZW5zb3I+CiAgICA8cmRmOlNlcS8+CiAgIDwvcGx1czpMaWNlbnNvcj4KICAgPGV4aWY6VXNlckNvbW1lbnQ+CiAgICA8cmRmOkFsdD4KICAgICA8cmRmOmxpIHhtbDpsYW5nPSJ4LWRlZmF1bHQiPlNjcmVlbnNob3Q8L3JkZjpsaT4KICAgIDwvcmRmOkFsdD4KICAgPC9leGlmOlVzZXJDb21tZW50PgogIDwvcmRmOkRlc2NyaXB0aW9uPgogPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg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\" transform=\"matrix(0.585428 0 0 0.585428 33.7423 44.5555)\"/>\n  </g>\n  <g id=\"temp_set_group\">\n    <rect id=\"temp_set_rect\" x=\"40\" y=\"12\" width=\"50\" height=\"40\" rx=\"5\" ry=\"5\" style=\"fill:black;stroke:black;stroke-width:1px;\"/>\n    <text id=\"temp_set_text\" x=\"45\" y=\"44\" style=\"fill: white; font-family: Arial; font-size:30px;\">16</text>\n    <text id=\"temp_set_decimal_text\" x=\"79\" y=\"34\" style=\"fill:white;font-family:Arial;font-size:15px;\">0</text>\n  </g>\n  <g id=\"temp_down_group\" style=\"cursor:pointer;\">\n    <circle id=\"temp_down_circle\" cx=\"160\" cy=\"83\" r=\"20\" style=\"fill:white;stroke-width:0.5px;stroke-opacity:1;stroke:silver;cursor:pointer;\"/>\n    <text id=\"temp_down_text\" x=\"153\" y=\"94\" style=\"fill:silver;font-family:Arial;font-size:40px;cursor:pointer;\">-</text>\n  </g>\n  <g id=\"temp_up_group\" style=\"cursor:pointer;\">\n    <circle id=\"temp_up_circle\" cx=\"230\" cy=\"83\" r=\"20\" style=\"fill:white;stroke-width:0.5px;stroke-opacity:1;stroke:silver;cursor:pointer;\"/>\n    <text id=\"temp_up_text\" x=\"218\" y=\"97\" style=\"fill:silver;font-family:Arial;font-size:40px;cursor:pointer;\">+</text>\n  </g>\n\n</svg>\n","clickableShapes":[{"targetId":"#temp_down_group","action":"dblclick","payload":"","payloadType":"str","topic":"Netatmo/temp/set/down"},{"targetId":"#temp_up_group","action":"click","payload":"","payloadType":"str","topic":"Netatmo/temp/set/up"},{"targetId":"#away_set_img","action":"click","payload":"","payloadType":"str","topic":"Netatmo/temp/set/away"},{"targetId":"#frozen_set_img","action":"click","payload":"","payloadType":"str","topic":"Netatmo/temp/set/frozen"}],"javascriptHandlers":[{"selector":"#temp_down_group","action":"click","sourceCode":"var setpoint_decimal = $(\"#temp_set_decimal_text\")[0]. textContent;\nvar setpoint = $(\"#temp_set_text\")[0]. textContent;\n\nif (setpoint==\"MAX\") {\n  $(\"#temp_set_decimal_text\")[0]. textContent='5';\n  $(\"#temp_set_text\")[0]. textContent= '29';\n}else if (setpoint==\"0\") {\n    $(\"#temp_set_text\")[0]. textContent= 'OFF';\n    $(\"#temp_set_decimal_text\")[0]. textContent='';\n}else {\n\n  if (setpoint_decimal==\"5\") {\n    $(\"#temp_set_decimal_text\")[0]. textContent='0';\n  }else if (setpoint_decimal==\"0\") {\n    $(\"#temp_set_decimal_text\")[0]. textContent='5';\n    $(\"#temp_set_text\")[0]. textContent= setpoint-1;\n  }\n}\n\nif ($(\"#temp_set_text\")[0]. textContent.length<2) {\n      $(\"#at_boiler_on_onload\")[0]. beginElement();\n      $(\"#temp_set_text_1dig_on\")[0]. beginElement();\n      $(\"#temp_set_decimal_text_1dig_on\")[0]. beginElement();\n    }else {\n\n      $(\"#temp_set_text_on\")[0]. beginElement();\n      $(\"#temp_set_decimal_text_1dig_off\")[0]. beginElement();\n}\n"},{"selector":"#temp_up_group","action":"click","sourceCode":"$(\"#temp_set_text_1dig_on\")[0]. beginElement();\n      $(\"#temp_set_decimal_text_1dig_on\")[0]. beginElement();\n"}],"smilAnimations":[{"id":"at_boiler_on_online","targetId":"background_rect","classValue":"","attributeName":"fill","transformType":"rotate","fromValue":"snow","toValue":"orange","trigger":"msg","duration":"2","durationUnit":"s","repeatCount":"1","end":"freeze","delay":"1","delayUnit":"s","custom":""},{"id":"at_boiler_off_online","targetId":"background_rect","classValue":"","attributeName":"fill","transformType":"rotate","fromValue":"orange","toValue":"snow","trigger":"msg","duration":"2","durationUnit":"s","repeatCount":"1","end":"freeze","delay":"1","delayUnit":"s","custom":""},{"id":"at_boiler_on_onload","targetId":"background_rect","classValue":"","attributeName":"fill","transformType":"rotate","fromValue":"orange","toValue":"orange","trigger":"msg","duration":"1","durationUnit":"s","repeatCount":"0","end":"restore","delay":"1","delayUnit":"s","custom":""},{"id":"at_boiler_off_onload","targetId":"background_rect","classValue":"","attributeName":"fill","transformType":"rotate","fromValue":"snow","toValue":"snow","trigger":"msg","duration":"1","durationUnit":"s","repeatCount":"0","end":"restore","delay":"1","delayUnit":"s","custom":""},{"id":"at_battery_low","targetId":"battery","classValue":"","attributeName":"display","transformType":"rotate","fromValue":"none","toValue":"inline","trigger":"msg","duration":"1","durationUnit":"s","repeatCount":"0","end":"freeze","delay":"1","delayUnit":"s","custom":""},{"id":"at_battery_normal","targetId":"battery","classValue":"","attributeName":"display","transformType":"rotate","fromValue":"inline","toValue":"inline","trigger":"msg","duration":"1","durationUnit":"s","repeatCount":"1","end":"freeze","delay":"1","delayUnit":"s","custom":""},{"id":"temp_set_text_off","targetId":"temp_set_text","classValue":"","attributeName":"transform","transformType":"scale","fromValue":"1 1","toValue":"0.84 1","trigger":"msg","duration":"100","durationUnit":"ms","repeatCount":"1","end":"freeze","delay":"1","delayUnit":"s","custom":""},{"id":"temp_set_text_on","targetId":"temp_set_text","classValue":"","attributeName":"transform","transformType":"scale","fromValue":"1 1","toValue":"1 1","trigger":"msg","duration":"100","durationUnit":"ms","repeatCount":"1","end":"freeze","delay":"1","delayUnit":"s","custom":""},{"id":"temp_set_text_1dig_on","targetId":"temp_set_text","classValue":"","attributeName":"transform","transformType":"translate","fromValue":"0 0","toValue":"8 0","trigger":"msg","duration":"100","durationUnit":"ms","repeatCount":"1","end":"freeze","delay":"1","delayUnit":"s","custom":""},{"id":"temp_set_decimal_text_1dig_on","targetId":"temp_set_decimal_text","classValue":"","attributeName":"transform","transformType":"translate","fromValue":"0 0","toValue":"-8 0","trigger":"msg","duration":"100","durationUnit":"ms","repeatCount":"1","end":"freeze","delay":"1","delayUnit":"s","custom":""},{"id":"temp_set_decimal_text_1dig_off","targetId":"temp_set_decimal_text","classValue":"","attributeName":"transform","transformType":"scale","fromValue":"1 1","toValue":"1 1","trigger":"msg","duration":"100","durationUnit":"ms","repeatCount":"1","end":"freeze","delay":"1","delayUnit":"s","custom":""}],"bindings":[],"showCoordinates":false,"autoFormatAfterEdit":false,"showBrowserErrors":true,"outputField":"","editorUrl":"//drawsvg.org/drawsvg.html","directory":"","panning":"disabled","zooming":"disabled","panOnlyWhenZoomed":false,"doubleClickZoomEnabled":false,"mouseWheelZoomEnabled":false,"name":"Netatmo","x":859,"y":300,"wires":[[]]},{"id":"b4b0be91.e10328","type":"inject","z":"9d2ddf5e.b72f08","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":"","topic":"boiler_state_online","payload":"false","payloadType":"bool","x":191,"y":441,"wires":[["907a344b.c038c8"]]},{"id":"f6707f2e.71bce8","type":"inject","z":"9d2ddf5e.b72f08","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":"","topic":"boiler_state_online","payload":"true","payloadType":"bool","x":191,"y":481,"wires":[["907a344b.c038c8"]]},{"id":"aac87487.960cd","type":"comment","z":"9d2ddf5e.b72f08","name":"Animation_online","info":"","x":160,"y":400,"wires":[]},{"id":"ec33c02f.e21968","type":"comment","z":"9d2ddf5e.b72f08","name":"Animation_onload","info":"","x":206,"y":222,"wires":[]},{"id":"7cb925b5.e38044","type":"inject","z":"9d2ddf5e.b72f08","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":true,"onceDelay":"0.1","topic":"boiler_state_onload","payload":"false","payloadType":"bool","x":197,"y":309,"wires":[["907a344b.c038c8"]]},{"id":"a781c008.0401b","type":"inject","z":"9d2ddf5e.b72f08","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":"","topic":"boiler_state_onload","payload":"true","payloadType":"bool","x":197,"y":349,"wires":[["907a344b.c038c8"]]},{"id":"f48d9fcd.edcb58","type":"inject","z":"9d2ddf5e.b72f08","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":"","topic":"target_temperature","payload":"9.5","payloadType":"str","x":698.0000305175781,"y":593.0000228881836,"wires":[["907a344b.c038c8"]]},{"id":"a2a3e5da.306fb8","type":"comment","z":"9d2ddf5e.b72f08","name":"Animation_all","info":"","x":149,"y":520,"wires":[]},{"id":"918e9277.5a009","type":"inject","z":"9d2ddf5e.b72f08","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":"","topic":"ambient_temperature","payload":"21.6","payloadType":"str","x":174,"y":722,"wires":[["907a344b.c038c8"]]},{"id":"2476a6d.5cd22da","type":"inject","z":"9d2ddf5e.b72f08","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":"","topic":"battery_thermostat","payload":"full","payloadType":"str","x":175,"y":757,"wires":[["907a344b.c038c8"]]},{"id":"85b68dd5.665ab8","type":"inject","z":"9d2ddf5e.b72f08","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":"","topic":"battery_thermostat","payload":"high","payloadType":"str","x":175,"y":796,"wires":[["907a344b.c038c8"]]},{"id":"38acad4f.7db9ba","type":"inject","z":"9d2ddf5e.b72f08","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":"","topic":"battery_thermostat","payload":"medium","payloadType":"str","x":158,"y":836,"wires":[["907a344b.c038c8"]]},{"id":"ccd85218.7e226","type":"inject","z":"9d2ddf5e.b72f08","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":"","topic":"battery_thermostat","payload":"low","payloadType":"str","x":175,"y":875,"wires":[["907a344b.c038c8"]]},{"id":"ad01f8cd.99598","type":"inject","z":"9d2ddf5e.b72f08","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":"","topic":"battery_thermostat","payload":"empty","payloadType":"str","x":163,"y":916,"wires":[["907a344b.c038c8"]]},{"id":"ca947f13.e9d528","type":"inject","z":"9d2ddf5e.b72f08","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":"","topic":"battery_thermostat","payload":"error","payloadType":"str","x":167,"y":960,"wires":[["907a344b.c038c8"]]},{"id":"3116ff10.7f108","type":"inject","z":"9d2ddf5e.b72f08","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":"","topic":"rf_thermostat","payload":"100","payloadType":"num","x":184,"y":1001,"wires":[["907a344b.c038c8"]]},{"id":"d7c835e4.3fcb88","type":"inject","z":"9d2ddf5e.b72f08","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":"","topic":"rf_thermostat","payload":"75","payloadType":"num","x":194,"y":1040,"wires":[["907a344b.c038c8"]]},{"id":"2f0eb803.c3c568","type":"inject","z":"9d2ddf5e.b72f08","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":"","topic":"rf_thermostat","payload":"50","payloadType":"num","x":193,"y":1080,"wires":[["907a344b.c038c8"]]},{"id":"9af4279.1201bd8","type":"inject","z":"9d2ddf5e.b72f08","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":"","topic":"rf_thermostat","payload":"25","payloadType":"num","x":192,"y":1118,"wires":[["907a344b.c038c8"]]},{"id":"5e8a3b73.0dabbc","type":"inject","z":"9d2ddf5e.b72f08","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":"","topic":"rf_thermostat","payload":"0","payloadType":"num","x":192,"y":1155,"wires":[["907a344b.c038c8"]]},{"id":"ec5c88b5.7d38f8","type":"inject","z":"9d2ddf5e.b72f08","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":"","topic":"room_thermostat","payload":"Cucina","payloadType":"str","x":222,"y":1202,"wires":[["907a344b.c038c8"]]},{"id":"d769e76a.5b5f28","type":"function","z":"9d2ddf5e.b72f08","name":"Thermostat Status","func":"var outputMsgs  = [];\n\n\nlet station = [\"room_thermostat\",\n               \"boiler_state_onload\",\n               \"battery_thermostat\",\n               \"rf_thermostat\",\n               \"target_temperature\",\n               \"ambient_temperature\"\n              ];\n              \nlet state = [global.get(\"Saloneroom_thermostat\")|| \"ND\",\n             global.get(\"Saloneboiler_state\")|| false,\n             global.get(\"Salonebattery_thermostat\")|| \"err\",\n             global.get(\"Salonerf_strength\")|| 0,\n             parseFloat(global.get(\"Salonesetpoint_temperature\")|| 0.0).toFixed(1),\n             parseFloat(global.get(\"Salonemeasured_temperature\")|| 0.0).toFixed(1)\n            ];\n\nvar index;\n\nfor (index = 0; index < station.length; ++index) {\n    outputMsgs.push({topic:station[index] ,payload:state[index]}) \n}\n\n\nreturn [outputMsgs];","outputs":1,"noerr":0,"initialize":"","finalize":"","x":213,"y":255.000244140625,"wires":[["907a344b.c038c8"]]},{"id":"44e65b29.000bac","type":"inject","z":"9d2ddf5e.b72f08","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":"","topic":"target_temperature","payload":"21.5","payloadType":"str","x":174,"y":604.000244140625,"wires":[["907a344b.c038c8"]]},{"id":"2feb3bf7.42f484","type":"inject","z":"9d2ddf5e.b72f08","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":"","topic":"target_temperature","payload":"0","payloadType":"str","x":178,"y":680.000244140625,"wires":[["907a344b.c038c8"]]},{"id":"96a9ba92.a988e","type":"inject","z":"9d2ddf5e.b72f08","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":"","topic":"target_temperature","payload":"30.0","payloadType":"str","x":174,"y":564.000244140625,"wires":[["907a344b.c038c8"]]},{"id":"907a344b.c038c8","type":"function","z":"9d2ddf5e.b72f08","name":"","func":"//var x = global.get(\"Netatmo_boiler_state\") || false;\nlet topic = msg.topic;\nvar newmsg = {};\n\nif (topic.includes(\"boiler_state\")){\n    \n    let x = msg.payload;\n    \n    if (topic.includes(\"online\")) {\n        \n        switch (x) {\n            \n            case true :\n                \n                newmsg.payload = [\n                                  {command:\"trigger_animation\",selector:\"#at_boiler_on_online\",action:\"start\"},\n                                  {command:\"set_attribute\",selector:\"#boiler_on_img\",attributeName:\"display\",attributeValue:\"inline\"}\n                                 ];\n                break;\n                \n            case false : \n                \n                newmsg.payload = [\n                                  {command:\"trigger_animation\",selector:\"#at_boiler_off_online\",action:\"start\"},\n                                  {command:\"set_attribute\",selector:\"#boiler_on_img\",attributeName:\"display\",attributeValue:\"none\"}\n                                 ];\n                break;\n        }\n    }\n    if (topic.includes(\"onload\")) {\n        \n        switch (x) {\n            \n            case true :\n                \n                newmsg.payload = [\n                                  //{command:\"set_attribute\",selector:\"#background_rect\",attributeName:\"fill\",attributeValue:\"orange\"},\n                                  {command:\"trigger_animation\",selector:\"#at_boiler_on_onload\",action:\"start\"},\n                                  {command:\"set_attribute\",selector:\"#boiler_on_img\",attributeName:\"display\",attributeValue:\"inline\"}\n                                 ];\n                break;\n                \n            case false : \n                \n                newmsg.payload = [\n                                  //{command:\"set_attribute\",selector:\"#background_rect\",attributeName:\"fill\",attributeValue:\"ghostwhite\"},\n                                  {command:\"trigger_animation\",selector:\"#at_boiler_off_onload\",action:\"start\"},\n                                  {command:\"set_attribute\",selector:\"#boiler_on_img\",attributeName:\"display\",attributeValue:\"none\"}\n                                 ];\n                break;\n        }\n    }\n  \n}else if (topic.includes(\"temperature\")){\n    var str = msg.payload;\n    var temp = \"\";\n    var tempDecimal = \"\";\n    var var1d = false;\n    var strString = false;\n    if (str == \"0.0\" || str == \"0\"){\n        temp = \"OFF\"\n        strString = true;\n        var1d =false;\n    } else if (parseFloat(str).toFixed(1) >= 30.0){\n        temp = \"MAX\"\n        strString = true;\n        var1d =false;\n    } else if (str.indexOf('.') !== -1){ //verifico se è decimale\n        //var temp = str.substring(0, 2);\n        temp = str.substring(0, str.indexOf('.'));\n        tempDecimal = str.substring(str.indexOf('.')+1, 4);\n        strString = false;\n        \n        if (temp.length >1){\n            var1d =false;\n        }else{\n            var1d =true;\n        }\n    } else if (str.indexOf('.') == -1 && str.length >1){ //true\n        //var temp = str.substring(0, 2);\n        temp = str;\n        tempDecimal = \"0\";\n        strString = false;\n        var1d =false;\n    } else if (str.indexOf('.') == -1 && str.length <2){ //true\n        //var temp = str.substring(0, 2);\n        temp = str;\n        tempDecimal = \"0\";\n        strString = false;\n        var1d =true;\n    } \n    \n    if (topic.includes(\"target\")) {\n        \n        newmsg.payload = [\n                          {command:\"update_text\",selector:\"#temp_set_text\",textContent:temp},\n                          {command:\"update_text\",selector:\"#temp_set_decimal_text\",textContent:tempDecimal},\n                          {command: \"trigger_animation\", selector: \"#temp_set_text_off\", action:(strString ==true ? \"start\" : \"stop\")},\n                          {command: \"trigger_animation\", selector: \"#temp_set_text_on\", action:(strString !=true ? \"start\" : \"stop\")},\n                          {command: \"trigger_animation\", selector: \"#temp_set_text_1dig_on\", action:(var1d == true ? \"start\" : \"stop\")},\n                          {command: \"trigger_animation\", selector: \"#temp_set_decimal_text_1dig_on\", action:(var1d == true ? \"start\" : \"stop\")},\n                          {command: \"trigger_animation\", selector: \"#temp_set_decimal_text_1dig_off\", action:(var1d != true ? \"start\" : \"stop\")}\n                         ];\n    }\n    if (topic.includes(\"ambient\")){\n    \n        newmsg.payload = [\n                          {command:\"update_text\",selector:\"#temp_get_text\",textContent:temp},\n                          {command:\"update_text\",selector:\"#temp_get_decimal_text\",textContent:tempDecimal}\n                         ];\n    }\n}else if (topic.includes(\"thermostat\")){\n    let state = msg.payload;\n    var w1show, w2show, w3show, w4show = false;\n    var animation = false;\n    var values = [0,25,50,75,100];\n    \n    if (topic.includes(\"battery\")){\n        \n        switch (state){\n          case \"full\":\n            text = \"\";\n            animation = false;\n            break;\n          case \"high\":\n            text = \"\";\n            animation = false;\n            break;\n          case \"medium\":\n            text = \"\";\n            animation = false;\n            break;\n          case \"low\":\n            text = \"\";\n            animation = true;\n            break;\n          case \"empty\":\n            text = \"\";\n            animation = true;\n            break;\n          default:\n            text = \"err\";    \n                    \n        }\n        \n        newmsg.payload = [\n                          {command:\"trigger_animation\",selector:\"#at_battery_low\",action:(animation ==true ? \"start\" : \"stop\")},\n                          {command:\"trigger_animation\",selector:\"#at_battery_normal\",action:(animation ==false ? \"start\" : \"stop\")},\n                          //{command:\"set_attribute\",selector:\"#battery\",attributeName:\"display\",attributeValue:\"inline\"},\n                          {command:\"update_text\",selector:\"#battery\",textContent:text},\n                          {command:\"set_attribute\",selector:\"#battery\",attributeName: \"fill\",attributeValue:(animation ==true ? \"red\" : \"black\")}\n                         ];\n                \n    }else if (topic.includes(\"rf\")){\n        \n        if (state >= values[1] && state < values[2]){\n            w1show = true;\n            w2show = false;\n            w3show = false;\n            w4show = false;\n            weshow = false;\n        }else if (state >= values[2] && state < values[3]){\n            w1show = false;\n            w2show = true;\n            w3show = false;\n            w4show = false;\n            weshow = false;\n        }else if (state >= values[3] && state < values[4]){\n            w1show = false;\n            w2show = false;\n            w3show = true;\n            w4show = false;\n            weshow = false;\n        }else if (state >= values[4]){\n            w1show = false;\n            w2show = false;\n            w3show = false;\n            w4show = true;\n            weshow = false;\n        }else{\n            w1show = false;\n            w2show = false;\n            w3show = false;\n            w4show = false;\n            weshow = true;\n        }          \n\n        newmsg.payload = [\n                          {command:\"set_attribute\",selector:\"#wifi1_img\",attributeName:\"display\",attributeValue:(w1show ==true ? \"inline\" : \"none\")},\n                          {command:\"set_attribute\",selector:\"#wifi2_img\",attributeName:\"display\",attributeValue:(w2show ==true ? \"inline\" : \"none\")},\n                          {command:\"set_attribute\",selector:\"#wifi3_img\",attributeName:\"display\",attributeValue:(w3show ==true ? \"inline\" : \"none\")},\n                          {command:\"set_attribute\",selector:\"#wifi4_img\",attributeName:\"display\",attributeValue:(w4show ==true ? \"inline\" : \"none\")},\n                          {command:\"set_attribute\",selector:\"#wifierr_img\",attributeName:\"display\",attributeValue:(weshow ==true ? \"inline\" : \"none\")}\n                         ];\n    }else if (topic.includes(\"room\")){\n        \n        newmsg.payload = [{command:\"update_text\",selector:\"#room_text\",textContent:state}];\n    }\n    \n    \n}\n \n    \n    \n//msg.topic = \"trigger_animation\";\nreturn newmsg;\n\n","outputs":1,"noerr":0,"initialize":"","finalize":"","x":638.0001220703125,"y":277,"wires":[["cbaacb83.0da518"]]},{"id":"4ffb8df1.2bd194","type":"ui_group","name":"svg","tab":"48fa7ffc.1df2a","order":1,"disp":true,"width":"6","collapse":false},{"id":"48fa7ffc.1df2a","type":"ui_tab","name":"tests","icon":"dashboard","order":13,"disabled":false,"hidden":false}]

I made some other test and it work, probably I have done some mistake in the JS flow.

Thank you for your patient Regards

bartbutenaers commented 3 years ago

Morning, I have taken the liberty to update your post: if you add 3 backticks (in the lines above and below your flow), it will be displayed on a single line.

I have not been able to identify your problem, because I have not enough time to figure out how your entire flow works. I have tried to simplify your flow, but then I don't get that error:

[{"id":"cbaacb83.0da518","type":"ui_svg_graphics","z":"9d2ddf5e.b72f08","group":"4ffb8df1.2bd194","order":1,"width":"0","height":"0","svgString":"<svg x=\"0\" y=\"0\" height=\"204\" width=\"264\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:svg=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" preserveAspectRatio=\"xMidYMid meet\">\n  <g id=\"temp_set_group\">\n    <text id=\"temp_set_decimal_text\" x=\"79\" y=\"34\" style=\"fill:white;font-family:Arial;font-size:15px;\">9999</text>\n  </g>\n  <g id=\"temp_down_group\" style=\"cursor:pointer;\">\n    <circle id=\"temp_down_circle\" cx=\"40\" cy=\"40\" r=\"30\" style=\"fill:blue;stroke-width:0.5px;stroke-opacity:1;stroke:silver;cursor:pointer;\"/>\n    <text id=\"temp_down_text\" x=\"100\" y=\"94\" style=\"fill:silver;font-family:Arial;font-size:40px;cursor:pointer;\">temp down text</text>\n  </g>\n</svg>\n","clickableShapes":[],"javascriptHandlers":[{"selector":"#temp_down_group","action":"click","sourceCode":"$(\"#temp_set_decimal_text_1dig_off\")[0].beginElement();"}],"smilAnimations":[{"id":"temp_set_decimal_text_1dig_off","targetId":"temp_set_decimal_text","classValue":"","attributeName":"transform","transformType":"scale","fromValue":"1 1","toValue":"1 1","trigger":"msg","duration":"100","durationUnit":"ms","repeatCount":"1","end":"freeze","delay":"1","delayUnit":"s","custom":""}],"bindings":[],"showCoordinates":false,"autoFormatAfterEdit":false,"showBrowserErrors":true,"showBrowserEvents":true,"outputField":"","editorUrl":"//drawsvg.org/drawsvg.html","directory":"","panning":"disabled","zooming":"disabled","panOnlyWhenZoomed":false,"doubleClickZoomEnabled":false,"mouseWheelZoomEnabled":false,"name":"Netatmo","x":859,"y":300,"wires":[[]]},{"id":"4ffb8df1.2bd194","type":"ui_group","name":"svg","tab":"48fa7ffc.1df2a","order":1,"disp":true,"width":"6","collapse":false},{"id":"48fa7ffc.1df2a","type":"ui_tab","name":"tests","icon":"dashboard","order":13,"disabled":false,"hidden":false}]

There are two things you can do:

  1. Create a very simple flow that contains only the part that fails, and let me know which 'simple' steps I need to perform to reproduce the problem. So - like in my simplified flow above - throw out everything that isn't relevant for this issue, because that is very time consuming for us to figure out for everybody how their flow works ...
  2. Or if you want to extend your technical skills, you can try to debug it yourself. Because once you know it, it will be a massive help to you for troubleshooting other issues in the future...

If you want to try the second option, here is how you can do it:

  1. Search for the folder where this SVG node is installed. You need to search that inside your .node red folder:

    <somewhere on your machine\.node-red\node_modules\node-red-contrib-ui-svg
  2. Add a debugger statement before the line where your Javascript code is evaluated:

    image

  3. Restart Node-RED to detect this updated code.

  4. Open the developer tools for your browser. For example for Chrome like this:

    image

  5. Do you stuff in the SVG, and once your event is triggered the browser's debugger will pause at your debugger statement.

  6. Now you can show variables, and execute pieces of your Javascript event handler one by one (to figure out where stuff goes wrong:

    chrome_debug_js

I think that once you start writing your own JS handler, you need to be able to debug your JS code. Otherwise you will depend heavily on other people that might not always be able to help you. I will add that to the readme page, because of course when you start writing Javascript event handlers you should be able to debug your code...

P.S. in the above animation you will see that I get a reference to your animation element (instead of an undefined like in your screenshots)....

bartbutenaers commented 3 years ago

Hi, I have quickly added a newe feature to avoid that you have to add the debugger statement manually. The procedure is now a bit easier:

  1. Enable JS debugging in the "Settings" tabsheet:

    image

  2. Open the developer tools for your browser. For example for Chrome like this:

    image

  3. Do you stuff in the SVG in the dashboard, and once your event is triggered the browser's debugger will pause here automatically:

    image

  4. Now you can show variables, and execute pieces of your Javascript code (which is inside the userData.sourceCode variable) one by one (to figure out where stuff goes wrong).

krikkoo commented 3 years ago

Hi Bart, Thank you for your help, I really appreciate it. I started to do some test with browser debug. I still not able to understand why this issue appears. I have understood where is the issue but I can't understand why it is not works. Here below is the piece of code that create the issue, if I remove it all the animations work fine.

if (setpoint_decimal=="5") {
  $("#temp_set_decimal_text")[0]. textContent='0';
}else if (setpoint_decimal=="0") {
  $("#temp_set_decimal_text")[0]. textContent='5';
  $("#temp_set_text")[0]. textContent= setpoint-1;
}

I will investigate probably the issue could be related to the variable type. I have tried to convert the text in Int and changed the above if with a switch, but the result is the same. The code works because the text in the SVG is decreased, but this corrupt the animation

If I check the code in the console and some backslash are coming

Schermata 2020-11-12 alle 20 28 41

Thank you your support. Regards

bartbutenaers commented 3 years ago

BTW you should remove the space 3 time before textContent...

Not sure why the double quotes are being escaped via \. When I put your code snippet into my JS event handler, the there is no escaping:

image

As an experiment, you could try to replace the double quotes by single quotes. Then we we know at least whether that is the root cause of your troubles ...

Even when I debug on Chrome on virtualBox MacOS, the double quotes are not escaped. Note that I only run a browser on virtualbox, but Node-RED itself is running on Windows. Perhaps you are running Node-RED on MacOS also, and there somehow the escaping is applied??

krikkoo commented 3 years ago

Hi Bart, Thank you for your help, you opened a world to me with debug, and the idea to enable JS debugging in the "Settings" tabsheet it has been amazing. I have followed your advice, I have replaced the double quotes by single quotes and the backslashes are disappeared, great. I have also removed the spaces before textContent but this it seems the same, the code works well also whit the spaces.

I didn't resolve the issue about the AnimateTransform but I have changed my approach, as my AnimateTransform it was a work around to translate and scale the text, I'm now using the property .style.transform of the text element to translate and scale the text directly in JS tabsheet, and it is more fluid and faster.

In the meantime I'm continuing to develop and I will inform you in case I will resolve my issue about AnimateTransform, in the mean time my knowledge is growing and maybe I will found the issue on that code.

Only for your information my Node-Red instance is hosted on a Raspberry pi 3.

I really thank you for your kindly support. Regards @krikkoo

bartbutenaers commented 3 years ago

Glad that you find it useful! I'm always suprised how people are able to write code without usung a debugger. I always experiment with code snippets (in the console tab) while I am debugging. That way I'm 100% sure that this code snippets will work correctly, before I add those snippets to my node program...

Only for your information my Node-Red instance is hosted on a Raspberry pi 3.

Will need to test that this week, to be able to determine where the double quotes are being applied...

krikkoo commented 3 years ago

Hi Bart, Sorry if I disturb you, I was playing with text in SVG and I found, surfing on web at this link, that there are some Event Attributes that could be useful to add in the JS tab, for example onchange for text could be very useful. I really don't know if it is possible, here below what I have done.

I tried to use in a text element to call the function that translate the text according to it content. It is the same function that I call from JS sheet in mouse events and it works.

<text id="temp_set_text1" onchange="Transform()" x="44" y="44" style="fill: white; font-family: Arial; font-size:30px;">1</text>

I'm trying to use direct in the element but it not works, instead onclick works well.

Can you tell me if I'm doing somethings that is not allowed, I enabled JS debug but no error coming out.

Thank you for your time.. Regards

bartbutenaers commented 3 years ago

Do I understand this correctly:

  1. When you add that function to the text element in the "SVG"-tabsheet, then it works fine.
  2. When you add that function via a Javascript code snippet in the "JS"-tabsheet, then it doesn't work.

Correct? Can you please post be me - for both tabsheets wjat you have entered? And please only the part relevant for this specific question.

krikkoo commented 3 years ago

Hi Burt, Here below there are the three cases that I have done.

[{"id":"64885236.dd5efc","type":"tab","label":"Flow 2","disabled":false,"info":""},{"id":"42c9098.3bc25f8","type":"inject","z":"64885236.dd5efc","name":"Show alert at double click","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"{\"command\":\"add_js_event\",\"event\":\"onchange\",\"selector\":\"#temp_set_text3\",\"script\":\"function Transform3(){var setpoint = $('#temp_set_text')[0].textContent;if (setpoint.length == 1 ){$('#temp_set_text_group')[0].style.transform='translateX(8px)';$('#temp_set_decimal_text_group')[0].style.transform='translateX(-8px)';}else if (setpoint.length == 2){$('#temp_set_text_group')[0].style.transform='scale(1)';$('#temp_set_decimal_text_group')[0].style.transform='scale(1)';}else if (setpoint.length == 3){$('#temp_set_text_group')[0].style.transform='translateX(3px) scale(0.82, 1)';}}\"}","payloadType":"json","x":354,"y":334,"wires":[["83e37230.c051c8"]]},{"id":"c4242bdd.ebe57","type":"ui_svg_graphics","z":"64885236.dd5efc","group":"8f59fa7c.29e13","order":1,"width":"0","height":"0","svgString":"<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0\" y=\"0\" height=\"204\" width=\"264\" preserveAspectRatio=\"xMidYMid meet\" viewBox=\"39.98632049560547 12 210.02735900878906 93\"><rect id=\"svgEditorBackground\" x=\"40\" y=\"12\" width=\"210\" height=\"93\" style=\"fill: none; stroke: none;\"/>\n  \n  <script>//<![CDATA[\n        //document.getElementById(\"temp_set_text1\").addEventListener(\"onchange\", Transform);\n        \n        function Transform1(){\n            console.log('MyTransform')\n          setpoint = $('#temp_set_text1')[0].textContent;\n          if (setpoint.length == 1 ){\n            $('#temp_set_text_group1')[0].style.transform='translateX(8px)';\n            $('#temp_set_decimal_group1')[0].style.transform='translateX(-8px)';\n          }else if (setpoint.length == 2){\n            $('#temp_set_text_group1')[0].style.transform='scale(1)';\n            $('#temp_set_decimal_group1')[0].style.transform='scale(1)';\n          }else if (setpoint.length == 3){\n            $('#temp_set_text_group1')[0].style.transform='translateX(3px) scale(0.82, 1)';\n          }\n        }\n    //]]>\n  </script>\n  \n  <g id=\"temp_set_group1\">\n    <rect id=\"temp_set_rect1\" x=\"40\" y=\"12\" width=\"50\" height=\"40\" rx=\"5\" ry=\"5\" style=\"fill:black;stroke:black;stroke-width:1px;\"/>\n    <g id=\"temp_set_text_group1\">\n        <text id=\"temp_set_text1\" x=\"44\" y=\"44\" style=\"fill: white; font-family: Arial; font-size:30px;\">1</text>\n    </g>\n    <g id=\"temp_set_decimal_group1\">\n    <text id=\"temp_set_decimal_text1\" x=\"78\" y=\"34\" style=\"fill:white;font-family:Arial;font-size:15px;\">5</text>\n    </g>\n  </g>\n  <g id=\"temp_down_group1\" style=\"cursor:pointer;\">\n    <circle id=\"temp_down_circle1\" cx=\"160\" cy=\"83\" r=\"20\" style=\"fill:white;stroke-width:0.5px;stroke-opacity:1;stroke:silver;cursor:pointer;\"/>\n    <rect x=\"151\" y=\"81.25\" width=\"18\" height=\"3.5\" rx=\"1\" ry=\"1\" style=\"fill:silver;stroke:none;stroke-width:1px;cursor:pointer;\" />\n  </g>\n  <g id=\"temp_up_group1\" style=\"cursor:pointer;\">\n    <circle id=\"temp_up_circle1\" cx=\"230\" cy=\"83\" r=\"20\" style=\"fill:white;stroke-width:0.5px;stroke-opacity:1;stroke:silver;cursor:pointer;\"/>\n    <rect x=\"221\" y=\"81.25\" width=\"18\" height=\"3.5\" rx=\"1\" ry=\"1\" style=\"fill:silver;stroke:none;stroke-width:1px;cursor:pointer;\"/>\n    <rect x=\"221\" y=\"81.25\" width=\"18\" height=\"3.5\" rx=\"1\" ry=\"1\" style=\"fill:silver;stroke:none;stroke-width:1px;cursor:pointer;\" transform=\"rotate(90 230 83)\"/>\n  </g>\n\n</svg>","clickableShapes":[],"javascriptHandlers":[{"selector":"#temp_down_group1","action":"mousedown","sourceCode":"var setpoint_decimal;\nvar setpoint;\nvar i;\n\ntimer = setInterval( function () {\n\n  setpoint_decimal = parseInt($('#temp_set_decimal_text1')[0].textContent);\n  setpoint = parseInt($('#temp_set_text1')[0].textContent) ;\n\n  if (setpoint_decimal == 0 && !isNaN(setpoint)) {\n    $('#temp_set_decimal_text1')[0].textContent='5';\n    setpoint -= 1;\n    $('#temp_set_text1')[0].textContent=setpoint;\n  }else if (setpoint_decimal == 5 && !isNaN(setpoint)) {\n    $('#temp_set_decimal_text1')[0].textContent='0';\n  }\n\n  setpoint = $('#temp_set_text1')[0].textContent;\n  setpoint_decimal = parseInt($('#temp_set_decimal_text1')[0].textContent);\n  \n  if (setpoint == \"MAX\"){\n    $('#temp_set_decimal_text1')[0].textContent='5';\n    $('#temp_set_text1')[0].textContent= '29';\n\n  }else if (setpoint == \"0\" && setpoint_decimal == \"0\"){\n    $('#temp_set_text1')[0].textContent= 'OFF';\n    $('#temp_set_decimal_text1')[0].textContent='';\n  }else if (setpoint == \"OFF\"){\n    clearInterval(timer);\n    return;\n  }\n\n  Transform1()\n}, 300)\n"},{"selector":"#temp_down_group1","action":"mouseup","sourceCode":"clearInterval(timer);\n"},{"selector":"#temp_up_group1","action":"mousedown","sourceCode":"var setpoint_decimal;\nvar setpoint;\nvar stringsetpoint =\"\";\nvar i;\n\nconsole.log(setpoint);\n\ntimer = setInterval( function () {\n\n  setpoint_decimal = parseInt($('#temp_set_decimal_text1')[0].textContent);\n  setpoint = parseInt($('#temp_set_text1')[0].textContent) ;\n\n  if (setpoint_decimal == 0 && !isNaN(setpoint)) {\n    $('#temp_set_decimal_text1')[0].textContent='5';\n  }else if (setpoint_decimal == 5 && !isNaN(setpoint)) {\n    $('#temp_set_decimal_text1')[0].textContent='0';\n    setpoint +=1;\n    $('#temp_set_text1')[0].textContent=setpoint;\n  }\n\n  stringsetpoint = $('#temp_set_text1')[0].textContent;\n  setpoint_decimal = parseInt($('#temp_set_decimal_text1')[0].textContent);\n  console.log(stringsetpoint);\n  if (stringsetpoint == \"OFF\"){\n    $('#temp_set_decimal_text1')[0].textContent='5';\n    $('#temp_set_text1')[0].textContent= '0';\n  }else if (stringsetpoint == \"30\"){\n    $('#temp_set_text1')[0].textContent= 'MAX';\n    $('#temp_set_decimal_text1')[0].textContent='';\n  }else if (stringsetpoint == \"MAX\"){\n    clearInterval(timer);\n    return;\n  }\n\n  Transform1()\n}, 300)\n"},{"selector":"#temp_up_group1","action":"mouseup","sourceCode":"clearInterval(timer);"}],"smilAnimations":[],"bindings":[],"showCoordinates":false,"autoFormatAfterEdit":false,"showBrowserErrors":true,"showBrowserEvents":false,"enableJsDebugging":true,"outputField":"","editorUrl":"//drawsvg.org/drawsvg.html","directory":"","panning":"disabled","zooming":"disabled","panOnlyWhenZoomed":false,"doubleClickZoomEnabled":false,"mouseWheelZoomEnabled":false,"name":"Netatmo Test 1","x":620,"y":260,"wires":[[]]},{"id":"deb021fa.d6542","type":"ui_svg_graphics","z":"64885236.dd5efc","group":"585e81d.29298","order":1,"width":"0","height":"0","svgString":"<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0\" y=\"0\" height=\"204\" width=\"264\" preserveAspectRatio=\"xMidYMid meet\" viewBox=\"39.98632049560547 12 210.02735900878906 93\"><rect id=\"svgEditorBackground\" x=\"40\" y=\"12\" width=\"210\" height=\"93\" style=\"fill: none; stroke: none;\"/>\n  \n  <script>//<![CDATA[\n        //document.getElementById(\"temp_set_text2\").addEventListener(\"onchange\", Transform);\n        \n        function Transform2(){\n            console.log('MyTransform')\n          setpoint = $('#temp_set_text2')[0].textContent;\n          if (setpoint.length == 1 ){\n            $('#temp_set_text_group2')[0].style.transform='translateX(8px)';\n            $('#temp_set_decimal_group2')[0].style.transform='translateX(-8px)';\n          }else if (setpoint.length == 2){\n            $('#temp_set_text_group2')[0].style.transform='scale(1)';\n            $('#temp_set_decimal_group2')[0].style.transform='scale(1)';\n          }else if (setpoint.length == 3){\n            $('#temp_set_text_group2')[0].style.transform='translateX(3px) scale(0.82, 1)';\n          }\n        }\n    //]]>\n  </script>\n  \n  <g id=\"temp_set_group2\">\n    <rect id=\"temp_set_rect2\" x=\"40\" y=\"12\" width=\"50\" height=\"40\" rx=\"5\" ry=\"5\" style=\"fill:black;stroke:black;stroke-width:1px;\"/>\n    <g id=\"temp_set_text_group2\">\n        <text id=\"temp_set_text2\" onchange=\"Transform()\" x=\"44\" y=\"44\" style=\"fill: white; font-family: Arial; font-size:30px;\">1</text>\n    </g>\n    <g id=\"temp_set_decimal_group2\">\n    <text id=\"temp_set_decimal_text2\" x=\"78\" y=\"34\" style=\"fill:white;font-family:Arial;font-size:15px;\">5</text>\n    </g>\n  </g>\n  <g id=\"temp_down_group2\" style=\"cursor:pointer;\">\n    <circle id=\"temp_down_circle2\" cx=\"160\" cy=\"83\" r=\"20\" style=\"fill:white;stroke-width:0.5px;stroke-opacity:1;stroke:silver;cursor:pointer;\"/>\n    <rect x=\"151\" y=\"81.25\" width=\"18\" height=\"3.5\" rx=\"1\" ry=\"1\" style=\"fill:silver;stroke:none;stroke-width:1px;cursor:pointer;\" />\n  </g>\n  <g id=\"temp_up_group2\" style=\"cursor:pointer;\">\n    <circle id=\"temp_up_circle2\" cx=\"230\" cy=\"83\" r=\"20\" style=\"fill:white;stroke-width:0.5px;stroke-opacity:1;stroke:silver;cursor:pointer;\"/>\n    <rect x=\"221\" y=\"81.25\" width=\"18\" height=\"3.5\" rx=\"1\" ry=\"1\" style=\"fill:silver;stroke:none;stroke-width:1px;cursor:pointer;\"/>\n    <rect x=\"221\" y=\"81.25\" width=\"18\" height=\"3.5\" rx=\"1\" ry=\"1\" style=\"fill:silver;stroke:none;stroke-width:1px;cursor:pointer;\" transform=\"rotate(90 230 83)\"/>\n  </g>\n\n</svg>","clickableShapes":[],"javascriptHandlers":[{"selector":"#temp_down_group2","action":"mousedown","sourceCode":"var setpoint_decimal;\nvar setpoint;\nvar i;\n\ntimer = setInterval( function () {\n\n  setpoint_decimal = parseInt($('#temp_set_decimal_text2')[0].textContent);\n  setpoint = parseInt($('#temp_set_text2')[0].textContent) ;\n\n  if (setpoint_decimal == 0 && !isNaN(setpoint)) {\n    $('#temp_set_decimal_text2')[0].textContent='5';\n    setpoint -= 1;\n    $('#temp_set_text2')[0].textContent=setpoint;\n  }else if (setpoint_decimal == 5 && !isNaN(setpoint)) {\n    $('#temp_set_decimal_text2')[0].textContent='0';\n  }\n\n  setpoint = $('#temp_set_text2')[0].textContent;\n  setpoint_decimal = parseInt($('#temp_set_decimal_text2')[0].textContent);\n  \n  if (setpoint == \"MAX\"){\n    $('#temp_set_decimal_text2')[0].textContent='5';\n    $('#temp_set_text2')[0].textContent= '29';\n\n  }else if (setpoint == \"0\" && setpoint_decimal == \"0\"){\n    $('#temp_set_text2')[0].textContent= 'OFF';\n    $('#temp_set_decimal_text2')[0].textContent='';\n  }else if (setpoint == \"OFF\"){\n    clearInterval(timer);\n    return;\n  }\n\n  //Transform2()\n}, 300)\n"},{"selector":"#temp_down_group2","action":"mouseup","sourceCode":"clearInterval(timer);\n"},{"selector":"#temp_up_group2","action":"mousedown","sourceCode":"var setpoint_decimal;\nvar setpoint;\nvar stringsetpoint =\"\";\nvar i;\n\nconsole.log(setpoint);\n\ntimer = setInterval( function () {\n\n  setpoint_decimal = parseInt($('#temp_set_decimal_text2')[0].textContent);\n  setpoint = parseInt($('#temp_set_text2')[0].textContent) ;\n\n  if (setpoint_decimal == 0 && !isNaN(setpoint)) {\n    $('#temp_set_decimal_text2')[0].textContent='5';\n  }else if (setpoint_decimal == 5 && !isNaN(setpoint)) {\n    $('#temp_set_decimal_text2')[0].textContent='0';\n    setpoint +=1;\n    $('#temp_set_text2')[0].textContent=setpoint;\n  }\n\n  stringsetpoint = $('#temp_set_text2')[0].textContent;\n  setpoint_decimal = parseInt($('#temp_set_decimal_text2')[0].textContent);\n  console.log(stringsetpoint);\n  if (stringsetpoint == \"OFF\"){\n    $('#temp_set_decimal_text2')[0].textContent='5';\n    $('#temp_set_text1')[0].textContent= '0';\n  }else if (stringsetpoint == \"30\"){\n    $('#temp_set_text2')[0].textContent= 'MAX';\n    $('#temp_set_decimal_text2')[0].textContent='';\n  }else if (stringsetpoint == \"MAX\"){\n    clearInterval(timer);\n    return;\n  }\n\n  //Transform2()\n}, 300)\n"},{"selector":"#temp_up_group2","action":"mouseup","sourceCode":"clearInterval(timer);"}],"smilAnimations":[],"bindings":[],"showCoordinates":false,"autoFormatAfterEdit":false,"showBrowserErrors":true,"showBrowserEvents":false,"enableJsDebugging":true,"outputField":"","editorUrl":"//drawsvg.org/drawsvg.html","directory":"","panning":"disabled","zooming":"disabled","panOnlyWhenZoomed":false,"doubleClickZoomEnabled":false,"mouseWheelZoomEnabled":false,"name":"Netatmo Test 2","x":619,"y":296,"wires":[[]]},{"id":"83e37230.c051c8","type":"ui_svg_graphics","z":"64885236.dd5efc","group":"d60d6dc3.d626c8","order":1,"width":"0","height":"0","svgString":"<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0\" y=\"0\" height=\"204\" width=\"264\" preserveAspectRatio=\"xMidYMid meet\" viewBox=\"39.98632049560547 12 210.02735900878906 93\"><rect id=\"svgEditorBackground\" x=\"40\" y=\"12\" width=\"210\" height=\"93\" style=\"fill: none; stroke: none;\"/>\n  \n  <script>//<![CDATA[\n        //document.getElementById(\"temp_set_text1\").addEventListener(\"onchange\", Transform);\n        \n        \n    //]]>\n  </script>\n  \n  <g id=\"temp_set_group3\">\n    <rect id=\"temp_set_rect3\" x=\"40\" y=\"12\" width=\"50\" height=\"40\" rx=\"5\" ry=\"5\" style=\"fill:black;stroke:black;stroke-width:1px;\"/>\n    <g id=\"temp_set_text_group3\">\n        <text id=\"temp_set_text3\" x=\"44\" y=\"44\" style=\"fill: white; font-family: Arial; font-size:30px;\">1</text>\n    </g>\n    <g id=\"temp_set_decimal_group3\">\n    <text id=\"temp_set_decimal_text3\" x=\"78\" y=\"34\" style=\"fill:white;font-family:Arial;font-size:15px;\">5</text>\n    </g>\n  </g>\n  <g id=\"temp_down_group3\" style=\"cursor:pointer;\">\n    <circle id=\"temp_down_circle3\" cx=\"160\" cy=\"83\" r=\"20\" style=\"fill:white;stroke-width:0.5px;stroke-opacity:1;stroke:silver;cursor:pointer;\"/>\n    <rect x=\"151\" y=\"81.25\" width=\"18\" height=\"3.5\" rx=\"1\" ry=\"1\" style=\"fill:silver;stroke:none;stroke-width:1px;cursor:pointer;\" />\n  </g>\n  <g id=\"temp_up_group3\" style=\"cursor:pointer;\">\n    <circle id=\"temp_up_circle3\" cx=\"230\" cy=\"83\" r=\"20\" style=\"fill:white;stroke-width:0.5px;stroke-opacity:1;stroke:silver;cursor:pointer;\"/>\n    <rect x=\"221\" y=\"81.25\" width=\"18\" height=\"3.5\" rx=\"1\" ry=\"1\" style=\"fill:silver;stroke:none;stroke-width:1px;cursor:pointer;\"/>\n    <rect x=\"221\" y=\"81.25\" width=\"18\" height=\"3.5\" rx=\"1\" ry=\"1\" style=\"fill:silver;stroke:none;stroke-width:1px;cursor:pointer;\" transform=\"rotate(90 230 83)\"/>\n  </g>\n\n</svg>","clickableShapes":[],"javascriptHandlers":[{"selector":"#temp_down_group3","action":"mousedown","sourceCode":"var setpoint_decimal;\nvar setpoint;\nvar i;\n\ntimer = setInterval( function () {\n\n  setpoint_decimal = parseInt($('#temp_set_decimal_text3')[0].textContent);\n  setpoint = parseInt($('#temp_set_text3')[0].textContent) ;\n\n  if (setpoint_decimal == 0 && !isNaN(setpoint)) {\n    $('#temp_set_decimal_text3')[0].textContent='5';\n    setpoint -= 1;\n    $('#temp_set_text3')[0].textContent=setpoint;\n  }else if (setpoint_decimal == 5 && !isNaN(setpoint)) {\n    $('#temp_set_decimal_text3')[0].textContent='0';\n  }\n\n  setpoint = $('#temp_set_text3')[0].textContent;\n  setpoint_decimal = parseInt($('#temp_set_decimal_text3')[0].textContent);\n  \n  if (setpoint == \"MAX\"){\n    $('#temp_set_decimal_text3')[0].textContent='5';\n    $('#temp_set_text3')[0].textContent= '29';\n\n  }else if (setpoint == \"0\" && setpoint_decimal == \"0\"){\n    $('#temp_set_text3')[0].textContent= 'OFF';\n    $('#temp_set_decimal_text3')[0].textContent='';\n  }else if (setpoint == \"OFF\"){\n    clearInterval(timer);\n    return;\n  }\n\n  //Transform()\n}, 300)\n"},{"selector":"#temp_down_group3","action":"mouseup","sourceCode":"clearInterval(timer);\n"},{"selector":"#temp_up_group3","action":"mousedown","sourceCode":"var setpoint_decimal;\nvar setpoint;\nvar stringsetpoint =\"\";\nvar i;\n\nconsole.log(setpoint);\n\ntimer = setInterval( function () {\n\n  setpoint_decimal = parseInt($('#temp_set_decimal_text3')[0].textContent);\n  setpoint = parseInt($('#temp_set_text3')[0].textContent) ;\n\n  if (setpoint_decimal == 0 && !isNaN(setpoint)) {\n    $('#temp_set_decimal_text3')[0].textContent='5';\n  }else if (setpoint_decimal == 5 && !isNaN(setpoint)) {\n    $('#temp_set_decimal_text3')[0].textContent='0';\n    setpoint +=1;\n    $('#temp_set_text3')[0].textContent=setpoint;\n  }\n\n  stringsetpoint = $('#temp_set_text3')[0].textContent;\n  setpoint_decimal = parseInt($('#temp_set_decimal_text3')[0].textContent);\n  console.log(stringsetpoint);\n  if (stringsetpoint == \"OFF\"){\n    $('#temp_set_decimal_text3')[0].textContent='5';\n    $('#temp_set_text3')[0].textContent= '0';\n  }else if (stringsetpoint == \"30\"){\n    $('#temp_set_text3')[0].textContent= 'MAX';\n    $('#temp_set_decimal_text3')[0].textContent='';\n  }else if (stringsetpoint == \"MAX\"){\n    clearInterval(timer);\n    return;\n  }\n\n  //Transform()\n}, 300)\n"},{"selector":"#temp_up_group3","action":"mouseup","sourceCode":"clearInterval(timer);"}],"smilAnimations":[],"bindings":[],"showCoordinates":false,"autoFormatAfterEdit":false,"showBrowserErrors":true,"showBrowserEvents":false,"enableJsDebugging":true,"outputField":"","editorUrl":"//drawsvg.org/drawsvg.html","directory":"","panning":"disabled","zooming":"disabled","panOnlyWhenZoomed":false,"doubleClickZoomEnabled":false,"mouseWheelZoomEnabled":false,"name":"Netatmo Test 3","x":618,"y":333,"wires":[[]]},{"id":"8f59fa7c.29e13","type":"ui_group","name":"Function in SVG Tabsheet and called from elements in JS Tabsheet","tab":"527c4ef0.7eaa3","order":1,"disp":true,"width":"6","collapse":false},{"id":"585e81d.29298","type":"ui_group","name":"Function in SGV TabSheet called from onchange event in SVG TabSheet","tab":"527c4ef0.7eaa3","order":2,"disp":true,"width":"6","collapse":false},{"id":"d60d6dc3.d626c8","type":"ui_group","name":"Function injected with 'onchange' Action","tab":"527c4ef0.7eaa3","order":3,"disp":true,"width":"6","collapse":false},{"id":"527c4ef0.7eaa3","type":"ui_tab","name":"test1","icon":"dashboard","order":13,"disabled":false,"hidden":false}]

The first one is working well, the others two no.

For the last case when I try to inject the JS event I received an error as follow.

Schermata 2020-11-18 alle 18 20 03

Thank you for your support.

Regards

bartbutenaers commented 3 years ago

Only for your information my Node-Red instance is hosted on a Raspberry pi 3.

I have installed my node on a Raspberry pi 3 and used double quotes (in the "SVG" tabsheet). Then I have opened the dashboard both on Windows and IOs (virtualbox), but it works fine: never are the double quotes escaped ...

The first one is working well, the others two no.

But I have you already asked before to keep your test flows very simple. I only need a flow like <svg ...><text ... ></svg> which demonstrates your issue. I have VERY few free time, so I cannot figure out all the flows that everybody keeps sending to me. Please rewrite the 3 flows to the "absolute" minimum that I need to reproduce the problem. And explain shortly for each of the 3 test flows where I need to do what (click ...) to reproduce the problem.

bartbutenaers commented 3 years ago

I have installed my node on a Raspberry pi 3 and used double quotes (in the "SVG" tabsheet). Then I have opened the dashboard both on Windows and IOs (virtualbox), but it works fine: never are the double quotes escaped .. Hi @krikkoo, Did you enter the code snippet in the "JS" tabsheet, or did you inject it via an input message? Or are there any other tips you can give me to reproduce the problem on my Raspberry pi 3? This is the last 'known' issue, which I would like to solve before I publish version 2.1.0 to NPM.

Please rewrite the 3 flows to the "absolute" minimum that I need to reproduce the problem.

If you would have some time to simplify your flow, I can try to reproduce it. And if I get your flow working, I can try to add some extra events (like e.g. change). But so few spare time lately...

krikkoo commented 3 years ago

Hi @bartbutenaers, Unfortunately this period I don't have match spare time to work on my flow.

Probably the problems that I incurred are due my low knowledge of JS.

You are in the right way, if you added the event change in the JS sheet that trigger when a text field change its value (for example sending an update_text injection) this will be wonderful.

In my opinion You can officially release this version of SVG. it is very stable and works like a charm. You can also close this issue of course.

Thank you very match for your time. Regards

bartbutenaers commented 3 years ago

Hi @krikkoo, thanks for the feedback. Yes me als not much free time lately :-( I think you have achieved quite a bit already with JS... I have no idea why the double quotes are escaped. Perhaps if I have published this version, I will have some extra use cases which perhaps might enlighten me about this issue... I will close this issue and when you have other questions/requests afterwards, you can open a new one. That is easier for me to track what has been solved. Have fun with it! Bart

bartbutenaers commented 3 years ago

Version 2.1.0 is now published on NPM.

bartbutenaers commented 3 years ago

@krikkoo, Can you please create a new Github issue about the missing events (like e.g. the 'change' event). And copy all relevant info to it. Otherwise I have to read through this whole discussion again afterwards, to see what is still not working for you and what not. That allows me to implement it quicker, as soon as I have some free time again. Thanks!!!