summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--server/api/configloader.js21
-rw-r--r--server/lib/eventhelper.js2
-rw-r--r--webapp/src/components/EventModuleEdit.vue52
3 files changed, 36 insertions, 39 deletions
diff --git a/server/api/configloader.js b/server/api/configloader.js
index 0e64dcf..6b69a49 100644
--- a/server/api/configloader.js
+++ b/server/api/configloader.js
@@ -115,36 +115,37 @@ noAuthRouter.get('/getconfig/:configId', (req, res) => {
function checkEventNow (times) {
var now = new Date()
+ var start = new Date(times.start)
+ var end = new Date(times.end)
if (!times.repetitive) {
- if (times.start * 1000 <= now && now < times.end * 1000) return true
+ if (start < now && now < end) return true
}
if (times.repetitive) {
- var startHourMinutes = times.startTime.split(':').map(x => parseInt(x, 10))
- var endHourMinutes = times.endTime.split(':').map(x => parseInt(x, 10))
- var startDate = new Date(times.startDate * 1000)
- var endDate = new Date(times.endDate * 1000)
+ var startSplit = times.start.split(' ')
+ var startHourMinutes = startSplit[1].split(':').map(x => parseInt(x, 10))
+ var endSplit = times.end.split(' ')
+ var endHourMinutes = endSplit[1].split(':').map(x => parseInt(x, 10))
+
var startAtDay = new Date()
var endAtDay = new Date()
var overnight = false
- startDate.setHours(startHourMinutes[0], startHourMinutes[1], 0, 0)
- endDate.setHours(endHourMinutes[0], endHourMinutes[1], 0, 0)
startAtDay.setHours(startHourMinutes[0], startHourMinutes[1], 0, 0)
endAtDay.setHours(endHourMinutes[0], endHourMinutes[1], 0, 0)
if (endAtDay > now && startAtDay > now && endAtDay < startAtDay) {
var yesterday = new Date(now)
yesterday.setDate(yesterday.getDate() - 1)
- if (checkEventInterval(startDate, yesterday, times.intervalType, times.interval)) {
+ if (checkEventInterval(start, yesterday, times.intervalType, times.interval)) {
startAtDay.setDate(startAtDay.getDate() - 1)
overnight = true
} else return false
} else if (endAtDay < now && startAtDay > now) endAtDay.setDate(endAtDay.getDate() + 1)
else if (endAtDay < now && startAtDay < now && endAtDay < startAtDay) endAtDay.setDate(endAtDay.getDate() + 1)
- if (!(times.monthMap[now.getMonth()] && (overnight ? times.dayMap[((yesterday.getDay() + 6) % 7)] : times.dayMap[((now.getDay() + 6) % 7)]) && startDate <= now && now < endDate && startAtDay <= now && now < endAtDay)) return false
+ if (!(times.monthMap[now.getMonth()] && (overnight ? times.dayMap[((yesterday.getDay() + 6) % 7)] : times.dayMap[((now.getDay() + 6) % 7)]) && start < now && now < end && startAtDay <= now && now < endAtDay)) return false
- return (overnight ? true : checkEventInterval(startDate, now, times.intervalType, times.interval))
+ return (overnight ? true : checkEventInterval(start, now, times.intervalType, times.interval))
}
return false
}
diff --git a/server/lib/eventhelper.js b/server/lib/eventhelper.js
index 005f551..46213e6 100644
--- a/server/lib/eventhelper.js
+++ b/server/lib/eventhelper.js
@@ -17,7 +17,7 @@ const rruleWeekdays = [RRule.MO, RRule.TU, RRule.WE, RRule.TH, RRule.FR, RRule.S
class Schedule {
constructor (event) {
const splitStart = event.start.split(' ')
- const splitStartTime = splitStart.split(':')
+ const splitStartTime = splitStart[1].split(':')
const rule = {
dtstart: new Date(event.start + 'Z'),
until: new Date(event.start + 'Z'),
diff --git a/webapp/src/components/EventModuleEdit.vue b/webapp/src/components/EventModuleEdit.vue
index 207b378..b2c1f8a 100644
--- a/webapp/src/components/EventModuleEdit.vue
+++ b/webapp/src/components/EventModuleEdit.vue
@@ -476,22 +476,24 @@ export default {
this.times = value.info.times ? JSON.parse(value.info.times) : {}
this.repetitiveEvent = this.times.repetitive || false
+ var start
+ var end
if (this.repetitiveEvent) {
// edit of repetitive event
- this.startDate = new Date(this.times.startDate * 1000)
- this.startDate = this.formatDate(this.startDate, { time: false })
- this.endDate = new Date(this.times.endDate * 1000)
- this.endDate = this.formatDate(this.endDate, { time: false })
- this.startTime = this.times.startTime
- this.endTime = this.times.endTime
+ start = this.times.start.split(' ')
+ end = this.times.end.split(' ')
+ this.startDate = start[0]
+ this.endDate = end[0]
+ this.startTime = start[1]
+ this.endTime = end[1]
} else if (value.info.times) {
// edit of non repetitive event
- var start = new Date(this.times.start * 1000)
- var end = new Date(this.times.end * 1000)
- this.startDate = this.formatDate(start, { time: false })
- this.endDate = this.formatDate(end, { time: false })
- this.startTime = this.formatDate(start, { date: false, seconds: false })
- this.endTime = this.formatDate(end, { date: false, seconds: false })
+ start = this.times.start.split(' ')
+ end = this.times.end.split(' ')
+ this.startDate = start[0]
+ this.endDate = end[0]
+ this.startTime = start[1]
+ this.endTime = end[1]
} else {
// create new event
this.startDate = this.formatDate(new Date(), { time: false })
@@ -561,33 +563,27 @@ export default {
async submit (event) {
if (this.$refs.form.validate()) {
// Build times object
+ var start
+ var end
if (this.repetitiveEvent) {
- var startD = new Date(this.startDate)
- var endD = new Date(this.endDate)
+ start = this.startDate + ' ' + this.startTime
+ end = this.endDate + ' ' + this.endTime
this.times = {
'repetitive': true,
- 'startDate': (startD.getTime() / 1000),
- 'endDate': (endD.getTime() / 1000),
- 'startTime': this.startTime,
- 'endTime': this.endTime,
+ 'start': start,
+ 'end': end,
'dayMap': this.dayMap,
'monthMap': this.monthMap,
'interval': this.interval,
'intervalType': this.intervalType
}
} else {
- var start = new Date(this.startDate)
- var startSplit = this.startTime.split(':')
- start.setHours(startSplit[0])
- start.setMinutes(startSplit[1])
- var end = new Date(this.endDate)
- var endSplit = this.endTime.split(':')
- end.setHours(endSplit[0])
- end.setMinutes(endSplit[1])
+ start = this.startDate + ' ' + this.startTime
+ end = this.endDate + ' ' + this.endTime
this.times = {
'repetitive': false,
- 'start': (start.getTime() / 1000),
- 'end': (end.getTime() / 1000)
+ 'start': start,
+ 'end': end
}
}
await this.loadChilds()