aboutsummaryrefslogtreecommitdiff
path: root/public/javascripts/url.js
diff options
context:
space:
mode:
authorNoah Loomans <noahloomans@gmail.com>2017-01-29 22:08:16 +0100
committerNoah Loomans <noahloomans@gmail.com>2017-01-29 22:08:16 +0100
commitacbdba98a7ab37e76c856cc751b78e2a974036b9 (patch)
tree7081e85fe729a2a76c6d086a2d5dcac483cb5b5e /public/javascripts/url.js
parent29ea424009be3bd8561e74587b651c1c44bf2f7e (diff)
Update the page URL when selecting user
When you select a user and press the back button of your browser, it will exit out of schedule page instead of going back inside of the app. This is unexpected behavior. This commit will update the URL using history.pushState() when a user is selected. Allowing the browser navigation buttons to nicely integrate with the schedule.
Diffstat (limited to 'public/javascripts/url.js')
-rw-r--r--public/javascripts/url.js38
1 files changed, 38 insertions, 0 deletions
diff --git a/public/javascripts/url.js b/public/javascripts/url.js
new file mode 100644
index 0000000..a5877c6
--- /dev/null
+++ b/public/javascripts/url.js
@@ -0,0 +1,38 @@
+/* global USERS */
+
+const EventEmitter = require('events')
+
+const self = new EventEmitter()
+
+self.update = function (selectedItem) {
+ const pageTitle = `Metis Rooster - ${selectedItem.value}`
+ const pageUrl = `/${selectedItem.type}/${selectedItem.value}`
+ window.history.pushState(selectedItem, pageTitle, pageUrl)
+}
+
+self.hasSelectedItem = function () {
+ const pageUrl = window.location.pathname
+ return /^\/s\/|^\/t\/|^\/r\/|^\/c\//.test(pageUrl)
+}
+
+self.getSelectedItem = function () {
+ const pageUrl = window.location.pathname
+ const pageUrlData = pageUrl.split('/')
+ const type = pageUrlData[1]
+ const value = pageUrlData[2]
+
+ const user = USERS.filter(function (user) {
+ return user.type === type &&
+ user.value === value
+ })[0]
+
+ return user
+}
+
+self._handleUpdate = function (event) {
+ self.emit('update', event.state)
+}
+
+window.addEventListener('popstate', self._handleUpdate)
+
+module.exports = self