[Search] Update loadMore

The controller's loadMore function now sends
new queries to the search service if the
controller's full results list does not have
enough results in it to load more.
This commit is contained in:
slhale 2015-08-03 11:44:56 -07:00
parent 695582b30f
commit 1cd6685b36
2 changed files with 29 additions and 13 deletions

View File

@ -83,15 +83,19 @@ define(
}
// For documentation, see sendQuery below.
function queryAll(inputText) {
function queryAll(inputText, maxResults) {
var i,
timestamp = Date.now(),
resultPromises = [];
if (!maxResults) {
maxResults = DEFAULT_MAX_RESULTS;
}
// Send the query to all the providers
for (i = 0; i < providers.length; i += 1) {
resultPromises.push(
providers[i].query(inputText, timestamp, DEFAULT_MAX_RESULTS, DEFUALT_TIMEOUT)
providers[i].query(inputText, timestamp, maxResults, DEFUALT_TIMEOUT)
);
}
@ -127,6 +131,9 @@ define(
* {hits: domainObject[], total: number}
*
* @param inputText The text input that is the query.
* @param maxResults (optional) The maximum number of results
* that this function should return. If not provided, a
* default of 100 will be used.
*/
query: queryAll
};

View File

@ -34,9 +34,9 @@ define(function () {
// Starting amount of results to load. Will get increased.
var numResults = INITIAL_LOAD_NUMBER,
loading = false,
fullResults = [];
fullResults = {hits: []};
function search() {
function search(maxResults) {
var inputText = $scope.ngModel.input;
// We are starting to load.
@ -49,12 +49,14 @@ define(function () {
$scope.ngModel.search = true;
}
// Reset 'load more'
numResults = INITIAL_LOAD_NUMBER;
if (!maxResults) {
// Reset 'load more'
numResults = INITIAL_LOAD_NUMBER;
}
// Send the query
searchService.query(inputText).then(function (result) {
fullResults = result.hits;
searchService.query(inputText, maxResults).then(function (result) {
fullResults = result;
$scope.results = result.hits.slice(0, numResults);
// Now we are done loading.
@ -66,6 +68,10 @@ define(function () {
/**
* Search the filetree.
* Assumes that any search text will be in ngModel.input
*
* @param maxResults (optional) The maximum number of results
* that this function should return. If not provided, search
* service default will be used.
*/
search: search,
@ -81,8 +87,7 @@ define(function () {
* Checks to see if there are more search results to display.
*/
areMore: function () {
return numResults < fullResults.length;
// TODO: See loadMore() todo.
return numResults < fullResults.total;
},
/**
@ -91,9 +96,13 @@ define(function () {
*/
loadMore: function () {
numResults += LOAD_INCREMENT;
$scope.results = fullResults.slice(0, numResults);
// TODO: Let load more see if total > fullResults.length, and then
// if so, resend a query.
if (numResults > fullResults.hits.length && fullResults.hits.length < fullResults.total) {
// Resend the query if we are out of items to display, but there are more to get
search(numResults);
} else {
$scope.results = fullResults.hits.slice(0, numResults);
}
}
};
}