From ece05d6ea3eabdd64c16dac009633c78fe337fc4 Mon Sep 17 00:00:00 2001 From: schneefux Date: Thu, 3 May 2018 08:55:22 +0200 Subject: Fix week prefetching --- src/index.ts | 61 ++++++++++++++++++++++++++++++------------------------------ 1 file changed, 30 insertions(+), 31 deletions(-) diff --git a/src/index.ts b/src/index.ts index ce1a70a..6de11de 100644 --- a/src/index.ts +++ b/src/index.ts @@ -6,42 +6,41 @@ import {SplusApi} from './core/SplusApi'; import {IEvent} from './core/IEvent'; import {ILecture} from './core/ILecture'; -const flatten = (array) => [].concat(...array); const range = (upper: number): number[] => Array.from(Array(upper), (x, i) => i) async function main(configCourse, configPrefetchWeeks, configFilter) { const baseDate = moment().startOf('week'); - const unfilteredLectureChunks: ILecture[][] = await BPromise.map(range(configPrefetchWeeks), - async week => await SplusApi.getData(configCourse, baseDate.weeks() + week) - ); - const lectures: ILecture[] = flatten(unfilteredLectureChunks).filter(configFilter); - - await BPromise.map(lectures, async (lec: ILecture, weeksAhead) => { - let beginDate = baseDate.clone(); - beginDate.add(moment.duration({ - days: lec.day + 1, // for moment: 1 = Monday - hours: lec.begin, - weeks: weeksAhead, - })); - - let endDate = baseDate.clone(); - endDate.add(moment.duration({ - days: lec.day + 1, - hours: lec.end, - weeks: weeksAhead, - })); - const event: IEvent = { - summary: lec.title, - description: lec.lecturer + (lec.info !== '' ? ' - ' : '') + lec.info, - location: lec.room, - start: beginDate.toDate(), - end: endDate.toDate(), - }; - - await config.sink.createEvent(event); - - console.log(lec.title, beginDate.toISOString(), endDate.toISOString()); + await BPromise.map(range(configPrefetchWeeks), async weeksAhead => { + const unfilteredLectures = await SplusApi.getData(configCourse, baseDate.weeks() + weeksAhead); + const lectures = unfilteredLectures.filter(configFilter); + + await BPromise.map(lectures, async lec => { + let beginDate = baseDate.clone(); + beginDate.add(moment.duration({ + days: lec.day + 1, // for moment: 1 = Monday + hours: lec.begin, + weeks: weeksAhead, + })); + + let endDate = baseDate.clone(); + endDate.add(moment.duration({ + days: lec.day + 1, + hours: lec.end, + weeks: weeksAhead, + })); + const event: IEvent = { + summary: lec.title, + description: lec.lecturer + (lec.info !== '' ? ' - ' : '') + lec.info, + location: lec.room, + start: beginDate.toDate(), + end: endDate.toDate(), + }; + + await config.sink.createEvent(event); + + console.log(lec.title, beginDate.toISOString(), endDate.toISOString()); + }); }); await config.sink.commit(); -- cgit v1.3.1