From ec4fa190cf0e458666b232c3830b6d07b0a65afb Mon Sep 17 00:00:00 2001 From: Oliver Hamlet Date: Tue, 26 May 2015 09:15:39 +0100 Subject: [PATCH 01/11] Some minor search code refactoring. --- resources/report/html/loot-search.html | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/resources/report/html/loot-search.html b/resources/report/html/loot-search.html index 043a621b..122b30a4 100644 --- a/resources/report/html/loot-search.html +++ b/resources/report/html/loot-search.html @@ -92,13 +92,18 @@ searchTarget is the ID of the core-list element to search the elements of. this.shadowRoot.getElementById('close').removeEventListener('change', this.onClose, false); }, + resetResults: function() { + this.currentResult = 0; + this.results = []; + }, + onSearch: function(evt) { var needle = evt.target.value.toLowerCase(); var host = evt.target.parentElement.parentElement.parentNode.host; - host.currentResult = 0; - host.results = []; + host.resetResults(); host.shadowRoot.getElementById('count').classList.toggle('hidden', !evt.target.value); + if (!evt.target.value) { return; } @@ -147,8 +152,7 @@ searchTarget is the ID of the core-list element to search the elements of. }, onClose: function(evt) { - evt.target.parentElement.parentNode.host.currentResult = 0; - evt.target.parentElement.parentNode.host.results = []; + evt.target.parentElement.parentNode.host.resetResults(); evt.target.parentElement.parentNode.getElementById('search').value = ''; evt.target.parentElement.parentNode.getElementById('count').classList.toggle('hidden', true); evt.target.dispatchEvent(new CustomEvent('loot-search-close')); From 034ef518e217676861bd94e50c741ac1e187b7ab Mon Sep 17 00:00:00 2001 From: Oliver Hamlet Date: Tue, 26 May 2015 10:19:06 +0100 Subject: [PATCH 02/11] Make search run on input change. --- resources/report/html/loot-search.html | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/resources/report/html/loot-search.html b/resources/report/html/loot-search.html index 122b30a4..a750767a 100644 --- a/resources/report/html/loot-search.html +++ b/resources/report/html/loot-search.html @@ -17,6 +17,9 @@ searchTarget is the ID of the core-list element to search the elements of. core-toolbar > * { top: -3px; } + paper-input { + position: relative; + } paper-input /deep/ paper-input-decorator::shadow .label-text, paper-input /deep/ input::-webkit-input-placeholder { color: rgba(255, 255, 255, 0.3) !important; @@ -31,9 +34,7 @@ searchTarget is the ID of the core-list element to search the elements of. } - - - + @@ -79,14 +80,14 @@ searchTarget is the ID of the core-list element to search the elements of. }, attached: function() { - this.shadowRoot.getElementById('search').addEventListener('change', this.onSearch, false); + this.shadowRoot.getElementById('search').addEventListener('input', this.onSearch, false); this.shadowRoot.getElementById('prev').addEventListener('click', this.onPrev, false); this.shadowRoot.getElementById('next').addEventListener('click', this.onNext, false); this.shadowRoot.getElementById('close').addEventListener('click', this.onClose, false); }, detached: function() { - this.shadowRoot.getElementById('search').removeEventListener('change', this.onSearch, false); + this.shadowRoot.getElementById('search').removeEventListener('input', this.onSearch, false); this.shadowRoot.getElementById('prev').removeEventListener('click', this.onPrev, false); this.shadowRoot.getElementById('next').removeEventListener('click', this.onNext, false); this.shadowRoot.getElementById('close').removeEventListener('change', this.onClose, false); @@ -99,7 +100,7 @@ searchTarget is the ID of the core-list element to search the elements of. onSearch: function(evt) { var needle = evt.target.value.toLowerCase(); - var host = evt.target.parentElement.parentElement.parentNode.host; + var host = evt.target.parentElement.parentNode.host; host.resetResults(); host.shadowRoot.getElementById('count').classList.toggle('hidden', !evt.target.value); From 31ccaf652ffb9cae10551b0225d98f7b8e0d54b3 Mon Sep 17 00:00:00 2001 From: Oliver Hamlet Date: Tue, 26 May 2015 10:19:53 +0100 Subject: [PATCH 03/11] Added search on enter --- resources/report/html/loot-search.html | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/resources/report/html/loot-search.html b/resources/report/html/loot-search.html index a750767a..4621b1ce 100644 --- a/resources/report/html/loot-search.html +++ b/resources/report/html/loot-search.html @@ -81,6 +81,7 @@ searchTarget is the ID of the core-list element to search the elements of. attached: function() { this.shadowRoot.getElementById('search').addEventListener('input', this.onSearch, false); + this.shadowRoot.getElementById('search').addEventListener('keyup', this.onEnter, false); this.shadowRoot.getElementById('prev').addEventListener('click', this.onPrev, false); this.shadowRoot.getElementById('next').addEventListener('click', this.onNext, false); this.shadowRoot.getElementById('close').addEventListener('click', this.onClose, false); @@ -88,6 +89,7 @@ searchTarget is the ID of the core-list element to search the elements of. detached: function() { this.shadowRoot.getElementById('search').removeEventListener('input', this.onSearch, false); + this.shadowRoot.getElementById('search').removeEventListener('keyup', this.onEnter, false); this.shadowRoot.getElementById('prev').removeEventListener('click', this.onPrev, false); this.shadowRoot.getElementById('next').removeEventListener('click', this.onNext, false); this.shadowRoot.getElementById('close').removeEventListener('change', this.onClose, false); @@ -98,6 +100,20 @@ searchTarget is the ID of the core-list element to search the elements of. this.results = []; }, + onEnter: function(evt) { + var host = evt.target.parentElement.parentNode.host; + if (evt.keyCode != 13 || host.results.length == 0) { + return; + } + + if (host.currentResult == host.results.length) { + host.currentResult = 1; + } else { + ++host.currentResult; + } + document.getElementById(host.searchTarget).scrollToItem(host.results[host.currentResult - 1]); + }, + onSearch: function(evt) { var needle = evt.target.value.toLowerCase(); var host = evt.target.parentElement.parentNode.host; From 729febe6f303162dea12ba35b75a0d45790c0658 Mon Sep 17 00:00:00 2001 From: Oliver Hamlet Date: Tue, 26 May 2015 10:45:41 +0100 Subject: [PATCH 04/11] Zero-index currentResult. --- resources/report/html/loot-search.html | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/resources/report/html/loot-search.html b/resources/report/html/loot-search.html index 4621b1ce..2b446eb1 100644 --- a/resources/report/html/loot-search.html +++ b/resources/report/html/loot-search.html @@ -36,7 +36,7 @@ searchTarget is the ID of the core-list element to search the elements of. @@ -45,7 +45,7 @@ searchTarget is the ID of the core-list element to search the elements of.