From 3a9bdee97f9d05cbdb10f7530d4e94cf28d99602 Mon Sep 17 00:00:00 2001 From: Noah Loomans Date: Thu, 8 Dec 2016 21:23:19 +0100 Subject: did some more work --- public/javascripts/search.js | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 public/javascripts/search.js (limited to 'public/javascripts/search.js') diff --git a/public/javascripts/search.js b/public/javascripts/search.js new file mode 100644 index 0000000..8887ab2 --- /dev/null +++ b/public/javascripts/search.js @@ -0,0 +1,28 @@ +const autocomplete = require('./autocomplete') +const iframe = require('./iframe') + +const self = {} + +self._nodes = { + search: document.querySelector('#search'), + input: document.querySelector('input[type="search"]') +} + +self.submit = function () { + self._nodes.input.blur() + + const selectedItem = autocomplete.getSelectedItem() + console.log(selectedItem) + iframe.viewItem(0, selectedItem) +} + +self._handleSubmit = function (event) { + event.preventDefault() + self.submit() +} + +self._nodes.search.addEventListener('submit', self._handleSubmit) + +console.log(self) + +module.exports = self -- cgit v1.1 From c547e6910ea7ad077771343ae75a4204223a118a Mon Sep 17 00:00:00 2001 From: BuildTools Date: Thu, 8 Dec 2016 22:40:08 +0100 Subject: use events and fix focus issues --- public/javascripts/search.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'public/javascripts/search.js') diff --git a/public/javascripts/search.js b/public/javascripts/search.js index 8887ab2..fb40f78 100644 --- a/public/javascripts/search.js +++ b/public/javascripts/search.js @@ -21,8 +21,12 @@ self._handleSubmit = function (event) { self.submit() } +autocomplete.events.on('select', self.submit) + self._nodes.search.addEventListener('submit', self._handleSubmit) +self._nodes.input.addEventListener('focus', autocomplete.show) -console.log(self) +// TODO: hide on escape key press +// self._nodes.input.addEventListener('blur', autocomplete.hide) module.exports = self -- cgit v1.1 From 5c7fed6eda250d91d4babd14da73166425fab85b Mon Sep 17 00:00:00 2001 From: BuildTools Date: Thu, 8 Dec 2016 22:43:21 +0100 Subject: moved function from autocomplete to search --- public/javascripts/search.js | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'public/javascripts/search.js') diff --git a/public/javascripts/search.js b/public/javascripts/search.js index fb40f78..673afea 100644 --- a/public/javascripts/search.js +++ b/public/javascripts/search.js @@ -1,3 +1,6 @@ +/* global USERS */ + +const fuzzy = require('fuzzy') const autocomplete = require('./autocomplete') const iframe = require('./iframe') @@ -21,9 +24,30 @@ self._handleSubmit = function (event) { self.submit() } +self._calculate = function (searchTerm) { + const allResults = fuzzy.filter(searchTerm, USERS, { + extract: item => item.value + }) + const firstResults = allResults.slice(0, 7) + + const originalResults = firstResults.map(result => result.original) + + return originalResults +} + +self._handleTextUpdate = function () { + const results = self._calculate(self._nodes.input.value) + + autocomplete.removeAllItems() + for (let i = 0; i < results.length; i++) { + autocomplete.addItem(results[i]) + } +} + autocomplete.events.on('select', self.submit) self._nodes.search.addEventListener('submit', self._handleSubmit) +self._nodes.input.addEventListener('input', self._handleTextUpdate) self._nodes.input.addEventListener('focus', autocomplete.show) // TODO: hide on escape key press -- cgit v1.1 From 1260c2788c56f8add0cad9ba758573e25b18b378 Mon Sep 17 00:00:00 2001 From: BuildTools Date: Thu, 8 Dec 2016 22:45:52 +0100 Subject: hide autocomplete on submit --- public/javascripts/search.js | 2 ++ 1 file changed, 2 insertions(+) (limited to 'public/javascripts/search.js') diff --git a/public/javascripts/search.js b/public/javascripts/search.js index 673afea..d98c4fb 100644 --- a/public/javascripts/search.js +++ b/public/javascripts/search.js @@ -17,6 +17,8 @@ self.submit = function () { const selectedItem = autocomplete.getSelectedItem() console.log(selectedItem) iframe.viewItem(0, selectedItem) + + autocomplete.hide() } self._handleSubmit = function (event) { -- cgit v1.1 From bd86bfa5de79b0d098a5ea7540b0717f195825ff Mon Sep 17 00:00:00 2001 From: Noah Loomans Date: Fri, 9 Dec 2016 13:50:58 +0100 Subject: removed autocomplete.show & hide function --- public/javascripts/search.js | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) (limited to 'public/javascripts/search.js') diff --git a/public/javascripts/search.js b/public/javascripts/search.js index d98c4fb..dd22f11 100644 --- a/public/javascripts/search.js +++ b/public/javascripts/search.js @@ -15,10 +15,10 @@ self.submit = function () { self._nodes.input.blur() const selectedItem = autocomplete.getSelectedItem() - console.log(selectedItem) + self._nodes.input.value = selectedItem.value iframe.viewItem(0, selectedItem) - autocomplete.hide() + autocomplete.removeAllItems() } self._handleSubmit = function (event) { @@ -50,9 +50,5 @@ autocomplete.events.on('select', self.submit) self._nodes.search.addEventListener('submit', self._handleSubmit) self._nodes.input.addEventListener('input', self._handleTextUpdate) -self._nodes.input.addEventListener('focus', autocomplete.show) - -// TODO: hide on escape key press -// self._nodes.input.addEventListener('blur', autocomplete.hide) module.exports = self -- cgit v1.1 From 998744084264dcf4fbbd2c52ab76cf392803fb05 Mon Sep 17 00:00:00 2001 From: Noah Loomans Date: Fri, 9 Dec 2016 15:14:15 +0100 Subject: switched to non-iframe schedule viewer --- public/javascripts/search.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'public/javascripts/search.js') diff --git a/public/javascripts/search.js b/public/javascripts/search.js index dd22f11..ae8118a 100644 --- a/public/javascripts/search.js +++ b/public/javascripts/search.js @@ -2,7 +2,7 @@ const fuzzy = require('fuzzy') const autocomplete = require('./autocomplete') -const iframe = require('./iframe') +const schedule = require('./schedule') const self = {} @@ -16,7 +16,7 @@ self.submit = function () { const selectedItem = autocomplete.getSelectedItem() self._nodes.input.value = selectedItem.value - iframe.viewItem(0, selectedItem) + schedule.viewItem(0, selectedItem) autocomplete.removeAllItems() } -- cgit v1.1 From e18bf78dd0a0ab8b4a70da6e370faa1a1132e211 Mon Sep 17 00:00:00 2001 From: Noah Loomans Date: Fri, 9 Dec 2016 15:22:57 +0100 Subject: add searched class when searching --- public/javascripts/search.js | 1 + 1 file changed, 1 insertion(+) (limited to 'public/javascripts/search.js') diff --git a/public/javascripts/search.js b/public/javascripts/search.js index ae8118a..6d6fc3d 100644 --- a/public/javascripts/search.js +++ b/public/javascripts/search.js @@ -19,6 +19,7 @@ self.submit = function () { schedule.viewItem(0, selectedItem) autocomplete.removeAllItems() + document.body.classList.add('searched') } self._handleSubmit = function (event) { -- cgit v1.1 From 907e8c138ae890208b03b23a420b32290fc2ef88 Mon Sep 17 00:00:00 2001 From: Noah Loomans Date: Fri, 9 Dec 2016 15:33:05 +0100 Subject: switch to search fireing search event instaid of calling schedule.viewItem himself --- public/javascripts/search.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'public/javascripts/search.js') diff --git a/public/javascripts/search.js b/public/javascripts/search.js index 6d6fc3d..0ee3a11 100644 --- a/public/javascripts/search.js +++ b/public/javascripts/search.js @@ -1,11 +1,13 @@ /* global USERS */ +const EventEmitter = require('events') const fuzzy = require('fuzzy') const autocomplete = require('./autocomplete') -const schedule = require('./schedule') const self = {} +self.events = new EventEmitter() + self._nodes = { search: document.querySelector('#search'), input: document.querySelector('input[type="search"]') @@ -16,10 +18,11 @@ self.submit = function () { const selectedItem = autocomplete.getSelectedItem() self._nodes.input.value = selectedItem.value - schedule.viewItem(0, selectedItem) autocomplete.removeAllItems() document.body.classList.add('searched') + + self.events.emit('search', selectedItem) } self._handleSubmit = function (event) { -- cgit v1.1 From 670976458b5375d27dc525f66b8faa3dc78e799b Mon Sep 17 00:00:00 2001 From: Noah Loomans Date: Wed, 14 Dec 2016 11:07:04 +0100 Subject: extend EventEmitter instaid of property --- public/javascripts/search.js | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) (limited to 'public/javascripts/search.js') diff --git a/public/javascripts/search.js b/public/javascripts/search.js index 0ee3a11..c1e6158 100644 --- a/public/javascripts/search.js +++ b/public/javascripts/search.js @@ -4,9 +4,7 @@ const EventEmitter = require('events') const fuzzy = require('fuzzy') const autocomplete = require('./autocomplete') -const self = {} - -self.events = new EventEmitter() +const self = new EventEmitter() self._nodes = { search: document.querySelector('#search'), @@ -22,7 +20,7 @@ self.submit = function () { autocomplete.removeAllItems() document.body.classList.add('searched') - self.events.emit('search', selectedItem) + self.emit('search', selectedItem) } self._handleSubmit = function (event) { @@ -50,7 +48,7 @@ self._handleTextUpdate = function () { } } -autocomplete.events.on('select', self.submit) +autocomplete.on('select', self.submit) self._nodes.search.addEventListener('submit', self._handleSubmit) self._nodes.input.addEventListener('input', self._handleTextUpdate) -- cgit v1.1 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/search.js | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'public/javascripts/search.js') diff --git a/public/javascripts/search.js b/public/javascripts/search.js index c1e6158..f0f905f 100644 --- a/public/javascripts/search.js +++ b/public/javascripts/search.js @@ -15,14 +15,19 @@ self.submit = function () { self._nodes.input.blur() const selectedItem = autocomplete.getSelectedItem() - self._nodes.input.value = selectedItem.value - autocomplete.removeAllItems() - document.body.classList.add('searched') + console.log(selectedItem) self.emit('search', selectedItem) } +self.updateDom = function (selectedItem) { + self._nodes.input.value = selectedItem.value + autocomplete.removeAllItems() + document.body.classList.remove('no-input') + document.body.classList.add('searched') +} + self._handleSubmit = function (event) { event.preventDefault() self.submit() -- cgit v1.1 From 900366c6d623fde54223f93930d28a84264cbb46 Mon Sep 17 00:00:00 2001 From: Noah Loomans Date: Wed, 14 Dec 2016 12:29:57 +0100 Subject: handle search focus --- public/javascripts/search.js | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'public/javascripts/search.js') diff --git a/public/javascripts/search.js b/public/javascripts/search.js index f0f905f..d1a49e2 100644 --- a/public/javascripts/search.js +++ b/public/javascripts/search.js @@ -53,9 +53,26 @@ self._handleTextUpdate = function () { } } +self._handleFocus = function () { + self._nodes.input.select() +} + +self._handleBlur = function () { + // this will removed the selection without drawing focus on it (safari) + // this will removed selection even when focusing an iframe (chrome) + const oldValue = self._nodes.value + self._nodes.value = '' + self._nodes.value = oldValue + + // this will hide the keyboard (iOS safari) + document.activeElement.blur() +} + autocomplete.on('select', self.submit) self._nodes.search.addEventListener('submit', self._handleSubmit) +self._nodes.input.addEventListener('focus', self._handleFocus) +self._nodes.input.addEventListener('blur', self._handleBlur) self._nodes.input.addEventListener('input', self._handleTextUpdate) module.exports = self -- cgit v1.1 From 819f3dd2088777c4d84a707b4bd62559382f36f5 Mon Sep 17 00:00:00 2001 From: Noah Loomans Date: Wed, 14 Dec 2016 12:38:27 +0100 Subject: fix ie input event --- public/javascripts/search.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'public/javascripts/search.js') diff --git a/public/javascripts/search.js b/public/javascripts/search.js index d1a49e2..8ae3043 100644 --- a/public/javascripts/search.js +++ b/public/javascripts/search.js @@ -3,6 +3,7 @@ const EventEmitter = require('events') const fuzzy = require('fuzzy') const autocomplete = require('./autocomplete') +const browserFixToolkit = require('./browserFixToolkit') const self = new EventEmitter() @@ -73,6 +74,7 @@ autocomplete.on('select', self.submit) self._nodes.search.addEventListener('submit', self._handleSubmit) self._nodes.input.addEventListener('focus', self._handleFocus) self._nodes.input.addEventListener('blur', self._handleBlur) -self._nodes.input.addEventListener('input', self._handleTextUpdate) +self._nodes.input.addEventListener(browserFixToolkit.inputEvent, + self._handleTextUpdate) module.exports = self -- cgit v1.1 From 4d1c0fe2b6bbb180bf86c1195e1c80a4769d61e6 Mon Sep 17 00:00:00 2001 From: Noah Loomans Date: Wed, 14 Dec 2016 12:40:20 +0100 Subject: auto focus input on page load --- public/javascripts/search.js | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'public/javascripts/search.js') diff --git a/public/javascripts/search.js b/public/javascripts/search.js index 8ae3043..7d80709 100644 --- a/public/javascripts/search.js +++ b/public/javascripts/search.js @@ -29,6 +29,10 @@ self.updateDom = function (selectedItem) { document.body.classList.add('searched') } +self.focus = function () { + self._nodes.input.focus() +} + self._handleSubmit = function (event) { event.preventDefault() self.submit() -- cgit v1.1