From aa9d969df0b2aae30d0d6158f41d66f6c797c9a1 Mon Sep 17 00:00:00 2001 From: BuildTools Date: Mon, 5 Dec 2016 21:05:23 +0100 Subject: added clean start spage --- public/javascripts/main.js | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'public/javascripts/main.js') diff --git a/public/javascripts/main.js b/public/javascripts/main.js index b4c8f89..31645e8 100644 --- a/public/javascripts/main.js +++ b/public/javascripts/main.js @@ -1,4 +1,4 @@ -/* global ga */ +/* global ga FLAGS */ require('flexibility') @@ -18,8 +18,7 @@ const nextButton = document.querySelectorAll('input[type="button"]')[1] const currentWeekNode = document.querySelector('.current') const favNode = document.querySelector('.fav') -if (!(window.location.href.split('?')[1] && - window.location.href.split('?')[1].indexOf('nfd') >= 0)) { // nfd = no feature detection +if (FLAGS.indexOf('NO_FEATURE_DETECT') === -1) { if (document.querySelector('#schedule').getClientRects()[0].bottom !== document.body.getClientRects()[0].bottom) { window.location = 'http://www.meetingpointmco.nl/Roosters-AL/doc/' @@ -108,6 +107,7 @@ searchNode.addEventListener('keydown', function (e) { }) searchNode.addEventListener('input', function (e) { + searchNode.className = '' autocompleteNode.innerHTML = '' if (inputNode.value.trim() === '') return @@ -234,6 +234,11 @@ if (currentFav) { ga(function () { ga('send', { hitType: 'event', eventCategory: 'search fav', eventAction, eventLabel }) }) +} else if (inputNode.value === '') { + searchNode.className = 'no-input' + inputNode.focus() } -easterEggs.sinterklaas() +document.body.style = '' + +window.easterEggs = easterEggs -- cgit v1.1 From 309781965eb9fbc6e035bbe7a774f2a90f021c52 Mon Sep 17 00:00:00 2001 From: Noah Loomans Date: Tue, 6 Dec 2016 16:14:27 +0100 Subject: optimized file size --- public/javascripts/main.js | 26 ++++---------------------- 1 file changed, 4 insertions(+), 22 deletions(-) (limited to 'public/javascripts/main.js') diff --git a/public/javascripts/main.js b/public/javascripts/main.js index 31645e8..a1e7dcf 100644 --- a/public/javascripts/main.js +++ b/public/javascripts/main.js @@ -1,4 +1,4 @@ -/* global ga FLAGS */ +/* global ga FLAGS USERS */ require('flexibility') @@ -36,28 +36,10 @@ let selectedUser let results = [] let offset = 0 -function getUsers () { - const nodes = document.querySelector('#data') - .querySelectorAll('.data-user') - const elements = Array.prototype.slice.call(nodes) - const users = elements.map(userNode => { - const type = userNode.querySelector('.data-type').textContent - const value = userNode.querySelector('.data-value').textContent - const index = Number(userNode.querySelector('.data-index').textContent) - return { type, value, index } - }) - - document.querySelector('#data').outerHTML = '' - - return users -} - -const users = getUsers() - function getCurrentFav () { if (!window.localStorage.getItem('fav')) return const favCode = window.localStorage.getItem('fav').split(':') - const fav = users.filter(user => user.type === favCode[0] && user.index === Number(favCode[1])) + const fav = USERS.filter(user => user.type === favCode[0] && user.index === Number(favCode[1])) return fav[0] } @@ -112,7 +94,7 @@ searchNode.addEventListener('input', function (e) { if (inputNode.value.trim() === '') return selectedResult = -1 - results = fuzzy.filter(removeDiacritics(inputNode.value), users, { + results = fuzzy.filter(removeDiacritics(inputNode.value), USERS, { extract: function (el) { return removeDiacritics(el.value) } }).slice(0, 7) @@ -129,7 +111,7 @@ function submitForm (e) { if (e) e.preventDefault() if (results.length !== 0) { const indexInResult = selectedResult === -1 ? 0 : selectedResult - selectedUser = users[results[indexInResult].index] + selectedUser = USERS[results[indexInResult].index] } if (selectedUser == null) return -- cgit v1.1 From e9701f33a6f13b38a49d47b55ba802e6a8b42cfa Mon Sep 17 00:00:00 2001 From: Noah Loomans Date: Tue, 6 Dec 2016 16:15:51 +0100 Subject: fixed safari bug --- public/javascripts/main.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'public/javascripts/main.js') diff --git a/public/javascripts/main.js b/public/javascripts/main.js index a1e7dcf..3afb896 100644 --- a/public/javascripts/main.js +++ b/public/javascripts/main.js @@ -221,6 +221,6 @@ if (currentFav) { inputNode.focus() } -document.body.style = '' +document.body.style.opacity = '1' window.easterEggs = easterEggs -- cgit v1.1 From 6c454f0b13ff71751f8faae9fa6172b6cb0892f7 Mon Sep 17 00:00:00 2001 From: BuildTools Date: Tue, 6 Dec 2016 17:44:32 +0100 Subject: change layout when keyboard opens on iOS --- public/javascripts/main.js | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'public/javascripts/main.js') diff --git a/public/javascripts/main.js b/public/javascripts/main.js index 3afb896..c4c8d32 100644 --- a/public/javascripts/main.js +++ b/public/javascripts/main.js @@ -221,6 +221,10 @@ if (currentFav) { inputNode.focus() } +window.addEventListener('native.showkeyboard', function (e) { + searchNode.className = '' +}) + document.body.style.opacity = '1' window.easterEggs = easterEggs -- cgit v1.1 From a45a03e92d5b2130b91fc0894ead8346089d5c13 Mon Sep 17 00:00:00 2001 From: BuildTools Date: Tue, 6 Dec 2016 17:49:48 +0100 Subject: that didn't work --- public/javascripts/main.js | 4 ---- 1 file changed, 4 deletions(-) (limited to 'public/javascripts/main.js') diff --git a/public/javascripts/main.js b/public/javascripts/main.js index c4c8d32..3afb896 100644 --- a/public/javascripts/main.js +++ b/public/javascripts/main.js @@ -221,10 +221,6 @@ if (currentFav) { inputNode.focus() } -window.addEventListener('native.showkeyboard', function (e) { - searchNode.className = '' -}) - document.body.style.opacity = '1' window.easterEggs = easterEggs -- cgit v1.1 From 0e2ef2aa2495fa19d7cc7a25cceef58c572494ca Mon Sep 17 00:00:00 2001 From: BuildTools Date: Tue, 6 Dec 2016 17:59:59 +0100 Subject: .no-input is now on body --- public/javascripts/main.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'public/javascripts/main.js') diff --git a/public/javascripts/main.js b/public/javascripts/main.js index 3afb896..722031d 100644 --- a/public/javascripts/main.js +++ b/public/javascripts/main.js @@ -89,7 +89,7 @@ searchNode.addEventListener('keydown', function (e) { }) searchNode.addEventListener('input', function (e) { - searchNode.className = '' + document.body.className = '' autocompleteNode.innerHTML = '' if (inputNode.value.trim() === '') return @@ -217,7 +217,7 @@ if (currentFav) { ga('send', { hitType: 'event', eventCategory: 'search fav', eventAction, eventLabel }) }) } else if (inputNode.value === '') { - searchNode.className = 'no-input' + document.body.className = 'no-input' inputNode.focus() } -- cgit v1.1 From 6bc04592cc7511775cdec9902c841aca7a0d2a6c Mon Sep 17 00:00:00 2001 From: BuildTools Date: Tue, 6 Dec 2016 18:49:25 +0100 Subject: fixed week buttons for IE9 --- public/javascripts/main.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'public/javascripts/main.js') diff --git a/public/javascripts/main.js b/public/javascripts/main.js index 722031d..41b096a 100644 --- a/public/javascripts/main.js +++ b/public/javascripts/main.js @@ -13,8 +13,8 @@ const searchNode = document.querySelector('#search') const inputNode = searchNode.querySelector('input[type="text"]') const autocompleteNode = document.querySelector('.autocomplete') const scheduleIframe = document.querySelector('#schedule') -const prevButton = document.querySelectorAll('input[type="button"]')[0] -const nextButton = document.querySelectorAll('input[type="button"]')[1] +const prevButton = document.querySelectorAll('#week-selector button')[0] +const nextButton = document.querySelectorAll('#week-selector button')[1] const currentWeekNode = document.querySelector('.current') const favNode = document.querySelector('.fav') -- cgit v1.1 From 186b477085d63e23566d9ac4c11a36cde178e14e Mon Sep 17 00:00:00 2001 From: BuildTools Date: Tue, 6 Dec 2016 19:24:31 +0100 Subject: hide week selector when didn't search --- public/javascripts/main.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'public/javascripts/main.js') diff --git a/public/javascripts/main.js b/public/javascripts/main.js index 41b096a..62bf3a2 100644 --- a/public/javascripts/main.js +++ b/public/javascripts/main.js @@ -89,7 +89,7 @@ searchNode.addEventListener('keydown', function (e) { }) searchNode.addEventListener('input', function (e) { - document.body.className = '' + document.body.classList.remove('no-input') autocompleteNode.innerHTML = '' if (inputNode.value.trim() === '') return @@ -115,6 +115,8 @@ function submitForm (e) { } if (selectedUser == null) return + document.body.classList.add('searched') + updateFavNode() inputNode.value = selectedUser.value @@ -217,7 +219,7 @@ if (currentFav) { ga('send', { hitType: 'event', eventCategory: 'search fav', eventAction, eventLabel }) }) } else if (inputNode.value === '') { - document.body.className = 'no-input' + document.body.classList.add('no-input') inputNode.focus() } -- cgit v1.1 From 9edbbfc1057235194249112f032e450c938c2e68 Mon Sep 17 00:00:00 2001 From: BuildTools Date: Tue, 6 Dec 2016 19:58:09 +0100 Subject: fix bug not properly removing selection --- public/javascripts/main.js | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'public/javascripts/main.js') diff --git a/public/javascripts/main.js b/public/javascripts/main.js index 62bf3a2..f9cc0db 100644 --- a/public/javascripts/main.js +++ b/public/javascripts/main.js @@ -171,11 +171,12 @@ inputNode.addEventListener('click', function () { inputNode.select() }) -inputNode.addEventListener('blur', function () { - const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent) - if (!isSafari) { - inputNode.selectionStart = inputNode.selectionEnd = -1 - } +window.addEventListener('blur', function () { + // this will removed the selection without drawing focus on it (safari) + // this will removed selection even when focusing an iframe (chrome) + const oldValue = inputNode.value + inputNode.value = '' + inputNode.value = oldValue }) searchNode.addEventListener('blur', function (e) { -- cgit v1.1 From e8fafea3157047b65bd6305f2871d4a1a3d5f707 Mon Sep 17 00:00:00 2001 From: BuildTools Date: Tue, 6 Dec 2016 20:56:47 +0100 Subject: fix not being is searched mode when fav is used --- public/javascripts/main.js | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'public/javascripts/main.js') diff --git a/public/javascripts/main.js b/public/javascripts/main.js index f9cc0db..97f6bcc 100644 --- a/public/javascripts/main.js +++ b/public/javascripts/main.js @@ -224,6 +224,10 @@ if (currentFav) { inputNode.focus() } +if (scheduleIframe.src !== '') { + document.body.classList.add('searched') +} + document.body.style.opacity = '1' window.easterEggs = easterEggs -- cgit v1.1 From 84bf0b24e0a6b584311218108ca953f911901c74 Mon Sep 17 00:00:00 2001 From: Noah Loomans Date: Wed, 7 Dec 2016 11:08:35 +0100 Subject: fix IE bug input event bug The IE 'input' event doesn't work propery. Use non-standard 'textinput' event on IE instaid. --- public/javascripts/main.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'public/javascripts/main.js') diff --git a/public/javascripts/main.js b/public/javascripts/main.js index 722031d..4ebc6c8 100644 --- a/public/javascripts/main.js +++ b/public/javascripts/main.js @@ -88,7 +88,15 @@ searchNode.addEventListener('keydown', function (e) { } }) -searchNode.addEventListener('input', function (e) { +let inputEventStr +if (navigator.userAgent.indexOf('MSIE') !== -1 || + navigator.appVersion.indexOf('Trident/') > 0) { + inputEventStr = 'textinput' // IE 6-11 +} else { + inputEventStr = 'input' // normal browsers +} + +searchNode.addEventListener(inputEventStr, function (e) { document.body.className = '' autocompleteNode.innerHTML = '' if (inputNode.value.trim() === '') return -- cgit v1.1 From f03a20dec91879984a961342e2d20adb61c05ea0 Mon Sep 17 00:00:00 2001 From: Noah Loomans Date: Wed, 7 Dec 2016 11:34:26 +0100 Subject: fixed keyboard not closing on iOS safari --- public/javascripts/main.js | 3 +++ 1 file changed, 3 insertions(+) (limited to 'public/javascripts/main.js') diff --git a/public/javascripts/main.js b/public/javascripts/main.js index 7daedcf..63c3f66 100644 --- a/public/javascripts/main.js +++ b/public/javascripts/main.js @@ -185,6 +185,9 @@ window.addEventListener('blur', function () { const oldValue = inputNode.value inputNode.value = '' inputNode.value = oldValue + + // this will hide the keyboard (iOS safari) + document.activeElement.blur() }) searchNode.addEventListener('blur', function (e) { -- cgit v1.1 From 3b14fbf32d87668a3fbbf561a4d6dfaddaa0bcc9 Mon Sep 17 00:00:00 2001 From: Noah Loomans Date: Wed, 7 Dec 2016 12:17:30 +0100 Subject: switched to input[type='search'] --- public/javascripts/main.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'public/javascripts/main.js') diff --git a/public/javascripts/main.js b/public/javascripts/main.js index 63c3f66..895dd3f 100644 --- a/public/javascripts/main.js +++ b/public/javascripts/main.js @@ -10,7 +10,7 @@ const getWeek = require('./getWeek') const easterEggs = require('./easterEggs') const searchNode = document.querySelector('#search') -const inputNode = searchNode.querySelector('input[type="text"]') +const inputNode = searchNode.querySelector('input[type="search"]') const autocompleteNode = document.querySelector('.autocomplete') const scheduleIframe = document.querySelector('#schedule') const prevButton = document.querySelectorAll('#week-selector button')[0] -- cgit v1.1