From 567a0f7a2f248cd25b8a5e0e357f9b10c16a9036 Mon Sep 17 00:00:00 2001 From: schneefux Date: Tue, 1 May 2018 20:26:07 +0200 Subject: Retrieve schedule for current week, add course config var (closes #3) --- src/index.ts | 34 +++++++++++++++------------------- 1 file changed, 15 insertions(+), 19 deletions(-) (limited to 'src/index.ts') diff --git a/src/index.ts b/src/index.ts index 95d3797..47bc00c 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,39 +1,35 @@ +import * as moment from 'moment'; import {SplusParser} from './core/SplusParser'; import {config} from './config'; import {IEvent} from './core/IEvent'; -function getMonday(date: Date) { - const day = date.getDay() || 7; - if (day !== 1) { - date.setHours(-24 * (day - 1)); - } - - return new Date(date.getFullYear(), date.getMonth(), date.getDate()); -} - -const baseDate = getMonday(new Date()); +const baseDate = moment().startOf('week'); -config.source.getData().then(async data => { +config.source.getData(baseDate.weeks()).then(async data => { const lectures = new SplusParser(data.toString()).getLectures(config.lectureFilter); for (let i = 0; i < lectures.length; i++) { const lec = lectures[i]; - let beginDate = new Date(baseDate); - beginDate.setDate(beginDate.getDate() + lec.day); - beginDate.setMinutes(beginDate.getMinutes() + lec.begin * 60); + let beginDate = baseDate.clone(); + beginDate.add(moment.duration({ + days: lec.day + 1, // for moment: 1 = Monday + hours: lec.begin, + })); - let endDate = new Date(baseDate); - endDate.setDate(endDate.getDate() + lec.day); - endDate.setMinutes(endDate.getMinutes() + lec.end * 60); + let endDate = baseDate.clone(); + endDate.add(moment.duration({ + days: lec.day + 1, + hours: lec.end, + })); const event: IEvent = { summary: lec.title, description: lec.lecturer + (lec.info !== '' ? ' - ' : '') + lec.info, location: lec.room, - start: beginDate, - end: endDate + start: beginDate.toDate(), + end: endDate.toDate(), }; await config.sink.createEvent(event); -- cgit v1.3.1