[Search] Empty search resets results

When there is no input into the search bar
no results are displayed/displayed results
are removed. This is because the search
providers were changed to return empty
arrays for empty search strings.
This commit is contained in:
shale 2015-07-22 16:09:14 -07:00
parent b16af5fe3e
commit b0e7dca985
5 changed files with 39 additions and 28 deletions

View File

@ -272,9 +272,9 @@ ul.tree {
* at runtime from the About dialog for additional information.
*****************************************************************************/
/* line 27, ../sass/search/_search.scss */
.search .searchbar {
.search .search-input {
width: 100%;
margin-top: 20px; }
margin-top: 10px; }
/* line 32, ../sass/search/_search.scss */
.search .results {
margin-top: 10px; }

View File

@ -24,9 +24,9 @@
$iconWidth: 20px;
$leftMargin: 6px;
.searchbar {
.search-input {
width: 100%;
margin-top: 20px;
margin-top: 10px;
}
.results {

View File

@ -23,7 +23,7 @@
ng-controller="SearchController as controller">
<!-- Search bar input -->
<div>
<input class="searchbar"
<input class="search-input"
id="searchbarinput"
type="text"
value=""

View File

@ -159,24 +159,31 @@ define(
// Get the user input
searchTerm = document.getElementById(inputID).value;
// Process search term
searchTerm = processSearchTerm(searchTerm);
// Create the query to elasticsearch
esQuery = ROOT + "/_search/?q=" + searchTerm +
"&size=" + maxResults;
if (timeout) {
esQuery += "&timeout=" + timeout;
// If the user input is empty, we want to have no search results.
if (searchTerm !== '') {
// Process search term
searchTerm = processSearchTerm(searchTerm);
// Create the query to elasticsearch
esQuery = ROOT + "/_search/?q=" + searchTerm +
"&size=" + maxResults;
if (timeout) {
esQuery += "&timeout=" + timeout;
}
// Get the data...
return $http({
method: "GET",
url: esQuery
}).then(function (rawResults) {
// ...then process the data
return processResults(rawResults, timestamp);
});
} else {
latestResults = [];
lastSearchTimestamp = timestamp;
return latestResults;
}
// Get the data...
return $http({
method: "GET",
url: esQuery
}).then(function (rawResults) {
// ...then process the data
return processResults(rawResults, timestamp);
});
}
return {

View File

@ -135,12 +135,16 @@
terms = convertToTerms(input),
timesToLoop = Math.min(indexedItems.length, data.maxNumber);
for (var i = 0; i < timesToLoop; i++) {
var score = scoreItem(indexedItems[i], input, terms);
if (score > 0) {
results[indexedItems[i].id] = {
score: score
};
// If the user input is empty, we want to have no search results.
if (input !== '') {
for (var i = 0; i < timesToLoop; i++) {
var score = scoreItem(indexedItems[i], input, terms);
if (score > 0) {
results[indexedItems[i].id] = {
score: score
};
}
}
}