mirror of
https://github.com/node-red/node-red.git
synced 2025-12-27 07:31:07 +01:00
Merge pull request #5257 from node-red/fix-range-nodes-escapes
Fix rounding errors for range node when using float inputs and intege…
This commit is contained in:
@@ -64,6 +64,14 @@
|
||||
},
|
||||
inputs: 1,
|
||||
outputs: 1,
|
||||
inputLabels: function() { return this.minin + " - " + this.maxin },
|
||||
outputLabels: function(i) {
|
||||
var outie = this.minout + " - " + this.maxout
|
||||
if (this.action === "clamp") { outie = "[" + outie + "]" }
|
||||
if (this.action === "drop") { outie = "x" + outie + "x" }
|
||||
if (this.action === "roll") { outie = ">" + outie + ">" }
|
||||
return outie;
|
||||
},
|
||||
icon: "range.svg",
|
||||
label: function() {
|
||||
if (this.minout !== "" && this.maxout !== "") { return this.name||this.minout + " - " + this.maxout; }
|
||||
|
||||
@@ -24,6 +24,18 @@ module.exports = function(RED) {
|
||||
this.maxin = Number(n.maxin);
|
||||
this.minout = Number(n.minout);
|
||||
this.maxout = Number(n.maxout);
|
||||
if (this.minin > this.maxin) {
|
||||
let tmp = this.minin;
|
||||
this.minin = this.maxin;
|
||||
this.maxin = tmp;
|
||||
tmp = this.minout;
|
||||
this.minout = this.maxout;
|
||||
this.maxout = tmp;
|
||||
}
|
||||
if (this.round) {
|
||||
this.maxout = Math.floor(this.maxout);
|
||||
this.minout = Math.ceil(this.minout);
|
||||
}
|
||||
this.property = n.property||"payload";
|
||||
var node = this;
|
||||
|
||||
|
||||
@@ -106,6 +106,22 @@ describe('range Node', function() {
|
||||
genericRangeTest("clamp", 0, 10, 0, 1000, false, -1, 0, done);
|
||||
});
|
||||
|
||||
it('clamps numbers within a range - above max fp', function(done) {
|
||||
genericRangeTest("clamp", 0, 9.5, 0.5, 100.5, true, 13.1, 100, done);
|
||||
});
|
||||
|
||||
it('clamps numbers within a range - below min fp', function(done) {
|
||||
genericRangeTest("clamp", 0, 9.5, 0.3, 100.5, true, -13.1, 1, done);
|
||||
});
|
||||
|
||||
it('handles input range where max < min', function(done) {
|
||||
genericRangeTest("scale", 100, 0, 0, -100, false, 40, -60, done);
|
||||
});
|
||||
|
||||
it('handles input range where max < min', function(done) {
|
||||
genericRangeTest("scale", 100, 0, -100, 0, false, 10, -10, done);
|
||||
});
|
||||
|
||||
it('drops msg if in drop mode and input outside range', function(done) {
|
||||
var flow = [{"id":"rangeNode1","type":"range","minin":2,"maxin":8,"minout":20,"maxout":80,"action":"drop","round":true,"name":"rangeNode","wires":[["helperNode1"]]},
|
||||
{id:"helperNode1", type:"helper", wires:[]}];
|
||||
|
||||
Reference in New Issue
Block a user