From d623848c87f489d1ae4efd089be353c963489e22 Mon Sep 17 00:00:00 2001 From: Nick O'Leary Date: Fri, 21 Jun 2019 12:36:20 +0100 Subject: [PATCH] Update all node icons to SVG When listing icons provided by a module, if there is a png and svg with the same name, only the svg will be listed. If a node asks for a png icon which is not known, but there is a corresponding svg, that will be used instead. --- .../@node-red/editor-api/lib/editor/ui.js | 2 +- .../src/images/icons/arrow-in.svg | 1 + .../src/images/icons/node-changed.png | Bin 386 -> 0 bytes .../src/images/icons/node-error.png | Bin 386 -> 0 bytes .../editor-client/src/images/subflow_tab.svg | 1 + .../@node-red/editor-client/src/js/nodes.js | 4 ++-- .../@node-red/editor-client/src/js/ui/diff.js | 8 +++---- .../editor-client/src/js/ui/editor.js | 2 +- .../editor-client/src/js/ui/utils.js | 21 +++++++++++------- .../@node-red/editor-client/src/js/ui/view.js | 16 +++++++++---- .../editor-client/src/js/ui/workspaces.js | 2 +- .../@node-red/nodes/core/core/20-inject.html | 2 +- .../@node-red/nodes/core/core/25-catch.html | 2 +- .../@node-red/nodes/core/core/25-status.html | 4 ++-- .../@node-red/nodes/core/core/58-debug.html | 2 +- .../@node-red/nodes/core/core/60-link.html | 4 ++-- .../@node-red/nodes/core/core/75-exec.html | 2 +- .../nodes/core/core/80-function.html | 2 +- .../nodes/core/core/80-template.html | 2 +- .../@node-red/nodes/core/core/89-delay.html | 2 +- .../@node-red/nodes/core/core/89-trigger.html | 2 +- .../@node-red/nodes/core/core/90-comment.html | 2 +- .../@node-red/nodes/core/io/10-mqtt.html | 4 ++-- .../@node-red/nodes/core/io/21-httpin.html | 4 ++-- .../nodes/core/io/21-httprequest.html | 2 +- .../@node-red/nodes/core/io/22-websocket.html | 4 ++-- .../@node-red/nodes/core/io/23-watch.html | 2 +- .../@node-red/nodes/core/io/31-tcpin.html | 6 ++--- .../@node-red/nodes/core/io/32-udp.html | 4 ++-- .../@node-red/nodes/core/logic/10-switch.html | 2 +- .../@node-red/nodes/core/logic/15-change.html | 2 +- .../@node-red/nodes/core/logic/16-range.html | 2 +- .../@node-red/nodes/core/logic/17-split.html | 4 ++-- .../@node-red/nodes/core/logic/18-sort.html | 2 +- .../@node-red/nodes/core/logic/19-batch.html | 2 +- .../@node-red/nodes/core/parsers/70-CSV.html | 2 +- .../@node-red/nodes/core/parsers/70-HTML.html | 2 +- .../@node-red/nodes/core/parsers/70-JSON.html | 2 +- .../@node-red/nodes/core/parsers/70-XML.html | 2 +- .../@node-red/nodes/core/parsers/70-YAML.html | 2 +- .../@node-red/nodes/core/storage/50-file.html | 4 ++-- .../@node-red/nodes/icons/alert.svg | 1 + .../@node-red/nodes/icons/arrow-in.svg | 1 + .../@node-red/nodes/icons/batch.svg | 1 + .../@node-red/nodes/icons/bridge-dash.svg | 1 + .../@node-red/nodes/icons/bridge.svg | 1 + .../@node-red/nodes/icons/cog.svg | 1 + .../@node-red/nodes/icons/comment.svg | 1 + .../node_modules/@node-red/nodes/icons/db.svg | 1 + .../@node-red/nodes/icons/debug.svg | 1 + .../@node-red/nodes/icons/envelope.svg | 1 + .../@node-red/nodes/icons/feed.svg | 1 + .../@node-red/nodes/icons/file-in.svg | 1 + .../@node-red/nodes/icons/file-out.svg | 1 + .../@node-red/nodes/icons/file.svg | 1 + .../@node-red/nodes/icons/function.svg | 1 + .../@node-red/nodes/icons/hash.svg | 1 + .../@node-red/nodes/icons/inject.svg | 1 + .../@node-red/nodes/icons/join.svg | 1 + .../@node-red/nodes/icons/light.svg | 1 + .../@node-red/nodes/icons/link-out.svg | 1 + .../@node-red/nodes/icons/parser-csv.svg | 1 + .../@node-red/nodes/icons/parser-html.svg | 1 + .../@node-red/nodes/icons/parser-json.svg | 1 + .../@node-red/nodes/icons/parser-xml.svg | 1 + .../@node-red/nodes/icons/parser-yaml.svg | 1 + .../@node-red/nodes/icons/range.svg | 1 + .../@node-red/nodes/icons/serial.svg | 1 + .../@node-red/nodes/icons/sort.svg | 1 + .../@node-red/nodes/icons/split.svg | 1 + .../@node-red/nodes/icons/subflow.svg | 1 + .../@node-red/nodes/icons/swap.svg | 1 + .../@node-red/nodes/icons/switch.svg | 1 + .../@node-red/nodes/icons/template.svg | 1 + .../@node-red/nodes/icons/timer.svg | 1 + .../@node-red/nodes/icons/trigger.svg | 1 + .../@node-red/nodes/icons/watch.svg | 1 + .../@node-red/nodes/icons/white-globe.svg | 1 + .../@node-red/registry/lib/localfilesystem.js | 11 ++++++++- .../editor-api/lib/editor/ui_spec.js | 4 ++-- .../registry/lib/localfilesystem_spec.js | 4 ++-- 81 files changed, 127 insertions(+), 66 deletions(-) create mode 100644 packages/node_modules/@node-red/editor-client/src/images/icons/arrow-in.svg delete mode 100644 packages/node_modules/@node-red/editor-client/src/images/icons/node-changed.png delete mode 100644 packages/node_modules/@node-red/editor-client/src/images/icons/node-error.png create mode 100644 packages/node_modules/@node-red/editor-client/src/images/subflow_tab.svg create mode 100644 packages/node_modules/@node-red/nodes/icons/alert.svg create mode 100644 packages/node_modules/@node-red/nodes/icons/arrow-in.svg create mode 100644 packages/node_modules/@node-red/nodes/icons/batch.svg create mode 100644 packages/node_modules/@node-red/nodes/icons/bridge-dash.svg create mode 100644 packages/node_modules/@node-red/nodes/icons/bridge.svg create mode 100644 packages/node_modules/@node-red/nodes/icons/cog.svg create mode 100644 packages/node_modules/@node-red/nodes/icons/comment.svg create mode 100644 packages/node_modules/@node-red/nodes/icons/db.svg create mode 100644 packages/node_modules/@node-red/nodes/icons/debug.svg create mode 100644 packages/node_modules/@node-red/nodes/icons/envelope.svg create mode 100644 packages/node_modules/@node-red/nodes/icons/feed.svg create mode 100644 packages/node_modules/@node-red/nodes/icons/file-in.svg create mode 100644 packages/node_modules/@node-red/nodes/icons/file-out.svg create mode 100644 packages/node_modules/@node-red/nodes/icons/file.svg create mode 100644 packages/node_modules/@node-red/nodes/icons/function.svg create mode 100644 packages/node_modules/@node-red/nodes/icons/hash.svg create mode 100644 packages/node_modules/@node-red/nodes/icons/inject.svg create mode 100644 packages/node_modules/@node-red/nodes/icons/join.svg create mode 100644 packages/node_modules/@node-red/nodes/icons/light.svg create mode 100644 packages/node_modules/@node-red/nodes/icons/link-out.svg create mode 100644 packages/node_modules/@node-red/nodes/icons/parser-csv.svg create mode 100644 packages/node_modules/@node-red/nodes/icons/parser-html.svg create mode 100644 packages/node_modules/@node-red/nodes/icons/parser-json.svg create mode 100644 packages/node_modules/@node-red/nodes/icons/parser-xml.svg create mode 100644 packages/node_modules/@node-red/nodes/icons/parser-yaml.svg create mode 100644 packages/node_modules/@node-red/nodes/icons/range.svg create mode 100644 packages/node_modules/@node-red/nodes/icons/serial.svg create mode 100644 packages/node_modules/@node-red/nodes/icons/sort.svg create mode 100644 packages/node_modules/@node-red/nodes/icons/split.svg create mode 100644 packages/node_modules/@node-red/nodes/icons/subflow.svg create mode 100644 packages/node_modules/@node-red/nodes/icons/swap.svg create mode 100644 packages/node_modules/@node-red/nodes/icons/switch.svg create mode 100644 packages/node_modules/@node-red/nodes/icons/template.svg create mode 100644 packages/node_modules/@node-red/nodes/icons/timer.svg create mode 100644 packages/node_modules/@node-red/nodes/icons/trigger.svg create mode 100644 packages/node_modules/@node-red/nodes/icons/watch.svg create mode 100644 packages/node_modules/@node-red/nodes/icons/white-globe.svg diff --git a/packages/node_modules/@node-red/editor-api/lib/editor/ui.js b/packages/node_modules/@node-red/editor-api/lib/editor/ui.js index ce3ec862c..24b819fec 100644 --- a/packages/node_modules/@node-red/editor-api/lib/editor/ui.js +++ b/packages/node_modules/@node-red/editor-api/lib/editor/ui.js @@ -25,7 +25,7 @@ var theme = require("./theme"); var runtimeAPI; var editorClientDir = path.dirname(require.resolve("@node-red/editor-client")); -var defaultNodeIcon = path.join(editorClientDir,"public","red","images","icons","arrow-in.png"); +var defaultNodeIcon = path.join(editorClientDir,"public","red","images","icons","arrow-in.svg"); var editorTemplatePath = path.join(editorClientDir,"templates","index.mst"); var editorTemplate; diff --git a/packages/node_modules/@node-red/editor-client/src/images/icons/arrow-in.svg b/packages/node_modules/@node-red/editor-client/src/images/icons/arrow-in.svg new file mode 100644 index 000000000..a5fcb49af --- /dev/null +++ b/packages/node_modules/@node-red/editor-client/src/images/icons/arrow-in.svg @@ -0,0 +1 @@ + diff --git a/packages/node_modules/@node-red/editor-client/src/images/icons/node-changed.png b/packages/node_modules/@node-red/editor-client/src/images/icons/node-changed.png deleted file mode 100644 index 38a179444bb5a1e591e62d7946b40a44068a6ee3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 386 zcmeAS@N?(olHy`uVBq!ia0vp^AT}2V8<6ZZI=>f4u@pObhHwBu4M$1`kk47*5n0T@ z!0ZFUjDP1=)By!0OI#yLg7ec#$`gxH8OqDc^)mCai<1)zQuXqS(r3T3kpe3E@9E+g zA~Ci1!bY#d0TM?){x8pOD)E}O=I*WtE3TIzEqr%NzVdeE2LyO6-{<6h*D9<)L+_yO zgB($=E>XcZlN>b~@BOxXk+7jT-FE*|nVEje8NRH4XWb>sF^NfI7I&VFW!60=iH3hU zhAz3!7B7k3b}R5^mb;zTt`%p0Z9XdC@M!X9zO2nf{~gRS`Fj`{-miRG{7tO9YlrjV z8;#w<@s13~Hh5O=u=v;|E8%!4cW-MNc) z3f{RPmK}WhdB}(J647h+pFMi><>{}F*$@8OD{N<9@jG(Hhqs+kb&n5SU)mt=+c$gq er~8NZGvur-Vn03W)hA$3FnGH9xvXg5-u&wghk1yuCk)5S4F zVruHSy_PROu+O%ggU%YSo z{_ETtbBPU~1rMK=7SWCP++D?4^816N^R$iHw=U>poGbdUx#yF@Vhx4xE`808;tIc@ bcXbTX){Yw-It2CtgMz`+)z4*}Q$iB}@;#NK diff --git a/packages/node_modules/@node-red/editor-client/src/images/subflow_tab.svg b/packages/node_modules/@node-red/editor-client/src/images/subflow_tab.svg new file mode 100644 index 000000000..4acb241e4 --- /dev/null +++ b/packages/node_modules/@node-red/editor-client/src/images/subflow_tab.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/node_modules/@node-red/editor-client/src/js/nodes.js b/packages/node_modules/@node-red/editor-client/src/js/nodes.js index 5c544e7b7..62949efce 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/nodes.js +++ b/packages/node_modules/@node-red/editor-client/src/js/nodes.js @@ -362,7 +362,7 @@ RED.nodes = (function() { name:{value:""}, env:{value:[]} }, - icon: function() { return sf.icon||"subflow.png" }, + icon: function() { return sf.icon||"subflow.svg" }, category: sf.category || "subflows", inputs: sf.in.length, outputs: sf.out.length, @@ -583,7 +583,7 @@ RED.nodes = (function() { node.outputLabels = n.outputLabels.slice(); } if (n.icon) { - if (n.icon !== "node-red/subflow.png") { + if (n.icon !== "node-red/subflow.svg") { node.icon = n.icon; } } diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/diff.js b/packages/node_modules/@node-red/editor-client/src/js/ui/diff.js index 9ea599e3d..4ebdcdce9 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/ui/diff.js +++ b/packages/node_modules/@node-red/editor-client/src/js/ui/diff.js @@ -399,7 +399,7 @@ RED.diff = (function() { diff: localDiff, def: { defaults:{}, - icon:"subflow.png", + icon:"subflow.svg", category: "subflows", color: "#da9" }, @@ -422,7 +422,7 @@ RED.diff = (function() { diff: localDiff, def: { defaults:{}, - icon:"subflow.png", + icon:"subflow.svg", category: "subflows", color: "#da9" }, @@ -443,7 +443,7 @@ RED.diff = (function() { remoteDiff: remoteDiff, def: { defaults:{}, - icon:"subflow.png", + icon:"subflow.svg", category: "subflows", color: "#da9" }, @@ -549,7 +549,7 @@ RED.diff = (function() { if (def === undefined) { if (/^subflow:/.test(node.type)) { def = { - icon:"subflow.png", + icon:"subflow.svg", category: "subflows", color: "#da9", defaults:{name:{value:""}} diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/editor.js b/packages/node_modules/@node-red/editor-client/src/js/ui/editor.js index 1b3ccea52..4547dc756 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/ui/editor.js +++ b/packages/node_modules/@node-red/editor-client/src/js/ui/editor.js @@ -2156,7 +2156,7 @@ RED.editor = (function() { changed = true; } var icon = $("#red-ui-editor-node-icon").text()||""; - if ((editing_node.icon === undefined && icon !== "node-red/subflow.png") || + if ((editing_node.icon === undefined && icon !== "node-red/subflow.svg") || (editing_node.icon !== undefined && editing_node.icon !== icon)) { changes.icon = editing_node.icon; editing_node.icon = icon; diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/utils.js b/packages/node_modules/@node-red/editor-client/src/js/ui/utils.js index a7b022172..c11931bfb 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/ui/utils.js +++ b/packages/node_modules/@node-red/editor-client/src/js/ui/utils.js @@ -802,13 +802,13 @@ RED.utils = (function() { function getDefaultNodeIcon(def,node) { var icon_url; if (node && node.type === "subflow") { - icon_url = "node-red/subflow.png"; + icon_url = "node-red/subflow.svg"; } else if (typeof def.icon === "function") { try { icon_url = def.icon.call(node); } catch(err) { console.log("Definition error: "+def.type+".icon",err); - icon_url = "arrow-in.png"; + icon_url = "arrow-in.svg"; } } else { icon_url = def.icon; @@ -838,11 +838,11 @@ RED.utils = (function() { function getNodeIcon(def,node) { if (def.category === 'config') { - return RED.settings.apiRootUrl+"icons/node-red/cog.png" + return RED.settings.apiRootUrl+"icons/node-red/cog.svg" } else if (node && node.type === 'tab') { - return RED.settings.apiRootUrl+"icons/node-red/subflow.png" + return RED.settings.apiRootUrl+"icons/node-red/subflow.svg" } else if (node && node.type === 'unknown') { - return RED.settings.apiRootUrl+"icons/node-red/alert.png" + return RED.settings.apiRootUrl+"icons/node-red/alert.svg" } else if (node && node.icon) { var iconPath = separateIconPath(node.icon); if (isIconExists(iconPath)) { @@ -851,6 +851,11 @@ RED.utils = (function() { } else { return RED.settings.apiRootUrl+"icons/" + node.icon; } + } else if (iconPath.module !== "font-awesome" && /.png$/i.test(iconPath.file)) { + iconPath.file = iconPath.file.replace(/.png$/,".svg"); + if (isIconExists(iconPath)) { + return RED.settings.apiRootUrl+"icons/" + node.icon.replace(/.png$/,".svg"); + } } } @@ -867,9 +872,9 @@ RED.utils = (function() { if (isIconExists(iconPath)) { return RED.settings.apiRootUrl+"icons/"+iconPath.module+"/"+iconPath.file; } else if (def.category === 'subflows') { - return RED.settings.apiRootUrl+"icons/node-red/subflow.png"; + return RED.settings.apiRootUrl+"icons/node-red/subflow.svg"; } else { - return RED.settings.apiRootUrl+"icons/node-red/arrow-in.png"; + return RED.settings.apiRootUrl+"icons/node-red/arrow-in.svg"; } } } @@ -1007,7 +1012,7 @@ RED.utils = (function() { return; } // If the specified name is not defined in font-awesome, show arrow-in icon. - iconUrl = RED.settings.apiRootUrl+"icons/node-red/arrow-in.png" + iconUrl = RED.settings.apiRootUrl+"icons/node-red/arrow-in.svg" } var imageIconElement = $('
',{class:"red-ui-palette-icon"}).appendTo(iconContainer); imageIconElement.css("backgroundImage", "url("+iconUrl+")"); diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/view.js b/packages/node_modules/@node-red/editor-client/src/js/ui/view.js index e3aa33a7f..57cce2852 100755 --- a/packages/node_modules/@node-red/editor-client/src/js/ui/view.js +++ b/packages/node_modules/@node-red/editor-client/src/js/ui/view.js @@ -2463,14 +2463,22 @@ RED.view = (function() { .attr("class","red-ui-flow-node-icon") .attr("x",0) .attr("width","30") - .attr("height","30"); + .attr("height","30") + .style("display","none"); var img = new Image(); img.src = iconUrl; img.onload = function() { - icon.attr("width",Math.min(img.width,30)); - icon.attr("height",Math.min(img.height,30)); - icon.attr("x",15-Math.min(img.width,30)/2); + var largestEdge = Math.max(img.width,img.height); + var scaleFactor = 1; + if (largestEdge > 30) { + scaleFactor = 30/largestEdge; + } + var width = img.width * scaleFactor; + var height = img.height * scaleFactor; + icon.attr("width",width); + icon.attr("height",height); + icon.attr("x",15-width/2); icon.attr("xlink:href",iconUrl); icon.style("display",null); //if ("right" == d._def.align) { diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/workspaces.js b/packages/node_modules/@node-red/editor-client/src/js/ui/workspaces.js index db36004ab..91fa8e34a 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/ui/workspaces.js +++ b/packages/node_modules/@node-red/editor-client/src/js/ui/workspaces.js @@ -439,7 +439,7 @@ RED.workspaces = (function() { if (!workspace_tabs.contains(id)) { var sf = RED.nodes.subflow(id); if (sf) { - addWorkspace({type:"subflow",id:id,icon:"red/images/subflow_tab.png",label:sf.name, closeable: true}); + addWorkspace({type:"subflow",id:id,icon:"red/images/subflow_tab.svg",label:sf.name, closeable: true}); } else { return; } diff --git a/packages/node_modules/@node-red/nodes/core/core/20-inject.html b/packages/node_modules/@node-red/nodes/core/core/20-inject.html index 558530835..69fd9c8d1 100644 --- a/packages/node_modules/@node-red/nodes/core/core/20-inject.html +++ b/packages/node_modules/@node-red/nodes/core/core/20-inject.html @@ -168,7 +168,7 @@ once: {value:false}, onceDelay: {value:0.1} }, - icon: "inject.png", + icon: "inject.svg", inputs:0, outputs:1, outputLabels: function(index) { diff --git a/packages/node_modules/@node-red/nodes/core/core/25-catch.html b/packages/node_modules/@node-red/nodes/core/core/25-catch.html index 8145fd525..97bd627d5 100644 --- a/packages/node_modules/@node-red/nodes/core/core/25-catch.html +++ b/packages/node_modules/@node-red/nodes/core/core/25-catch.html @@ -34,7 +34,7 @@ }, inputs:0, outputs:1, - icon: "alert.png", + icon: "alert.svg", label: function() { if (this.name) { return this.name; diff --git a/packages/node_modules/@node-red/nodes/core/core/25-status.html b/packages/node_modules/@node-red/nodes/core/core/25-status.html index de52ae281..68eb127a7 100644 --- a/packages/node_modules/@node-red/nodes/core/core/25-status.html +++ b/packages/node_modules/@node-red/nodes/core/core/25-status.html @@ -22,14 +22,14 @@