diff options
Diffstat (limited to 'public/javascripts/url.js')
-rw-r--r-- | public/javascripts/url.js | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/public/javascripts/url.js b/public/javascripts/url.js new file mode 100644 index 0000000..63e6081 --- /dev/null +++ b/public/javascripts/url.js @@ -0,0 +1,59 @@ +/* global USERS */ + +const EventEmitter = require('events') + +const self = new EventEmitter() + +self._getPageTitle = function (selectedUser) { + if (selectedUser == null) { + return `Metis Rooster` + } else { + return `Metis Rooster - ${selectedUser.value}` + } +} + +self._getPageURL = function (selectedUser) { + return `/${selectedUser.type}/${selectedUser.value}` +} + +self.push = function (selectedUser, push) { + if (push == null) push = true + const pageTitle = self._getPageTitle(selectedUser) + const pageURL = self._getPageURL(selectedUser) + if (push) { + window.history.pushState(selectedUser, pageTitle, pageURL) + } else { + window.history.replaceState(selectedUser, pageTitle, pageURL) + } +} + +self.update = function (selectedUser) { + document.title = self._getPageTitle(selectedUser) +} + +self.hasSelectedUser = function () { + const pageUrl = window.location.pathname + return /^\/s\/|^\/t\/|^\/r\/|^\/c\//.test(pageUrl) +} + +self.getSelectedUser = 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 |