From cc60c30509e5b084f2b0c01ba22a6e43a446887f Mon Sep 17 00:00:00 2001 From: Noah Loomans Date: Fri, 9 Dec 2016 23:02:52 +0100 Subject: add week selector --- public/javascripts/weekSelector.js | 60 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 public/javascripts/weekSelector.js (limited to 'public/javascripts/weekSelector.js') diff --git a/public/javascripts/weekSelector.js b/public/javascripts/weekSelector.js new file mode 100644 index 0000000..7ce0d68 --- /dev/null +++ b/public/javascripts/weekSelector.js @@ -0,0 +1,60 @@ +const EventEmitter = require('events') + +const self = {} + +self.events = new EventEmitter() + +self._nodes = { + prevButton: document.querySelectorAll('#week-selector button')[0], + nextButton: document.querySelectorAll('#week-selector button')[1], + currentWeekText: document.querySelector('#week-selector .current') +} + +self._weekOffset = 0 + +// 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. +self.getCurrentWeek = function (target) { + const dayNr = (target.getDay() + 6) % 7 + target.setDate(target.getDate() - dayNr + 3) + const firstThursday = target.valueOf() + target.setMonth(0, 1) + if (target.getDay() !== 4) { + target.setMonth(0, 1 + ((4 - target.getDay()) + 7) % 7) + } + + return 1 + Math.ceil((firstThursday - target) / 604800000) +} + +self.getSelectedWeek = function () { + const now = new Date() + const targetDate = new Date(now.getTime() + self._weekOffset * 604800 * 1000) + return self.getCurrentWeek(targetDate) +} + +self.updateCurrentWeek = function () { + const selectedWeekNumber = self.getSelectedWeek() + self._nodes.currentWeekText.textContent = `Week ${selectedWeekNumber}` + if (self.getCurrentWeek(new Date()) !== selectedWeekNumber) { + self._nodes.currentWeekText.classList.add('changed') + } else { + self._nodes.currentWeekText.classList.remove('changed') + } + self.events.emit('weekChanged', selectedWeekNumber) +} + +self._handlePrevButtonClick = function () { + self._weekOffset -= 1 + self.updateCurrentWeek() +} + +self._handleNextButtonClick = function () { + self._weekOffset += 1 + self.updateCurrentWeek() +} + +self._nodes.prevButton.addEventListener('click', self._handlePrevButtonClick) +self._nodes.nextButton.addEventListener('click', self._handleNextButtonClick) + +module.exports = self -- cgit v1.1 From 670976458b5375d27dc525f66b8faa3dc78e799b Mon Sep 17 00:00:00 2001 From: Noah Loomans Date: Wed, 14 Dec 2016 11:07:04 +0100 Subject: extend EventEmitter instaid of property --- public/javascripts/weekSelector.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) (limited to 'public/javascripts/weekSelector.js') diff --git a/public/javascripts/weekSelector.js b/public/javascripts/weekSelector.js index 7ce0d68..2a8bb62 100644 --- a/public/javascripts/weekSelector.js +++ b/public/javascripts/weekSelector.js @@ -1,8 +1,6 @@ const EventEmitter = require('events') -const self = {} - -self.events = new EventEmitter() +const self = new EventEmitter() self._nodes = { prevButton: document.querySelectorAll('#week-selector button')[0], @@ -41,7 +39,7 @@ self.updateCurrentWeek = function () { } else { self._nodes.currentWeekText.classList.remove('changed') } - self.events.emit('weekChanged', selectedWeekNumber) + self.emit('weekChanged', selectedWeekNumber) } self._handlePrevButtonClick = function () { -- cgit v1.1 From b2d6055bc83cb88fcce1df5bbc88dd20ca6cdc85 Mon Sep 17 00:00:00 2001 From: Noah Loomans Date: Thu, 15 Dec 2016 12:36:22 +0100 Subject: show human readable week format if available --- public/javascripts/weekSelector.js | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) (limited to 'public/javascripts/weekSelector.js') diff --git a/public/javascripts/weekSelector.js b/public/javascripts/weekSelector.js index 2a8bb62..1cf5b56 100644 --- a/public/javascripts/weekSelector.js +++ b/public/javascripts/weekSelector.js @@ -33,15 +33,36 @@ self.getSelectedWeek = function () { self.updateCurrentWeek = function () { const selectedWeekNumber = self.getSelectedWeek() - self._nodes.currentWeekText.textContent = `Week ${selectedWeekNumber}` if (self.getCurrentWeek(new Date()) !== selectedWeekNumber) { self._nodes.currentWeekText.classList.add('changed') } else { self._nodes.currentWeekText.classList.remove('changed') } + self.updateDom() self.emit('weekChanged', selectedWeekNumber) } +self.updateDom = function () { + const selectedWeekNumber = self.getSelectedWeek() + let humanReadableWeek = null + switch (self._weekOffset) { + case 0: + humanReadableWeek = 'Huidige week' + break + case 1: + humanReadableWeek = 'Volgende week' + break + case -1: + humanReadableWeek = 'Vorige week' + break + } + if (humanReadableWeek != null) { + self._nodes.currentWeekText.textContent = `${humanReadableWeek} • ${selectedWeekNumber}` + } else { + self._nodes.currentWeekText.textContent = `Week ${selectedWeekNumber}` + } +} + self._handlePrevButtonClick = function () { self._weekOffset -= 1 self.updateCurrentWeek() -- cgit v1.1 From 13ceee415eb81a4d72f63df013eca2a442865d81 Mon Sep 17 00:00:00 2001 From: Noah Loomans Date: Thu, 15 Dec 2016 12:46:44 +0100 Subject: use next week if sunday --- public/javascripts/weekSelector.js | 38 +++++++++++++++++++++++++++----------- 1 file changed, 27 insertions(+), 11 deletions(-) (limited to 'public/javascripts/weekSelector.js') diff --git a/public/javascripts/weekSelector.js b/public/javascripts/weekSelector.js index 1cf5b56..f0b00ad 100644 --- a/public/javascripts/weekSelector.js +++ b/public/javascripts/weekSelector.js @@ -27,7 +27,8 @@ self.getCurrentWeek = function (target) { self.getSelectedWeek = function () { const now = new Date() - const targetDate = new Date(now.getTime() + self._weekOffset * 604800 * 1000) + const targetDate = new Date(now.getTime() + + self._weekOffset * 604800 * 1000 + 86400 * 1000) return self.getCurrentWeek(targetDate) } @@ -44,17 +45,32 @@ self.updateCurrentWeek = function () { self.updateDom = function () { const selectedWeekNumber = self.getSelectedWeek() + const isSunday = new Date().getDay() === 0 let humanReadableWeek = null - switch (self._weekOffset) { - case 0: - humanReadableWeek = 'Huidige week' - break - case 1: - humanReadableWeek = 'Volgende week' - break - case -1: - humanReadableWeek = 'Vorige week' - break + if (isSunday) { + switch (self._weekOffset) { + case 0: + humanReadableWeek = 'Aanstaande week' + break + case 1: + humanReadableWeek = 'Volgende week' + break + case -1: + humanReadableWeek = 'Afgelopen week' + break + } + } else { + switch (self._weekOffset) { + case 0: + humanReadableWeek = 'Huidige week' + break + case 1: + humanReadableWeek = 'Volgende week' + break + case -1: + humanReadableWeek = 'Vorige week' + break + } } if (humanReadableWeek != null) { self._nodes.currentWeekText.textContent = `${humanReadableWeek} • ${selectedWeekNumber}` -- cgit v1.1 From 7ec11ecfc447c66582e16d4e832cbfc089139e29 Mon Sep 17 00:00:00 2001 From: Noah Loomans Date: Wed, 21 Dec 2016 11:55:02 +0100 Subject: fixed ie --- public/javascripts/weekSelector.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'public/javascripts/weekSelector.js') diff --git a/public/javascripts/weekSelector.js b/public/javascripts/weekSelector.js index f0b00ad..6dbf2c8 100644 --- a/public/javascripts/weekSelector.js +++ b/public/javascripts/weekSelector.js @@ -73,9 +73,9 @@ self.updateDom = function () { } } if (humanReadableWeek != null) { - self._nodes.currentWeekText.textContent = `${humanReadableWeek} • ${selectedWeekNumber}` + self._nodes.currentWeekText.textContent = humanReadableWeek + ' • ' + selectedWeekNumber } else { - self._nodes.currentWeekText.textContent = `Week ${selectedWeekNumber}` + self._nodes.currentWeekText.textContent = 'Week ' + selectedWeekNumber } } -- cgit v1.1