mirror of
				https://github.com/node-red/node-red.git
				synced 2025-03-01 10:36:34 +00:00 
			
		
		
		
	Add createNodeIcon and getDarkerColor to RED.utils
This commit is contained in:
		| @@ -1,26 +1,5 @@ | |||||||
| RED.colorPicker = (function() { | RED.colorPicker = (function() { | ||||||
|  |  | ||||||
|     function getDarkerColor(c) { |  | ||||||
|         var r,g,b; |  | ||||||
|         if (/^#[a-f0-9]{6}$/i.test(c)) { |  | ||||||
|             r = parseInt(c.substring(1, 3), 16); |  | ||||||
|             g = parseInt(c.substring(3, 5), 16); |  | ||||||
|             b = parseInt(c.substring(5, 7), 16); |  | ||||||
|         } else if (/^#[a-f0-9]{3}$/i.test(c)) { |  | ||||||
|             r = parseInt(c.substring(1, 2)+c.substring(1, 2), 16); |  | ||||||
|             g = parseInt(c.substring(2, 3)+c.substring(2, 3), 16); |  | ||||||
|             b = parseInt(c.substring(3, 4)+c.substring(3, 4), 16); |  | ||||||
|         } else { |  | ||||||
|             return c; |  | ||||||
|         } |  | ||||||
|         var l = 0.3 * r/255 + 0.59 * g/255 + 0.11 * b/255 ; |  | ||||||
|         r = Math.max(0,r-50); |  | ||||||
|         g = Math.max(0,g-50); |  | ||||||
|         b = Math.max(0,b-50); |  | ||||||
|         var s = ((r<<16) + (g<<8) + b).toString(16); |  | ||||||
|         return '#'+'000000'.slice(0, 6-s.length)+s; |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     function create(options) { |     function create(options) { | ||||||
|         var color = options.value; |         var color = options.value; | ||||||
|         var id = options.id; |         var id = options.id; | ||||||
| @@ -57,7 +36,7 @@ RED.colorPicker = (function() { | |||||||
|                     "background-color": color, |                     "background-color": color, | ||||||
|                     "opacity": opacity |                     "opacity": opacity | ||||||
|                 }); |                 }); | ||||||
|                 var border = getDarkerColor(color); |                 var border = RED.utils.getDarkerColor(color); | ||||||
|                 if (border[0] === '#') { |                 if (border[0] === '#') { | ||||||
|                     border += Math.round(255*Math.floor(opacity*100)/100).toString(16); |                     border += Math.round(255*Math.floor(opacity*100)/100).toString(16); | ||||||
|                 } else { |                 } else { | ||||||
| @@ -132,7 +111,7 @@ RED.colorPicker = (function() { | |||||||
|                     height: height+"px", |                     height: height+"px", | ||||||
|                     margin: margin+"px", |                     margin: margin+"px", | ||||||
|                     backgroundColor: col, |                     backgroundColor: col, | ||||||
|                     "border-color": getDarkerColor(col) |                     "border-color": RED.utils.getDarkerColor(col) | ||||||
|                 }).appendTo(row); |                 }).appendTo(row); | ||||||
|                 button.on("click",  function (e) { |                 button.on("click",  function (e) { | ||||||
|                     e.preventDefault(); |                     e.preventDefault(); | ||||||
|   | |||||||
| @@ -790,6 +790,11 @@ RED.editor = (function() { | |||||||
|                             nodeDiv.css({ |                             nodeDiv.css({ | ||||||
|                                 'backgroundColor': backgroundColor |                                 'backgroundColor': backgroundColor | ||||||
|                             }); |                             }); | ||||||
|  |                             var borderColor = RED.utils.getDarkerColor(backgroundColor); | ||||||
|  |                             if (borderColor !== backgroundColor) { | ||||||
|  |                                 nodeDiv.css('border-color',borderColor) | ||||||
|  |                             } | ||||||
|  |  | ||||||
|                         } |                         } | ||||||
|                         var iconContainer = $('<div/>',{class:"red-ui-palette-icon-container"}).appendTo(nodeDiv); |                         var iconContainer = $('<div/>',{class:"red-ui-palette-icon-container"}).appendTo(nodeDiv); | ||||||
|                         RED.utils.createIconElement(icon_url, iconContainer, true); |                         RED.utils.createIconElement(icon_url, iconContainer, true); | ||||||
| @@ -932,7 +937,12 @@ RED.editor = (function() { | |||||||
|  |  | ||||||
|             $("#red-ui-editor-node-color").on('change', function(ev) { |             $("#red-ui-editor-node-color").on('change', function(ev) { | ||||||
|                 // Horribly out of scope... |                 // Horribly out of scope... | ||||||
|                 nodeDiv.css('backgroundColor',$(this).val()); |                 var colour = $(this).val(); | ||||||
|  |                 nodeDiv.css('backgroundColor',colour); | ||||||
|  |                 var borderColor = RED.utils.getDarkerColor(colour); | ||||||
|  |                 if (borderColor !== colour) { | ||||||
|  |                     nodeDiv.css('border-color',borderColor) | ||||||
|  |                 } | ||||||
|             }) |             }) | ||||||
|         } |         } | ||||||
|  |  | ||||||
| @@ -948,6 +958,11 @@ RED.editor = (function() { | |||||||
|             var colour = RED.utils.getNodeColor(node.type, node._def); |             var colour = RED.utils.getNodeColor(node.type, node._def); | ||||||
|             var icon_url = RED.utils.getNodeIcon(node._def,node); |             var icon_url = RED.utils.getNodeIcon(node._def,node); | ||||||
|             nodeDiv.css('backgroundColor',colour); |             nodeDiv.css('backgroundColor',colour); | ||||||
|  |             var borderColor = RED.utils.getDarkerColor(colour); | ||||||
|  |             if (borderColor !== colour) { | ||||||
|  |                 nodeDiv.css('border-color',borderColor) | ||||||
|  |             } | ||||||
|  |  | ||||||
|             var iconContainer = $('<div/>',{class:"red-ui-palette-icon-container"}).appendTo(nodeDiv); |             var iconContainer = $('<div/>',{class:"red-ui-palette-icon-container"}).appendTo(nodeDiv); | ||||||
|             RED.utils.createIconElement(icon_url, iconContainer, true); |             RED.utils.createIconElement(icon_url, iconContainer, true); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -251,17 +251,7 @@ RED.search = (function() { | |||||||
|                     var def = node._def; |                     var def = node._def; | ||||||
|                     div = $('<a>',{href:'#',class:"red-ui-search-result"}).appendTo(container); |                     div = $('<a>',{href:'#',class:"red-ui-search-result"}).appendTo(container); | ||||||
|  |  | ||||||
|                     var nodeDiv = $('<div>',{class:"red-ui-search-result-node"}).appendTo(div); |                     RED.utils.createNodeIcon(node).appendTo(div); | ||||||
|                     var colour = RED.utils.getNodeColor(node.type,def); |  | ||||||
|                     var icon_url = RED.utils.getNodeIcon(def,node); |  | ||||||
|                     if (node.type === 'tab') { |  | ||||||
|                         colour = "#C0DEED"; |  | ||||||
|                     } |  | ||||||
|                     nodeDiv.css('backgroundColor',colour); |  | ||||||
|  |  | ||||||
|                     var iconContainer = $('<div/>',{class:"red-ui-palette-icon-container"}).appendTo(nodeDiv); |  | ||||||
|                     RED.utils.createIconElement(icon_url, iconContainer, true); |  | ||||||
|  |  | ||||||
|                     var contentDiv = $('<div>',{class:"red-ui-search-result-node-description"}).appendTo(div); |                     var contentDiv = $('<div>',{class:"red-ui-search-result-node-description"}).appendTo(div); | ||||||
|                     if (node.z) { |                     if (node.z) { | ||||||
|                         var workspace = RED.nodes.workspace(node.z); |                         var workspace = RED.nodes.workspace(node.z); | ||||||
|   | |||||||
| @@ -806,9 +806,9 @@ RED.utils = (function() { | |||||||
|     function separateIconPath(icon) { |     function separateIconPath(icon) { | ||||||
|         var result = {module: "", file: ""}; |         var result = {module: "", file: ""}; | ||||||
|         if (icon) { |         if (icon) { | ||||||
|             var index = icon.indexOf('icons/'); |             var index = icon.indexOf(RED.settings.apiRootUrl+'icons/'); | ||||||
|             if (index !== -1) { |             if (index === 0) { | ||||||
|                 icon = icon.substring(index+6); |                 icon = icon.substring((RED.settings.apiRootUrl+'icons/').length); | ||||||
|             } |             } | ||||||
|             index = icon.indexOf('/'); |             index = icon.indexOf('/'); | ||||||
|             if (index !== -1) { |             if (index !== -1) { | ||||||
| @@ -859,12 +859,15 @@ RED.utils = (function() { | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     function getNodeIcon(def,node) { |     function getNodeIcon(def,node) { | ||||||
|         if (node && node.type === 'group') { |         if (node && node.type === '_selection_') { | ||||||
|  |             return "font-awesome/fa-object-ungroup"; | ||||||
|  |         } else if (node && node.type === 'group') { | ||||||
|             return "font-awesome/fa-object-group" |             return "font-awesome/fa-object-group" | ||||||
|         } else if (def.category === 'config') { |         } else if (def.category === 'config') { | ||||||
|             return RED.settings.apiRootUrl+"icons/node-red/cog.svg" |             return RED.settings.apiRootUrl+"icons/node-red/cog.svg" | ||||||
|         } else if (node && node.type === 'tab') { |         } else if (node && node.type === 'tab') { | ||||||
|             return RED.settings.apiRootUrl+"icons/node-red/subflow.svg" |             return "red-ui-icons/red-ui-icons-flow" | ||||||
|  |             // return RED.settings.apiRootUrl+"images/subflow_tab.svg" | ||||||
|         } else if (node && node.type === 'unknown') { |         } else if (node && node.type === 'unknown') { | ||||||
|             return RED.settings.apiRootUrl+"icons/node-red/alert.svg" |             return RED.settings.apiRootUrl+"icons/node-red/alert.svg" | ||||||
|         } else if (node && node.icon) { |         } else if (node && node.icon) { | ||||||
| @@ -923,6 +926,8 @@ RED.utils = (function() { | |||||||
|         var l; |         var l; | ||||||
|         if (node.type === 'tab') { |         if (node.type === 'tab') { | ||||||
|             l = node.label || defaultLabel |             l = node.label || defaultLabel | ||||||
|  |         } else if (node.type === 'group') { | ||||||
|  |             l = node.name || defaultLabel | ||||||
|         } else { |         } else { | ||||||
|             l = node._def.label; |             l = node._def.label; | ||||||
|             try { |             try { | ||||||
| @@ -1056,11 +1061,63 @@ RED.utils = (function() { | |||||||
|             } |             } | ||||||
|             // If the specified name is not defined in font-awesome, show arrow-in icon. |             // If the specified name is not defined in font-awesome, show arrow-in icon. | ||||||
|             iconUrl = RED.settings.apiRootUrl+"icons/node-red/arrow-in.svg" |             iconUrl = RED.settings.apiRootUrl+"icons/node-red/arrow-in.svg" | ||||||
|  |         } else if (iconPath.module === "red-ui-icons") { | ||||||
|  |             var redIconElement = $('<i/>').appendTo(iconContainer); | ||||||
|  |             redIconElement.addClass("red-ui-palette-icon red-ui-icons " + iconPath.file); | ||||||
|  |             return; | ||||||
|         } |         } | ||||||
|         var imageIconElement = $('<div/>',{class:"red-ui-palette-icon"}).appendTo(iconContainer); |         var imageIconElement = $('<div/>',{class:"red-ui-palette-icon"}).appendTo(iconContainer); | ||||||
|         imageIconElement.css("backgroundImage", "url("+iconUrl+")"); |         imageIconElement.css("backgroundImage", "url("+iconUrl+")"); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     function createNodeIcon(node) { | ||||||
|  |         var def = node._def; | ||||||
|  |         var nodeDiv = $('<div>',{class:"red-ui-search-result-node"}) | ||||||
|  |         if (node.type === "_selection_") { | ||||||
|  |             nodeDiv.addClass("red-ui-palette-icon-selection"); | ||||||
|  |         } else if (node.type === "group") { | ||||||
|  |             nodeDiv.addClass("red-ui-palette-icon-group"); | ||||||
|  |         } else if (node.type === 'tab') { | ||||||
|  |             nodeDiv.addClass("red-ui-palette-icon-flow"); | ||||||
|  |         } else { | ||||||
|  |             var colour = RED.utils.getNodeColor(node.type,def); | ||||||
|  |             // if (node.type === 'tab') { | ||||||
|  |             //     colour = "#C0DEED"; | ||||||
|  |             // } | ||||||
|  |             nodeDiv.css('backgroundColor',colour); | ||||||
|  |             var borderColor = getDarkerColor(colour); | ||||||
|  |             if (borderColor !== colour) { | ||||||
|  |                 nodeDiv.css('border-color',borderColor) | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         var icon_url = RED.utils.getNodeIcon(def,node); | ||||||
|  |         var iconContainer = $('<div/>',{class:"red-ui-palette-icon-container"}).appendTo(nodeDiv); | ||||||
|  |         RED.utils.createIconElement(icon_url, iconContainer, true); | ||||||
|  |         return nodeDiv; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     function getDarkerColor(c) { | ||||||
|  |         var r,g,b; | ||||||
|  |         if (/^#[a-f0-9]{6}$/i.test(c)) { | ||||||
|  |             r = parseInt(c.substring(1, 3), 16); | ||||||
|  |             g = parseInt(c.substring(3, 5), 16); | ||||||
|  |             b = parseInt(c.substring(5, 7), 16); | ||||||
|  |         } else if (/^#[a-f0-9]{3}$/i.test(c)) { | ||||||
|  |             r = parseInt(c.substring(1, 2)+c.substring(1, 2), 16); | ||||||
|  |             g = parseInt(c.substring(2, 3)+c.substring(2, 3), 16); | ||||||
|  |             b = parseInt(c.substring(3, 4)+c.substring(3, 4), 16); | ||||||
|  |         } else { | ||||||
|  |             return c; | ||||||
|  |         } | ||||||
|  |         var l = 0.3 * r/255 + 0.59 * g/255 + 0.11 * b/255 ; | ||||||
|  |         r = Math.max(0,r-50); | ||||||
|  |         g = Math.max(0,g-50); | ||||||
|  |         b = Math.max(0,b-50); | ||||||
|  |         var s = ((r<<16) + (g<<8) + b).toString(16); | ||||||
|  |         return '#'+'000000'.slice(0, 6-s.length)+s; | ||||||
|  |     } | ||||||
|  |  | ||||||
|     return { |     return { | ||||||
|         createObjectElement: buildMessageElement, |         createObjectElement: buildMessageElement, | ||||||
|         getMessageProperty: getMessageProperty, |         getMessageProperty: getMessageProperty, | ||||||
| @@ -1078,6 +1135,8 @@ RED.utils = (function() { | |||||||
|         parseContextKey: parseContextKey, |         parseContextKey: parseContextKey, | ||||||
|         createIconElement: createIconElement, |         createIconElement: createIconElement, | ||||||
|         sanitize: sanitize, |         sanitize: sanitize, | ||||||
|         renderMarkdown: renderMarkdown |         renderMarkdown: renderMarkdown, | ||||||
|  |         createNodeIcon: createNodeIcon, | ||||||
|  |         getDarkerColor: getDarkerColor | ||||||
|     } |     } | ||||||
| })(); | })(); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user