aboutsummaryrefslogtreecommitdiff
path: root/public/javascripts/favorite.js
diff options
context:
space:
mode:
authorNoah Loomans <noahloomans@gmail.com>2016-12-14 12:19:59 +0100
committerNoah Loomans <noahloomans@gmail.com>2016-12-14 12:19:59 +0100
commite3f1a6a2c3534c3133f412f1b86f7398f3b4f40c (patch)
treefa2e526929c83691fe6ee51b86f1c5a258c11c1d /public/javascripts/favorite.js
parent746abfd1827bf7d6d51c231b5509d5f609e71f07 (diff)
add favorite
Diffstat (limited to 'public/javascripts/favorite.js')
-rw-r--r--public/javascripts/favorite.js73
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 = '&#xE838;'
+}
+
+self.delete = function () {
+ window.localStorage.removeItem('fav')
+}
+
+self.updateDom = function (isFavorite) {
+ if (isFavorite) {
+ self._nodes.toggle.innerHTML = '&#xE838;'
+ } else {
+ self._nodes.toggle.innerHTML = '&#xE83A'
+ }
+}
+
+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