aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/getURLOfUsers.js45
1 files changed, 45 insertions, 0 deletions
diff --git a/lib/getURLOfUsers.js b/lib/getURLOfUsers.js
new file mode 100644
index 0000000..8590ee4
--- /dev/null
+++ b/lib/getURLOfUsers.js
@@ -0,0 +1,45 @@
+const leftPad = require('left-pad')
+
+// copied from http://www.meetingpointmco.nl/Roosters-AL/doc/dagroosters/untisscripts.js,
+// were using the same code as they do to be sure that we always get the same
+// week number.
+function getWeek () {
+ // Create a copy of this date object
+ var target = new Date()
+
+ // ISO week date weeks start on monday
+ // so correct the day number
+ var dayNr = (target.getDay() + 6) % 7
+
+ // ISO 8601 states that week 1 is the week
+ // with the first thursday of that year.
+ // Set the target date to the thursday in the target week
+ target.setDate(target.getDate() - dayNr + 3)
+
+ // Store the millisecond value of the target date
+ var firstThursday = target.valueOf()
+
+ // Set the target to the first thursday of the year
+ // First set the target to january first
+ target.setMonth(0, 1)
+ // Not a thursday? Correct the date to the next thursday
+ if (target.getDay() !== 4) {
+ target.setMonth(0, 1 + ((4 - target.getDay()) + 7) % 7)
+ }
+
+ // The weeknumber is the number of weeks between the
+ // first thursday of the year and the thursday in the target week
+ return 1 + Math.ceil((firstThursday - target) / 604800000) // 604800000 = 7 * 24 * 3600 * 1000
+}
+
+function getURLOfUsers (weekOffset, type, id) {
+ return `http://www.meetingpointmco.nl/Roosters-AL/doc/dagroosters/` +
+ `${getWeek() + weekOffset}/${type}/${type}${leftPad(id, 5, '0')}.htm`
+}
+
+module.exports = getURLOfUsers
+
+module.exports.CLASS = 'c'
+module.exports.TEACHERS = 't'
+module.exports.ROOMS = 'r'
+module.exports.STUDENTS = 's'