mirror of
https://github.com/node-red/node-red.git
synced 2023-10-10 13:36:53 +02:00
Add 'previous value' option to Switch node
This commit is contained in:
parent
392fd6fed3
commit
81f082825d
@ -45,6 +45,7 @@
|
|||||||
"minutes": "minutes",
|
"minutes": "minutes",
|
||||||
"hours": "hours",
|
"hours": "hours",
|
||||||
"between": "between",
|
"between": "between",
|
||||||
|
"previous": "previous value",
|
||||||
"at": "at",
|
"at": "at",
|
||||||
"and": "and",
|
"and": "and",
|
||||||
"every": "every",
|
"every": "every",
|
||||||
|
@ -66,6 +66,8 @@
|
|||||||
},
|
},
|
||||||
oneditprepare: function() {
|
oneditprepare: function() {
|
||||||
var node = this;
|
var node = this;
|
||||||
|
var previousValueType = {value:"prev",label:this._("inject.previous"),hasValue:false};
|
||||||
|
|
||||||
$("#node-input-property").typedInput({default:this.propertyType||'msg',types:['msg','flow','global']});
|
$("#node-input-property").typedInput({default:this.propertyType||'msg',types:['msg','flow','global']});
|
||||||
var operators = [
|
var operators = [
|
||||||
{v:"eq",t:"=="},
|
{v:"eq",t:"=="},
|
||||||
@ -129,10 +131,10 @@
|
|||||||
selectField.append($("<option></option>").val(operators[d].v).text(operators[d].t));
|
selectField.append($("<option></option>").val(operators[d].v).text(operators[d].t));
|
||||||
}
|
}
|
||||||
|
|
||||||
var valueField = $('<input/>',{class:"node-input-rule-value",type:"text",style:"margin-left: 5px; width: 145px;"}).appendTo(row).typedInput({default:'str',types:['msg','flow','global','str','num']});
|
var valueField = $('<input/>',{class:"node-input-rule-value",type:"text",style:"margin-left: 5px; width: 145px;"}).appendTo(row).typedInput({default:'str',types:['msg','flow','global','str','num',previousValueType]});
|
||||||
var btwnValueField = $('<input/>',{class:"node-input-rule-btwn-value",type:"text",style:"margin-left: 5px;"}).appendTo(row).typedInput({default:'num',types:['msg','flow','global','str','num']});
|
var btwnValueField = $('<input/>',{class:"node-input-rule-btwn-value",type:"text",style:"margin-left: 5px;"}).appendTo(row).typedInput({default:'num',types:['msg','flow','global','str','num',previousValueType]});
|
||||||
var btwnAndLabel = $('<span/>',{class:"node-input-rule-btwn-label"}).text(" "+andLabel+" ").appendTo(row3);
|
var btwnAndLabel = $('<span/>',{class:"node-input-rule-btwn-label"}).text(" "+andLabel+" ").appendTo(row3);
|
||||||
var btwnValue2Field = $('<input/>',{class:"node-input-rule-btwn-value2",type:"text",style:"margin-left:2px;"}).appendTo(row3).typedInput({default:'num',types:['msg','flow','global','str','num']});
|
var btwnValue2Field = $('<input/>',{class:"node-input-rule-btwn-value2",type:"text",style:"margin-left:2px;"}).appendTo(row3).typedInput({default:'num',types:['msg','flow','global','str','num',previousValueType]});
|
||||||
|
|
||||||
var finalspan = $('<span/>',{style:"float: right;margin-right: 10px;"}).appendTo(row);
|
var finalspan = $('<span/>',{style:"float: right;margin-right: 10px;"}).appendTo(row);
|
||||||
finalspan.append(' → <span class="node-input-rule-index">'+i+'</span> ');
|
finalspan.append(' → <span class="node-input-rule-index">'+i+'</span> ');
|
||||||
|
@ -39,6 +39,7 @@ module.exports = function(RED) {
|
|||||||
this.property = n.property;
|
this.property = n.property;
|
||||||
this.propertyType = n.propertyType || "msg";
|
this.propertyType = n.propertyType || "msg";
|
||||||
this.checkall = n.checkall || "true";
|
this.checkall = n.checkall || "true";
|
||||||
|
this.previousValue = null;
|
||||||
var node = this;
|
var node = this;
|
||||||
for (var i=0; i<this.rules.length; i+=1) {
|
for (var i=0; i<this.rules.length; i+=1) {
|
||||||
var rule = this.rules[i];
|
var rule = this.rules[i];
|
||||||
@ -70,11 +71,19 @@ module.exports = function(RED) {
|
|||||||
for (var i=0; i<node.rules.length; i+=1) {
|
for (var i=0; i<node.rules.length; i+=1) {
|
||||||
var rule = node.rules[i];
|
var rule = node.rules[i];
|
||||||
var test = prop;
|
var test = prop;
|
||||||
var v1 = RED.util.evaluateNodeProperty(rule.v,rule.vt,node,msg);
|
var v1,v2;
|
||||||
var v2 = rule.v2;
|
if (rule.vt === 'prev') {
|
||||||
if (typeof v2 !== 'undefined') {
|
v1 = node.previousValue;
|
||||||
|
} else {
|
||||||
|
v1 = RED.util.evaluateNodeProperty(rule.v,rule.vt,node,msg);
|
||||||
|
}
|
||||||
|
v2 = rule.v2;
|
||||||
|
if (rule.v2t === 'prev') {
|
||||||
|
v2 = node.previousValue;
|
||||||
|
} else if (typeof v2 !== 'undefined') {
|
||||||
v2 = RED.util.evaluateNodeProperty(rule.v2,rule.v2t,node,msg);
|
v2 = RED.util.evaluateNodeProperty(rule.v2,rule.v2t,node,msg);
|
||||||
}
|
}
|
||||||
|
node.previousValue = prop;
|
||||||
if (rule.t == "else") { test = elseflag; elseflag = true; }
|
if (rule.t == "else") { test = elseflag; elseflag = true; }
|
||||||
if (operators[rule.t](test,v1,v2,rule.case)) {
|
if (operators[rule.t](test,v1,v2,rule.case)) {
|
||||||
onward.push(msg);
|
onward.push(msg);
|
||||||
|
Loading…
Reference in New Issue
Block a user