Clear results on empty search

This commit is contained in:
Daniel Triendl 2020-10-19 18:08:05 +02:00
parent afb086d2ed
commit 204d5837c5

View File

@ -10,40 +10,45 @@
console.log('TAPI init'); console.log('TAPI init');
function fireChangeEvents(element){ function fireChangeEvents(element) {
var changeEvent = null; var changeEvent = null;
changeEvent = document.createEvent ("HTMLEvents"); changeEvent = document.createEvent("HTMLEvents");
changeEvent.initEvent ("input", true, true); changeEvent.initEvent("input", true, true);
element.dispatchEvent (changeEvent); element.dispatchEvent(changeEvent);
console.debug('input event dispatched for element: '+element.id); console.debug('input event dispatched for element: ' + element.id);
changeEvent = document.createEvent ("HTMLEvents"); changeEvent = document.createEvent("HTMLEvents");
changeEvent.initEvent ("keyup", true, true); changeEvent.initEvent("keyup", true, true);
element.dispatchEvent (changeEvent); element.dispatchEvent(changeEvent);
console.debug('keyup event dispatched for element: '+element.id); console.debug('keyup event dispatched for element: ' + element.id);
changeEvent = document.createEvent ("HTMLEvents"); changeEvent = document.createEvent("HTMLEvents");
changeEvent.initEvent ("change", true, true); changeEvent.initEvent("change", true, true);
element.dispatchEvent (changeEvent); element.dispatchEvent(changeEvent);
console.debug('change event dispatched for element: '+element.id); console.debug('change event dispatched for element: ' + element.id);
} }
var doSearch = function() { function removeSearchResults() {
var resultList = document.getElementById('tapiResults');
if (resultList) {
resultList.parentNode.removeChild(resultList);
}
}
var doSearch = function () {
var search = document.getElementById('tapiSearchInput'); var search = document.getElementById('tapiSearchInput');
var searchText = search.value.trim(); var searchText = search.value.trim();
if (searchText == '') { if (searchText == '') {
removeSearchResults();
return; return;
} }
console.log('Searching TAPI'); console.log('Searching TAPI');
GM.xmlHttpRequest({ GM.xmlHttpRequest({
method: 'GET', method: 'GET',
url: 'http://cpatapi.cpsrvweb2016.cp-austria.at/search?query=' + encodeURIComponent(searchText), url: 'http://cpatapi.cpsrvweb2016.cp-austria.at/search?query=' + encodeURIComponent(searchText),
onload: function(response) { onload: function (response) {
console.log('TAPI Search response', response); console.log('TAPI Search response', response);
var contacts = JSON.parse(response.responseText); var contacts = JSON.parse(response.responseText);
console.log('TAPI Contacts', contacts); console.log('TAPI Contacts', contacts);
var resultList = document.getElementById('tapiResults'); removeSearchResults();
if (resultList) {
resultList.parentNode.removeChild(resultList);
}
resultList = document.createElement('ul'); resultList = document.createElement('ul');
resultList.id = 'tapiResults'; resultList.id = 'tapiResults';
@ -52,14 +57,18 @@ var doSearch = function() {
document.getElementById('tapiSearchBox').appendChild(resultList); document.getElementById('tapiSearchBox').appendChild(resultList);
resultList.innerHTML = ''; resultList.innerHTML = '';
for(var i = 0; i < contacts.length; i++) { for (var i = 0; i < contacts.length; i++) {
var li = document.createElement('li'); var li = document.createElement('li');
li.classList.add('search-result'); li.classList.add('search-result');
li.classList.add('pointer'); li.classList.add('pointer');
li.onmouseover = function() { this.classList.add('bg-light'); }; li.onmouseover = function () {
li.onmouseout = function() { this.classList.remove('bg-light'); }; this.classList.add('bg-light');
};
li.onmouseout = function () {
this.classList.remove('bg-light');
};
li.contact = contacts[i]; li.contact = contacts[i];
li.onclick = function() { li.onclick = function () {
var contact = this.contact; var contact = this.contact;
var searchInput = document.getElementsByName('searchByNumberInput'); var searchInput = document.getElementsByName('searchByNumberInput');
if (searchInput.length > 0) { if (searchInput.length > 0) {
@ -69,7 +78,7 @@ var doSearch = function() {
fireChangeEvents(searchInput[0]); fireChangeEvents(searchInput[0]);
} }
}; };
li.style.listStyle = 'outside none none';// display: flex; align-items: center; li.style.listStyle = 'outside none none'; // display: flex; align-items: center;
var resultText = document.createElement('div'); var resultText = document.createElement('div');
resultText.classList.add('search-result-txt'); resultText.classList.add('search-result-txt');
@ -86,7 +95,7 @@ var doSearch = function() {
resultList.appendChild(li); resultList.appendChild(li);
} }
} }
}); });
}; };
waitForKeyElements('div.nav-search', (element) => { waitForKeyElements('div.nav-search', (element) => {
@ -117,15 +126,11 @@ waitForKeyElements('div.nav-search', (element) => {
search.placeholder = 'TAPI Suche'; search.placeholder = 'TAPI Suche';
search.onfocus = doSearch; search.onfocus = doSearch;
search.onkeyup = doSearch; search.onkeyup = doSearch;
search.onblur = function() { search.onblur = function () {
console.log('TAPI Search exit'); console.log('TAPI Search exit');
setTimeout(function() { setTimeout(function () {
console.log('TAPI clear search results'); console.log('TAPI clear search results');
var resultList = document.getElementById('tapiResults'); removeSearchResults();
console.log('TAPI tapiResults', resultList);
if (resultList) {
resultList.parentNode.removeChild(resultList);
};
}, 500); }, 500);
}; };
searchWrapper.appendChild(search); searchWrapper.appendChild(search);
@ -139,4 +144,3 @@ waitForKeyElements('div.nav-search', (element) => {
element.appendChild(form); element.appendChild(form);
}, false); }, false);