@@ -388,8 +388,8 @@ module.exports = function (RED) {
388
388
* @param {* } [opCallback] - callback function for getting getPropValue
389
389
* @returns {number } float property
390
390
*/
391
- getFloatProp ( _srcNode , msg , type , value , def , opCallback ) {
392
- // _srcNode.debug('getFloatProp type='+type+' value='+value);
391
+ getFloatProp ( _srcNode , msg , type , value , def , opCallback , noError ) {
392
+ _srcNode . debug ( 'getFloatProp type=' + type + ' value=' + value ) ;
393
393
let data ; // 'msg', 'flow', 'global', 'num', 'bin', 'env', 'jsonata'
394
394
if ( type === 'num' ) {
395
395
data = Number ( value ) ; // extra conversation to handle empty string as 0
@@ -404,10 +404,12 @@ module.exports = function (RED) {
404
404
data = this . getPropValue ( _srcNode , msg , { type, value, callback :opCallback } ) ;
405
405
}
406
406
if ( data === null || typeof data === 'undefined' ) {
407
+ if ( noError ) { return NaN ; }
407
408
throw new Error ( RED . _ ( 'errors.error' , { message : RED . _ ( 'errors.notEvaluableProperty' , { type, value} ) } ) ) ;
408
409
}
409
410
data = parseFloat ( data ) ;
410
411
if ( isNaN ( data ) ) {
412
+ if ( noError ) { return NaN ; }
411
413
throw new Error ( 'the value of ' + type + '.' + value + ' is not a valid Number!' ) ;
412
414
}
413
415
return data ;
@@ -440,7 +442,7 @@ module.exports = function (RED) {
440
442
let result = null ;
441
443
if ( data . type === null || data . type === 'none' || data . type === '' || ( typeof data . type === 'undefined' ) ) {
442
444
if ( data . value === '' || ( typeof data . value === 'undefined' ) ) {
443
- const offsetX = this . getFloatProp ( _srcNode , msg , data . offsetType , data . offset , 0 ) ;
445
+ const offsetX = this . getFloatProp ( _srcNode , msg , data . offsetType , data . offset , 0 , data . offsetCallback , data . noOffsetError ) ;
444
446
result = hlp . addOffset ( now , offsetX , data . multiplier ) ;
445
447
return hlp . getFormattedDateOut ( result , data . format , ( this . tzOffset === 0 ) , this . tzOffset ) ;
446
448
}
@@ -451,15 +453,15 @@ module.exports = function (RED) {
451
453
}
452
454
return Date . now ( ) ;
453
455
} else if ( data . type === 'dateSpecific' ) {
454
- const offsetX = this . getFloatProp ( _srcNode , msg , data . offsetType , data . offset , 0 ) ;
456
+ const offsetX = this . getFloatProp ( _srcNode , msg , data . offsetType , data . offset , 0 , data . offsetCallback , data . noOffsetError ) ;
455
457
result = hlp . addOffset ( now , offsetX , data . multiplier ) ;
456
458
return hlp . getFormattedDateOut ( result , data . format , ( this . tzOffset === 0 ) , this . tzOffset ) ;
457
459
} else if ( ( data . type === 'pdsTime' ) || ( data . type === 'pdmTime' ) ) {
458
460
if ( data . type === 'pdsTime' ) { // sun
459
- const offsetX = this . getFloatProp ( _srcNode , msg , data . offsetType , data . offset , 0 ) ;
461
+ const offsetX = this . getFloatProp ( _srcNode , msg , data . offsetType , data . offset , 0 , data . offsetCallback , data . noOffsetError ) ;
460
462
result = this . getSunTimeByName ( now , data . value , offsetX , data . multiplier , data . next , data . days ) ;
461
463
} else if ( data . type === 'pdmTime' ) { // moon
462
- const offsetX = this . getFloatProp ( _srcNode , msg , data . offsetType , data . offset , 0 ) ;
464
+ const offsetX = this . getFloatProp ( _srcNode , msg , data . offsetType , data . offset , 0 , data . offsetCallback , data . noOffsetError ) ;
463
465
result = this . getMoonTimeByName ( now , data . value , offsetX , data . multiplier , data . next , data . days ) ;
464
466
}
465
467
if ( result && result . value && ! result . error ) {
@@ -470,14 +472,14 @@ module.exports = function (RED) {
470
472
return Object . assign ( { } , this . getSunTimePrevNext ( now ) ) ;
471
473
} else if ( data . type === 'entered' || data . type === 'dateEntered' ) {
472
474
result = hlp . getDateOfText ( String ( data . value ) , ( this . tzOffset === 0 ) , this . tzOffset ) ;
473
- const offsetX = this . getFloatProp ( _srcNode , msg , data . offsetType , data . offset , 0 ) ;
475
+ const offsetX = this . getFloatProp ( _srcNode , msg , data . offsetType , data . offset , 0 , data . offsetCallback , data . noOffsetError ) ;
474
476
result = hlp . normalizeDate ( result , offsetX , data . multiplier , data . next , data . days ) ;
475
477
return hlp . getFormattedDateOut ( result , data . format , ( this . tzOffset === 0 ) , this . tzOffset ) ;
476
478
} else if ( data . type === 'dayOfMonth' ) {
477
479
result = new Date ( ) ;
478
480
result = hlp . getSpecialDayOfMonth ( result . getFullYear ( ) , result . getMonth ( ) , data . value ) ;
479
481
if ( result !== null && typeof result !== 'undefined' ) {
480
- const offsetX = this . getFloatProp ( _srcNode , msg , data . offsetType , data . offset , 0 ) ;
482
+ const offsetX = this . getFloatProp ( _srcNode , msg , data . offsetType , data . offset , 0 , data . offsetCallback , data . noOffsetError ) ;
481
483
result = hlp . normalizeDate ( result , offsetX , data . multiplier , data . next , data . days ) ;
482
484
return hlp . getFormattedDateOut ( result , data . format , ( this . tzOffset === 0 ) , this . tzOffset ) ;
483
485
}
@@ -515,7 +517,7 @@ module.exports = function (RED) {
515
517
* @returns {timePropResultType } value of the type input
516
518
*/
517
519
getTimeProp ( _srcNode , msg , data ) {
518
- // _srcNode.debug(`getTimeProp data=${util.inspect(data, { colors: true, compact: 10, breakLength: Infinity })} tzOffset=${this.tzOffset}`);
520
+ _srcNode . debug ( `getTimeProp data=${ util . inspect ( data , { colors : true , compact : 10 , breakLength : Infinity } ) } tzOffset=${ this . tzOffset } ` ) ;
519
521
let result = {
520
522
value : null ,
521
523
error : null ,
@@ -535,44 +537,44 @@ module.exports = function (RED) {
535
537
}
536
538
result . fix = true ;
537
539
} else if ( data . type === 'dateSpecific' ) {
538
- const offsetX = this . getFloatProp ( _srcNode , msg , data . offsetType , data . offset , 0 ) ;
540
+ const offsetX = this . getFloatProp ( _srcNode , msg , data . offsetType , data . offset , 0 , data . offsetCallback , data . noOffsetError ) ;
539
541
result . value = hlp . normalizeDate ( now , offsetX , data . multiplier , data . next , data . days ) ;
540
542
if ( this . tzOffset ) {
541
543
result . value = hlp . convertDateTimeZone ( result . value ) ;
542
544
}
543
545
result . fix = true ;
544
546
} else if ( data . type === 'dayOfMonth' ) {
545
547
result . value = hlp . getSpecialDayOfMonth ( now . getFullYear ( ) , now . getMonth ( ) , data . value ) ;
546
- const offsetX = this . getFloatProp ( _srcNode , msg , data . offsetType , data . offset , 0 ) ;
548
+ const offsetX = this . getFloatProp ( _srcNode , msg , data . offsetType , data . offset , 0 , data . offsetCallback , data . noOffsetError ) ;
547
549
result . value = hlp . normalizeDate ( result . value , offsetX , data . multiplier , data . next , data . days ) ;
548
550
if ( this . tzOffset ) {
549
551
result . value = hlp . convertDateTimeZone ( result . value ) ;
550
552
}
551
553
} else if ( data . type === 'entered' ) {
552
554
result . value = hlp . getTimeOfText ( String ( data . value ) , now , ( this . tzOffset === 0 ) , this . tzOffset ) ;
553
555
if ( result . value !== null ) {
554
- const offsetX = this . getFloatProp ( _srcNode , msg , data . offsetType , data . offset , 0 ) ;
556
+ const offsetX = this . getFloatProp ( _srcNode , msg , data . offsetType , data . offset , 0 , data . offsetCallback , data . noOffsetError ) ;
555
557
result . value = hlp . normalizeDate ( result . value , offsetX , data . multiplier , data . next , data . days ) ;
556
558
}
557
559
result . fix = true ;
558
560
} else if ( data . type === 'dateEntered' ) {
559
561
result . value = hlp . getDateOfText ( String ( data . value ) , ( this . tzOffset === 0 ) , this . tzOffset ) ;
560
562
if ( result . value !== null ) {
561
- const offsetX = this . getFloatProp ( _srcNode , msg , data . offsetType , data . offset , 0 ) ;
563
+ const offsetX = this . getFloatProp ( _srcNode , msg , data . offsetType , data . offset , 0 , data . offsetCallback , data . noOffsetError ) ;
562
564
result . value = hlp . normalizeDate ( result . value , offsetX , data . multiplier , data . next , data . days ) ;
563
565
}
564
566
result . fix = true ;
565
567
} else if ( data . type === 'pdsTime' ) {
566
568
// sun
567
- const offsetX = this . getFloatProp ( _srcNode , msg , data . offsetType , data . offset , 0 ) ;
569
+ const offsetX = this . getFloatProp ( _srcNode , msg , data . offsetType , data . offset , 0 , data . offsetCallback , data . noOffsetError ) ;
568
570
result = this . getSunTimeByName ( now , data . value , offsetX , data . multiplier , data . next , data . days ) ;
569
571
if ( this . tzOffset ) {
570
572
result . value = hlp . convertDateTimeZone ( result . value , this . tzOffset ) ;
571
573
}
572
574
result . fix = true ;
573
575
} else if ( data . type === 'pdmTime' ) {
574
576
// moon
575
- const offsetX = this . getFloatProp ( _srcNode , msg , data . offsetType , data . offset , 0 ) ;
577
+ const offsetX = this . getFloatProp ( _srcNode , msg , data . offsetType , data . offset , 0 , data . offsetCallback , data . noOffsetError ) ;
576
578
result = this . getMoonTimeByName ( now , data . value , offsetX , data . multiplier , data . next , data . days ) ;
577
579
if ( this . tzOffset ) {
578
580
result . value = hlp . convertDateTimeZone ( result . value , this . tzOffset ) ;
@@ -587,7 +589,7 @@ module.exports = function (RED) {
587
589
} else {
588
590
result . value = hlp . getDateOfText ( data . value , ( this . tzOffset === 0 ) , this . tzOffset ) ;
589
591
}
590
- const offsetX = this . getFloatProp ( _srcNode , msg , data . offsetType , data . offset , 0 ) ;
592
+ const offsetX = this . getFloatProp ( _srcNode , msg , data . offsetType , data . offset , 0 , data . offsetCallback , data . noOffsetError ) ;
591
593
result . value = hlp . normalizeDate ( result . value , offsetX , data . multiplier , data . next , data . days ) ;
592
594
if ( this . tzOffset ) {
593
595
result . value = hlp . convertDateTimeZone ( result . value , this . tzOffset ) ;
@@ -602,7 +604,7 @@ module.exports = function (RED) {
602
604
} else {
603
605
result . value = hlp . getDateOfText ( res , ( this . tzOffset === 0 ) , this . tzOffset ) ;
604
606
}
605
- const offsetX = this . getFloatProp ( _srcNode , msg , data . offsetType , data . offset , 0 ) ;
607
+ const offsetX = this . getFloatProp ( _srcNode , msg , data . offsetType , data . offset , 0 , data . offsetCallback , data . noOffsetError ) ;
606
608
result . value = hlp . normalizeDate ( result . value , offsetX , data . multiplier , data . next , data . days ) ;
607
609
if ( this . tzOffset ) {
608
610
result . value = hlp . convertDateTimeZone ( result . value , this . tzOffset ) ;
@@ -1095,7 +1097,7 @@ module.exports = function (RED) {
1095
1097
} ) ;
1096
1098
1097
1099
RED . httpAdmin . get ( '/sun-position/data' , RED . auth . needsPermission ( 'sun-position.read' ) , ( req , res ) => {
1098
- // console.log('RED.httpAdmin.get - result for getTimeData ', req.query.config);
1100
+ // console.log('RED.httpAdmin.get', req.query.config);
1099
1101
if ( req . query . config && req . query . config !== '_ADD_' ) {
1100
1102
const posConfig = RED . nodes . getNode ( req . query . config ) ;
1101
1103
if ( ! posConfig ) {
@@ -1104,11 +1106,18 @@ module.exports = function (RED) {
1104
1106
} ) ) ;
1105
1107
return ;
1106
1108
}
1109
+ let scrNode ;
1110
+ if ( req . query . nodeId ) {
1111
+ scrNode = RED . nodes . getNode ( req . query . nodeId ) ;
1112
+ }
1113
+ if ( ! scrNode ) {
1114
+ scrNode = posConfig ;
1115
+ }
1107
1116
let obj = { } ;
1108
1117
switch ( req . query . kind ) {
1109
1118
case 'getTimeData' : {
1110
1119
try {
1111
- obj = posConfig . getTimeProp ( posConfig , undefined , req . query ) ; // req.query.type, req.query.value, req.query.offsetType, req.query.offset, req.query.multiplier, req.query.next, req.query.days);
1120
+ obj = posConfig . getTimeProp ( scrNode , undefined , req . query ) ; // req.query.type, req.query.value, req.query.offsetType, req.query.offset, req.query.multiplier, req.query.next, req.query.days);
1112
1121
} catch ( err ) {
1113
1122
obj . value = NaN ;
1114
1123
obj . error = err . message ;
@@ -1119,7 +1128,7 @@ module.exports = function (RED) {
1119
1128
}
1120
1129
case 'getOutDataData' : {
1121
1130
try {
1122
- obj = posConfig . getOutDataProp ( posConfig , undefined , req . query ) ; // req.query.type, req.query.value, req.query.format, req.query.offset, req.query.offsetType, req.query.multiplier, req.query.next, req.query.days);
1131
+ obj = posConfig . getOutDataProp ( scrNode , undefined , req . query ) ; // req.query.type, req.query.value, req.query.format, req.query.offset, req.query.offsetType, req.query.multiplier, req.query.next, req.query.days);
1123
1132
} catch ( err ) {
1124
1133
obj . value = NaN ;
1125
1134
obj . error = err . message ;
0 commit comments