diff options
| author | Noah Loomans <noahloomans@gmail.com> | 2016-12-14 12:19:59 +0100 | 
|---|---|---|
| committer | Noah Loomans <noahloomans@gmail.com> | 2016-12-14 12:19:59 +0100 | 
| commit | e3f1a6a2c3534c3133f412f1b86f7398f3b4f40c (patch) | |
| tree | fa2e526929c83691fe6ee51b86f1c5a258c11c1d /public/javascripts/favorite.js | |
| parent | 746abfd1827bf7d6d51c231b5509d5f609e71f07 (diff) | |
add favorite
Diffstat (limited to 'public/javascripts/favorite.js')
| -rw-r--r-- | public/javascripts/favorite.js | 73 | 
1 files changed, 73 insertions, 0 deletions
| diff --git a/public/javascripts/favorite.js b/public/javascripts/favorite.js new file mode 100644 index 0000000..f10d954 --- /dev/null +++ b/public/javascripts/favorite.js @@ -0,0 +1,73 @@ +/* global USERS */ + +const EventEmitter = require('events') + +const self = new EventEmitter() + +self._nodes = { +  toggle: document.querySelector('.fav') +} + +self.get = function () { +  const localStorageUser = JSON.parse(window.localStorage.getItem('fav')) +  if (localStorageUser == null) return + +  const correctedUser = USERS.filter(user => +      user.type === localStorageUser.type && +      user.value === localStorageUser.value)[0] +  return correctedUser +} + +self.set = function (user) { +  window.localStorage.setItem('fav', JSON.stringify(user)) +  self._nodes.innerHTML = '' +} + +self.delete = function () { +  window.localStorage.removeItem('fav') +} + +self.updateDom = function (isFavorite) { +  if (isFavorite) { +    self._nodes.toggle.innerHTML = '' +  } else { +    self._nodes.toggle.innerHTML = '' +  } +} + +self.update = function (selectedUser) { +  const currentUser = self.get() + +  if (currentUser == null) { +    self.updateDom(false) +    return +  } + +  const isEqual = currentUser.type === selectedUser.type && +                  currentUser.index === selectedUser.index + +  self.updateDom(isEqual) +} + +self.toggle = function (selectedUser) { +  const currentUser = self.get() +  const isEqual = currentUser != null && +                  currentUser.type === selectedUser.type && +                  currentUser.index === selectedUser.index + +  if (isEqual) { +    self.delete() +    self.updateDom(false) +  } else { +    self.set(selectedUser) +    self.updateDom(true) +  } +} + +self._handleClick = function () { +  self.emit('click') +} + +self._nodes.toggle.addEventListener('click', self._handleClick) + +module.exports = self | 
