Allow typedInput timestamp to specify format

This commit is contained in:
Nick O'Leary 2023-12-04 16:55:42 +00:00
parent 6802539ccc
commit 711545539f
No known key found for this signature in database
GPG Key ID: 4F2157149161A6C9
4 changed files with 40 additions and 4 deletions

View File

@ -408,7 +408,30 @@
} }
}, },
re: {value:"re",label:"regular expression",icon:"red/images/typedInput/re.svg"}, re: {value:"re",label:"regular expression",icon:"red/images/typedInput/re.svg"},
date: {value:"date",label:"timestamp",icon:"fa fa-clock-o",hasValue:false}, date: {
value:"date",
label:"timestamp",
icon:"fa fa-clock-o",
options:[
{
label: 'timestamp',
value: ''
},
{
label: 'ISO 8601',
value: 'iso'
},
{
value: 'YYYY-MM-DD HH:mm:ss'
},
{
value: 'YYYY-MM-DD'
},
{
value: 'HH:mm:ss'
},
]
},
jsonata: { jsonata: {
value: "jsonata", value: "jsonata",
label: "expression", label: "expression",

View File

@ -117,7 +117,7 @@ module.exports = function(RED) {
}); });
return return
} else if (rule.tot === 'date') { } else if (rule.tot === 'date') {
value = Date.now(); value = RED.util.evaluateNodeProperty(rule.to, rule.tot, node)
} else if (rule.tot === 'jsonata') { } else if (rule.tot === 'jsonata') {
RED.util.evaluateJSONataExpression(rule.to,msg, (err, value) => { RED.util.evaluateJSONataExpression(rule.to,msg, (err, value) => {
if (err) { if (err) {

View File

@ -636,7 +636,13 @@ function evaluateNodeProperty(value, type, node, msg, callback) {
} else if (type === 're') { } else if (type === 're') {
result = new RegExp(value); result = new RegExp(value);
} else if (type === 'date') { } else if (type === 'date') {
result = Date.now(); if (!value) {
result = Date.now();
} else if (value === 'iso') {
result = (new Date()).toISOString()
} else {
result = moment().format(value)
}
} else if (type === 'bin') { } else if (type === 'bin') {
var data = JSON.parse(value); var data = JSON.parse(value);
if (Array.isArray(data) || (typeof(data) === "string")) { if (Array.isArray(data) || (typeof(data) === "string")) {

View File

@ -379,10 +379,17 @@ describe("@node-red/util/util", function() {
result = util.evaluateNodeProperty('','bool'); result = util.evaluateNodeProperty('','bool');
result.should.be.false(); result.should.be.false();
}); });
it('returns date',function() { it('returns date - default format',function() {
var result = util.evaluateNodeProperty('','date'); var result = util.evaluateNodeProperty('','date');
(Date.now() - result).should.be.approximately(0,50); (Date.now() - result).should.be.approximately(0,50);
}); });
it('returns date - iso format',function() {
var result = util.evaluateNodeProperty('iso','date');
// 2023-12-04T16:51:04.429Z
/^\d\d\d\d-\d\d-\d\dT\d\d:\d\d:\d\d\.\d+Z$/.test(result).should.be.true()
});
it('returns bin', function () { it('returns bin', function () {
var result = util.evaluateNodeProperty('[1, 2]','bin'); var result = util.evaluateNodeProperty('[1, 2]','bin');
result[0].should.eql(1); result[0].should.eql(1);