Imagemaps within node-red dashboard

Having asked on the slack channel if someone had already used imagemaps within the dashboard, and recieved replies such as, "Are they still a thing?" - Well yes they are, they are part of the HTML5 spec.

I'm using an imagemap to provide a quick and dirty interface of a remote control where there's a node-red node that enables control of the device.

Description

Having an imagemap hotspot send a message to node-red is easy using "ng-click" but unfortunately due to the responsive nature of the dashboard the images are often scaled and image the hotspots can end up shifted in relation to the image; which defeats the purpose. Fortunately there's an angular script that scales the imagemap hotspots along with the image.

There are a couple of things to look out for:

Each area needs href="#" in order to change pointer on mouse over, but it needs to come AFTER ng-click

Keep the <div ng-app="rwdImageMaps"> <img class="rwdimgmap" names

Credits

Angular responsive design imagemap script is located here: https://github.com/cowglow/angular-image-maps-rwd

Image from under a Creative Commons CC0 license https://pixabay.com/en/easter-eggs-colorful-easter-2168521/

Improvements

If anyone comes up with any improvements, I'd love to know!

[{"id":"54724b04.8b6924","type":"ui_template","z":"4298399f.e9fd48","group":"e66edfe2.ea332","name":"","order":0,"width":0,"height":0,"format":"\n\n\n<script type=\"text/javascript\" charset=\"utf-8\">\n/*\n* rwdImageMaps AngularJS Directive v1.0\n*\n* Allows image maps to be used in a responsive design by recalculating the area coordinates to match the actual image size on load and window.resize\n* \n* Original Copyright (c) 2013 Matt Stow\n* https://github.com/stowball/jQuery-rwdImageMaps\n* http://mattstow.com\n* Licensed under the MIT license\n*\n* angular-rwdImageMaps.js (by Philip Saa)\n* https://github.com/cowglow/\n* @cowglow\n*/\nangular.module('rwdImageMaps',[])\n\t.directive('rwdimgmap', function($window){\n\t\treturn{\n\t\t\trestrict: 'CA',\n\t\t\tlink:function(scope, element, attrs){\n\t\t\t\telement.bind('load', function() {\n\n\t\t\t\t\tvar w = $(element).attr('width'),\n\t\t\t\t\t\th = $(element).attr('height');\n\t\t\t\t\t\t\n\t\t\t\t\tfunction resize(){\n\t\t\t\t\t\tif (!w || !h) {\n\t\t\t\t\t\t\tvar temp = new Image();\n\t\t\t\t\t\t\ttemp.src = $(element).attr('src');\n\t\t\t\t\t\t\tif(temp.src == undefined)\n\t\t\t\t\t\t\t\ttemp.src = $(element).attr('ng-src');\n\n\t\t\t\t\t\t\tif (!w)\n\t\t\t\t\t\t\t\tw = temp.width;\n\t\t\t\t\t\t\tif (!h)\n\t\t\t\t\t\t\t\th = temp.height;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tvar wPercent = $(element).width()/100,\n\t\t\t\t\t\t\thPercent = $(element).height()/100,\n\t\t\t\t\t\t\tmap = attrs.usemap.replace('#', ''),\n\t\t\t\t\t\t\tc = 'coords';\n\t\t\t\t\t\t\n\t\t\t\t\t\tangular.element('map[name=\"' + map + '\"]').find('area').each(function(){\n\t\t\t\t\t\t\tvar $this = $(this);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif (!$this.data(c)){\n\t\t\t\t\t\t\t\t$this.data(c, $this.attr(c));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tvar coords = $this.data(c).split(','),\n\t\t\t\t\t\t\t\tcoordsPercent = new Array(coords.length);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tfor (var i = 0; i<coordsPercent.length; ++i){\n\t\t\t\t\t\t\t\tif (i % 2 === 0){\n\t\t\t\t\t\t\t\t\tcoordsPercent[i] = parseInt(((coords[i]/w)*100)*wPercent);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcoordsPercent[i] = parseInt(((coords[i]/h)*100)*hPercent);\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t$this.attr(c, coordsPercent.toString());\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tangular.element($window).resize(resize).trigger('resize');\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\t});\n</script>\n\n\n<div ng-app=\"rwdImageMaps\">\n\n<!-- image below is as a base64 image to enable demo to be bundled but can easily be replace with image url -->\n\n<img class=\"rwdimgmap\" usemap=\"#image-map\" width=\"640\" height=\"427\" alt=\"\"  src=\"data:image/false;base64,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\" />\n\n\n<!-- each area needs href=\"#\" in order to change pointer on mouse over, but it needs to come AFTER ng-click -->\n\n<map name=\"image-map\">\n<area shape=\"poly\" ng-click=\"send({payload:'yellow'})\" coords=\"92,155,106,159,117,165,127,176,136,189,142,207,142,228,138,246,125,263,106,272,92,275,82,272,66,264,53,248,48,226,46,204,58,176,70,163\" alt=\"yellow\" href=\"#\" />\n<area shape=\"poly\" ng-click=\"send({payload:'orange'})\" coords=\"145,216,145,208,145,194,154,174,162,164,173,157,184,151,200,154,212,166,221,177,231,192,234,205,234,218,231,234,226,249,211,263,198,271,183,271,172,271,164,264,154,253,150,247\" alt=\"orange\" href=\"#\" />\n<area shape=\"poly\" ng-click=\"send({payload:'red'})\" coords=\"236,216,236,208,236,194,245,174,253,164,264,157,275,151,291,154,303,166,312,177,322,192,325,205,325,218,322,234,317,249,302,263,289,271,274,271,263,271,255,264,245,253,241,247\" alt=\"red\" href=\"#\" />\n<area shape=\"poly\" ng-click=\"send({payload:'purple'})\" coords=\"329,217,329,209,329,195,338,175,346,165,357,158,368,152,384,155,396,167,405,178,415,193,418,206,418,219,415,235,410,250,395,264,382,272,367,272,356,272,348,265,338,254,334,248\" alt=\"purple\" href=\"#\" />\n<area shape=\"poly\" ng-click=\"send({payload:'blue'})\" coords=\"424,218,424,210,424,196,433,176,441,166,452,159,463,153,479,156,491,168,500,179,510,194,513,207,513,220,510,236,505,251,490,265,477,273,462,273,451,273,443,266,433,255,429,249\" alt=\"blue\" href=\"#\" />\n<area shape=\"poly\" ng-click=\"send({payload:'green'})\" coords=\"516,222,516,214,516,200,525,180,533,170,544,163,555,157,571,160,583,172,592,183,602,198,605,211,605,224,602,240,597,255,582,269,569,277,554,277,543,277,535,270,525,259,521,253\" alt=\"green\" href=\"#\" />\n<area shape=\"rect\" ng-click=\"send({payload:'Sssh secret Black'})\" coords=\"324,38,519,121\" alt=\"Sssh secret Black\" href=\"#\" />\n</map>\n</div>","storeOutMessages":true,"fwdInMessages":true,"x":296.5,"y":315,"wires":[["925f986e.e290d8"]]},{"id":"925f986e.e290d8","type":"debug","z":"4298399f.e9fd48","name":"","active":true,"console":"false","complete":"true","x":433.5,"y":315,"wires":[]},{"id":"e66edfe2.ea332","type":"ui_group","z":"","name":"Demo","tab":"465038ed.e7bb88","disp":true,"width":"12"},{"id":"465038ed.e7bb88","type":"ui_tab","z":"","name":"Demo","icon":"home","order":"1"}]
ukmoose

Flow Info

created 3 months, 1 week ago

Node Types

Core
  • debug (x1)
Other
  • ui_group (x1)
  • ui_tab (x1)
  • ui_template (x1)

Tags

  • imagemaps
  • dashboard
Copy this flow JSON to your clipboard and then import into Node-RED using the Import From > Clipboard (Ctrl-I) menu option