aboutsummaryrefslogtreecommitdiff
path: root/public/javascripts/schedule.js
diff options
context:
space:
mode:
authorBuildTools <Noah Loomans>2017-01-07 22:37:16 +0100
committerBuildTools <Noah Loomans>2017-01-07 22:37:16 +0100
commit549364fb691f7f092223e186033a8138c3ead2fd (patch)
treebec1b0bbc972a08ff69464853190044780eb667d /public/javascripts/schedule.js
parent4e8da42863406764a659a7337e774ad216d356c9 (diff)
parenta5238353ab86923bb3911e0bf2886ebcb53dfbd2 (diff)
Merge branch 'beta'
Diffstat (limited to 'public/javascripts/schedule.js')
-rw-r--r--public/javascripts/schedule.js71
1 files changed, 71 insertions, 0 deletions
diff --git a/public/javascripts/schedule.js b/public/javascripts/schedule.js
new file mode 100644
index 0000000..a080ace
--- /dev/null
+++ b/public/javascripts/schedule.js
@@ -0,0 +1,71 @@
+const EventEmitter = require('events')
+const leftPad = require('left-pad')
+const search = require('./search')
+
+const self = new EventEmitter()
+
+self._nodes = {
+ schedule: document.querySelector('#schedule')
+}
+
+self._parseMeetingpointHTML = function (htmlStr) {
+ const html = document.createElement('html')
+ html.innerHTML = htmlStr
+ const centerNode = html.querySelector('center')
+ return centerNode
+}
+
+self._handleLoad = function (event) {
+ const request = event.target
+ if (request.status < 200 || request.status >= 400) {
+ self._handleError(event)
+ return
+ }
+ const document = self._parseMeetingpointHTML(request.response)
+ self._removeChilds()
+ self._nodes.schedule.appendChild(document)
+ self._nodes.schedule.classList.remove('error')
+ self.emit('load')
+}
+
+self._handleError = function (event) {
+ const request = event.target
+ let error
+ if (request.status === 404) {
+ error = 'Sorry, er is (nog) geen rooster voor deze week.'
+ } else {
+ error = 'Sorry, er is iets mis gegaan tijdens het laden van deze week.'
+ }
+ self._removeChilds()
+ self._nodes.schedule.textContent = error
+ self._nodes.schedule.classList.add('error')
+ self.emit('load')
+}
+
+self._getURLOfUsers = function (week, type, index) {
+ const id = index + 1
+ return '//' + window.location.host + '/meetingpointProxy/Roosters-AL%2Fdoc%2Fdagroosters%2F' +
+ week + '%2F' + type + '%2F' + type + leftPad(id, 5, '0') + '.htm'
+}
+
+self._removeChilds = function () {
+ while (self._nodes.schedule.firstChild) {
+ self._nodes.schedule.removeChild(self._nodes.schedule.firstChild)
+ }
+}
+
+self.viewItem = function (week, selectedUser) {
+ const url = self._getURLOfUsers(week, selectedUser.type, selectedUser.index)
+
+ self._removeChilds()
+
+ const request = new window.XMLHttpRequest()
+ request.addEventListener('load', self._handleLoad)
+ request.addEventListener('error', self._handleError)
+ request.open('GET', url, true)
+ request.send()
+
+ search.updateDom(selectedUser)
+}
+
+module.exports = self