From e3f1a6a2c3534c3133f412f1b86f7398f3b4f40c Mon Sep 17 00:00:00 2001 From: Noah Loomans Date: Wed, 14 Dec 2016 12:19:59 +0100 Subject: add favorite --- public/javascripts/favorite.js | 73 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 public/javascripts/favorite.js (limited to 'public/javascripts/favorite.js') 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 -- cgit v1.1 From d90eb26e864a4d6be73986c727b8c14b4e215f8d Mon Sep 17 00:00:00 2001 From: Noah Loomans Date: Wed, 14 Dec 2016 13:19:40 +0100 Subject: add compatibility old version localstorrage --- public/javascripts/favorite.js | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) (limited to 'public/javascripts/favorite.js') diff --git a/public/javascripts/favorite.js b/public/javascripts/favorite.js index f10d954..8f48dc5 100644 --- a/public/javascripts/favorite.js +++ b/public/javascripts/favorite.js @@ -9,13 +9,18 @@ self._nodes = { } 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 + try { + 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 + } catch (e) { + self.delete() + return + } } self.set = function (user) { -- 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/favorite.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'public/javascripts/favorite.js') diff --git a/public/javascripts/favorite.js b/public/javascripts/favorite.js index 8f48dc5..9edc248 100644 --- a/public/javascripts/favorite.js +++ b/public/javascripts/favorite.js @@ -13,9 +13,10 @@ 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] + const correctedUser = USERS.filter(function (user) { + return user.type === localStorageUser.type && + user.value === localStorageUser.value + })[0] return correctedUser } catch (e) { self.delete() -- cgit v1.1