node-red-node-random
Advanced tools
Comparing version 0.2.0 to 0.3.0
{ | ||
"name" : "node-red-node-random", | ||
"version" : "0.2.0", | ||
"version" : "0.3.0", | ||
"description" : "A Node-RED node that when triggered generates a random number between two values.", | ||
@@ -22,3 +22,6 @@ "dependencies" : { | ||
"url": "http://nodered.org" | ||
} | ||
}, | ||
"contributors": [ | ||
{"name": "@zenofmud"} | ||
] | ||
} |
@@ -6,17 +6,69 @@ | ||
RED.nodes.createNode(this,n); | ||
this.low = Number(n.low || 1); | ||
this.high = Number(n.high || 10); | ||
this.low = n.low | ||
this.high = n.high | ||
this.inte = n.inte || false; | ||
this.property = n.property||"payload"; | ||
var node = this; | ||
var tmp = {}; | ||
this.on("input", function(msg) { | ||
var value; | ||
if (node.inte == "true" || node.inte === true) { | ||
value = Math.round(Math.random() * (node.high - node.low + 1) + node.low - 0.5); | ||
} | ||
else { | ||
value = Math.random() * (node.high - node.low) + node.low; | ||
} | ||
RED.util.setMessageProperty(msg,node.property,value); | ||
node.send(msg); | ||
tmp.low = 1 // set this as the default low value | ||
tmp.low_e = "" | ||
if (node.low) { // if the the node has a value use it | ||
tmp.low = node.low | ||
} else if ('from' in msg) { // else see if a 'from' is in the msg | ||
if (Number(msg.from)) { // if it is, and is a number, use it | ||
tmp.low = Number(msg.from); | ||
} else { // otherwise setup NaN error | ||
tmp.low = NaN; | ||
tmp.low_e = " From: " + msg.from; // setup to show bad incoming msg.from | ||
} | ||
} | ||
tmp.high = 10 // set this as the default high value | ||
tmp.high_e = ""; | ||
if (node.high) { // if the the node has a value use it | ||
tmp.high = node.high | ||
} else if ('to' in msg) { // else see if a 'to' is in the msg | ||
if (Number(msg.to)) { // if it is, and is a number, use it | ||
tmp.high = Number(msg.to); | ||
} else { // otherwise setup NaN error | ||
tmp.high = NaN | ||
tmp.high_e = " To: " + msg.to // setup to show bad incoming msg.to | ||
} | ||
} | ||
// if tmp.low or high are not numbers, send an error msg with bad values | ||
if ( (isNaN(tmp.low)) || (isNaN(tmp.high)) ) { | ||
this.error("Random: one of the input values is not a number. " + tmp.low_e + tmp.high_e); | ||
} else { | ||
// at this point we have valid values so now to generate the random number! | ||
// flip the values if low > high so random will work | ||
var value = 0; | ||
if (tmp.low > tmp.high) { | ||
value = tmp.low | ||
tmp.low = tmp.high | ||
tmp.high = value | ||
} | ||
// if returning an integer, do a math.ceil() on the low value and a | ||
// Math.floor()high value before generate the random number. This must be | ||
// done to insure the rounding doesn't round up if using something like 4.7 | ||
// which would end up with 5 | ||
if ( (node.inte == "true") || (node.inte === true) ) { | ||
tmp.low = Math.ceil(tmp.low); | ||
tmp.high = Math.floor(tmp.high); | ||
// use this to round integers | ||
value = Math.round(Math.random() * (tmp.high - tmp.low + 1) + tmp.low - 0.5); | ||
} else { | ||
// use this to round floats | ||
value = (Math.random() * (tmp.high - tmp.low)) + tmp.low; | ||
} | ||
RED.util.setMessageProperty(msg,node.property,value); | ||
node.send(msg); | ||
} | ||
}); | ||
@@ -23,0 +75,0 @@ } |
@@ -22,2 +22,4 @@ # node-red-node-random | ||
You can dynamically pass in the 'From' and 'To' values to the node using msg.to and/or msg.from. **NOTE:** hard coded values in the node **always take precedence**. | ||
**Note:** This returns numbers - objects of type **number**. |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
10569
93
25