UNPKG

node-red-contrib-ical-events

Version:
1 lines 2.39 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var cron_1=require("cron"),NodeCache=require("node-cache"),helper_1=require("./helper"),parser=require("cron-parser");module.exports=function(e){function t(e,t){var r="<span>",a=new Date,n=new Date,o=new Date;a.setHours(0,0,0,0),n.setDate(a.getDate()+1),n.setHours(0,0,0,0),o.setDate(a.getDate()+2),o.setHours(0,0,0,0);for(var s=0;s<e.length;s++){r&&(r+="<br/>\n");var i=e[s].summary&&e[s].summary.val?e[s].summary.val:e[s].summary;r+="".concat(e[s].date," ").concat(i).trim()}return r+="</span>"}e.nodes.registerType("ical-upcoming",function(r){e.nodes.createNode(this,r);var a=this;a.cache=new NodeCache,a.red=e,a.msg={},a.on("input",function(n,o,s){a.msg=e.util.cloneMessage(n),o=o||function(){a.send.apply(a,arguments)},a.config=(0,helper_1.getConfig)(e.nodes.getNode(r.confignode),e,r,n),function(r,a,n,o,s){r.job&&r.job.running?r.status({fill:"green",shape:"dot",text:"next check: ".concat(r.job.nextDate().toISOString())}):r.status({}),r.datesArray=[],(0,helper_1.getICal)(r,e,s).then(function(e){r.datesArray=e||[];var a=0,s=0,i=new Date;i.setHours(0,0,0,0);for(var c=new Date(i.getTime()+864e5),u=new Date(c.getTime()+864e5),m=0;m<r.datesArray.length;m++){var g=new Date(r.datesArray[m].eventStart),d=new Date(r.datesArray[m].eventEnd);d.getTime()>i.getTime()&&g.getTime()<c.getTime()&&a++,d.getTime()>c.getTime()&&g.getTime()<u.getTime()&&s++,r.datesArray[m].on=g<=i&&d>=i}(n=n||function(){r.send.apply(r,arguments)})(Object.assign(r.msg,{today:a,tomorrow:s,total:r.datesArray.length,htmlTable:t(r.datesArray,r.config),payload:r.datesArray})),o&&o()}).catch(function(e){r.status({fill:"red",shape:"ring",text:e.message}),n({error:e}),o?o(e):r.error(e,a)})}(a,n,o,s,r)});try{var n="";if(r.timeout&&""!==r.timeout&&parseInt(r.timeout)>0&&r.timeoutUnits&&""!==r.timeoutUnits)switch(r.timeoutUnits){case"seconds":n="*/".concat(r.timeout," * * * * *");break;case"minutes":n="0 */".concat(r.timeout," * * * *");break;case"hours":n="0 0 */".concat(r.timeout," * * *");break;case"days":n="0 0 0 */".concat(r.timeout," * *")}r.cron&&""!==r.cron&&(parser.parseExpression(r.cron),n=r.cron),""!==n&&(a.job=new cron_1.CronJob(n,function(){a.emit("input",{})},null,!0),a.on("close",function(){a.job.stop(),a.debug("cron stopped")}))}catch(e){a.error("Error: "+e.message),a.status({fill:"red",shape:"ring",text:e.message})}})};