diff --git a/server/tasks/timer.js b/server/tasks/timer.js index 964c675c..728cdc10 100644 --- a/server/tasks/timer.js +++ b/server/tasks/timer.js @@ -3,11 +3,32 @@ const schedule = require('node-schedule'); let job; -module.exports.startTimer = () => { - const rule = new schedule.RecurrenceRule(); - rule.minute = 0 +module.exports.startTimer = (timeLevel) => { + job = schedule.scheduleJob(getRuleFromLevel(timeLevel), () => this.runTask()); +} - job = schedule.scheduleJob(rule, () => this.runTask()); +const getRuleFromLevel = (level) => { + const rule = new schedule.RecurrenceRule(); + + switch (level) { + case 1: + rule.second = 0; + break; + case 2: + rule.minute = [0, 30] + break; + case 3: + rule.minute = 0; + break; + case 4: + rule.hour = [0, 3, 6, 9, 12, 15, 18, 21]; + break; + case 5: + rule.hour = [0, 6, 12, 18]; + break; + } + + return rule; } module.exports.runTask = async () => { @@ -20,7 +41,10 @@ module.exports.runTask = async () => { } module.exports.stopTimer = () => { - job.gracefulShutdown(); + if (job !== undefined) { + job.cancel(); + job = undefined; + } } module.exports.job = job; \ No newline at end of file