summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorUdo Walter2021-03-16 19:21:31 +0100
committerUdo Walter2021-03-16 19:21:31 +0100
commitca0765d3d2368f2bd31c0e00995b0565c0f85bfe (patch)
treef37a3ca9a67a5f6e08c38020670818d2ca881a07
parent[scheduler] schedule wake on lan for repetitive events (diff)
downloadbas-ca0765d3d2368f2bd31c0e00995b0565c0f85bfe.tar.gz
bas-ca0765d3d2368f2bd31c0e00995b0565c0f85bfe.tar.xz
bas-ca0765d3d2368f2bd31c0e00995b0565c0f85bfe.zip
[scheduler] bugfix
-rw-r--r--server/bin/scheduler.js2
-rw-r--r--server/lib/eventhelper.js26
2 files changed, 15 insertions, 13 deletions
diff --git a/server/bin/scheduler.js b/server/bin/scheduler.js
index e9adf1b..5a5e3a8 100644
--- a/server/bin/scheduler.js
+++ b/server/bin/scheduler.js
@@ -38,7 +38,7 @@ async function calcNextWake (id) {
var now = new Date()
if (!times.repetitive) {
- nextWake = new Date(times.start * 1000)
+ nextWake = new Date(times.start)
if (nextWake > now) {
runningTimeouts[id] = setTimeoutAt(function () {
wakeUpClients(id)
diff --git a/server/lib/eventhelper.js b/server/lib/eventhelper.js
index e5d54f3..e051620 100644
--- a/server/lib/eventhelper.js
+++ b/server/lib/eventhelper.js
@@ -16,29 +16,30 @@ const rruleWeekdays = [RRule.MO, RRule.TU, RRule.WE, RRule.TH, RRule.FR, RRule.S
class Schedule {
constructor (event) {
- const splitStart = event.start.split(' ')
+ const times = JSON.parse(event.times)
+ const splitStart = times.start.split(' ')
const splitStartTime = splitStart[1].split(':')
const rule = {
- dtstart: new Date(event.start + 'Z'),
- until: new Date(event.end + 'Z'),
- interval: event.interval,
+ dtstart: new Date(times.start + 'Z'),
+ until: new Date(times.end + 'Z'),
+ interval: times.interval,
byhour: [splitStartTime[0]],
byminute: [splitStartTime[1]],
- byweekday: event.dayMap.reduce((arr, v, i) => { if (v) arr.push(rruleWeekdays[i]); return arr }, []),
- bymonth: event.monthMap.reduce((arr, v, i) => { if (v) arr.push(i + 1); return arr }, [])
+ byweekday: times.dayMap.reduce((arr, v, i) => { if (v) arr.push(rruleWeekdays[i]); return arr }, []),
+ bymonth: times.monthMap.reduce((arr, v, i) => { if (v) arr.push(i + 1); return arr }, [])
}
- if (event.intervalType === 'month') rule.freq = RRule.MONTHLY
- else if (event.intervalType === 'week') rule.freq = RRule.WEEKLY
+ if (times.intervalType === 'month') rule.freq = RRule.MONTHLY
+ else if (times.intervalType === 'week') rule.freq = RRule.WEEKLY
else rule.freq = RRule.DAILY
this.rrule = new RRule(rule)
- this.endTime = event.end.split(' ')[1]
+ this.endTime = times.end.split(' ')[1]
}
next () {
const now = formatDate(new Date())
- return _fakeUTCToDate(this.rrule.after(now + 'Z'))
+ return _fakeUTCToDate(this.rrule.after(new Date(now + 'Z')))
}
isValid (date) {
@@ -55,9 +56,10 @@ class Schedule {
}
function isActive (event) {
+ const times = JSON.parse(event.times)
const now = formatDate(new Date())
- if (now < event.start || event.end < now) return false
- if (event.repetitive) return (new Schedule(event)).isValid(now)
+ if (now < times.start || times.end < now) return false
+ if (times.repetitive) return (new Schedule(event)).isValid(now)
else return true
}