2014-09-20 10:26:09 +02:00
< script type = "text/x-red" data-template-name = "smooth" >
< div class = "form-row" >
2014-10-02 20:35:07 +02:00
< label for = "node-input-action" > < i class = "fa fa-bolt" > < / i > Action< / label >
< select id = "node-input-action" style = "width:60%; margin-right:5px;" >
2014-09-20 10:26:09 +02:00
< option value = "max" > Return the maximum value seen< / option >
< option value = "min" > Return the minimum value seen< / option >
2015-10-11 18:47:08 +02:00
< option value = "mean" > Return the mean value< / option >
< option value = "sd" > Return the standard deviation< / option >
2014-09-20 10:26:09 +02:00
< option value = "low" > Perform low pass filter< / option >
< option value = "high" > Perform high pass filter< / option >
< / select >
< / div >
< div class = "form-row" >
2014-10-02 20:35:07 +02:00
< label for = "node-input-count" > < / label >
2014-09-20 10:26:09 +02:00
< span id = "node-over" > over the most recent < / span >
2016-02-14 14:47:04 +01:00
< input type = "text" id = "node-input-count" placeholder = "10" style = "width:50px;" / >
< span id = "node-over2" > values< / span >
2014-09-20 10:26:09 +02:00
< / div >
< div class = "form-row" >
2016-02-14 14:47:04 +01:00
< label for = "node-input-round" > (optionally)< / label >
round to < input type = "text" id = "node-input-round" placeholder = "ignore" style = "width:50px;" / > decimal places
2014-09-20 10:26:09 +02:00
< / div >
< br / >
< div class = "form-row" >
2014-09-21 12:14:57 +02:00
< label for = "node-input-name" > < i class = "fa fa-tag" > < / i > Name< / label >
2014-09-20 10:26:09 +02:00
< input type = "text" id = "node-input-name" placeholder = "Name" >
< / div >
< div class = "form-tips" id = "node-tip" > Tip: This node ONLY works with numbers.< / div >
< / script >
< script type = "text/x-red" data-help-name = "smooth" >
< p > A simple node to provide various functions across several previous values, including max, min, mean, high and low pass filters.< / p >
< p > Max, Min and Mean work over a specified number of previous values.< / p >
< p > The High and Low pass filters use a smoothing factor. The higher the number the more the smoothing. E.g. a value of 10 is similar to an α of 0.1. It is analagous to an RC time constant - but there is no time component to this as the time is based on events arriving.< / p >
< p > < b > Note:< / b > This only operates on < b > numbers< / b > . Anything else will try to be made into a number and rejected if that fails.< / p >
< / script >
< script type = "text/javascript" >
RED.nodes.registerType('smooth', {
color: "#E2D96E",
category: 'function',
defaults: {
2016-02-14 14:47:04 +01:00
name: {value:""},
2014-09-20 10:26:09 +02:00
action: {value:"mean"},
2016-02-14 14:47:04 +01:00
count: {value:"10",required:true,validate:RED.validators.number()},
round: {value:""}
2014-09-20 10:26:09 +02:00
},
inputs: 1,
outputs: 1,
icon: "smooth.png",
label: function() {
return this.name || "smooth";
},
labelStyle: function() {
return this.name ? "node_label_italic" : "";
},
oneditprepare: function() {
$("#node-input-count").spinner({
2016-02-14 14:47:04 +01:00
min:1
});
$("#node-input-round").spinner({
2014-09-20 10:26:09 +02:00
});
$("#node-input-action").change( function() {
var a = $("#node-input-action").val();
if ((a === "high") || ( a === "low" )) {
$("#node-over").html("with a smoothing factor of ");
$("#node-over2").html("");
}
else {
$("#node-over").html("over the most recent ");
2016-02-14 14:47:04 +01:00
$("#node-over2").html(" values");
2014-09-20 10:26:09 +02:00
}
});
$("#node-input-action").change();
2016-02-14 14:47:04 +01:00
if ($("#node-input-round").val() === "true") {
$("#node-input-round").val(0);
}
2014-09-20 10:26:09 +02:00
}
});
< / script >