mirror of
https://github.com/nasa/openmct.git
synced 2025-04-09 20:31:26 +00:00
[Search] Changed provider return type
The provider now returns an object that has a hits property which contains what it previously returned, and also a total property which contains the total number of results.
This commit is contained in:
parent
a7cd6d8807
commit
60dad014cc
@ -125,13 +125,13 @@ define(
|
||||
}
|
||||
|
||||
// Get promises for results arrays
|
||||
return $q.all(resultPromises).then(function (resultsArrays) {
|
||||
return $q.all(resultPromises).then(function (resultObjects) {
|
||||
var results = [],
|
||||
i;
|
||||
|
||||
// Merge results
|
||||
for (i = 0; i < resultsArrays.length; i += 1) {
|
||||
results = results.concat(resultsArrays[i]);
|
||||
for (i = 0; i < resultObjects.length; i += 1) {
|
||||
results = results.concat(resultObjects[i].hits);
|
||||
}
|
||||
results = filterRepeats(results);
|
||||
results = orderByScore(results);
|
||||
|
@ -89,7 +89,8 @@ define(
|
||||
}
|
||||
|
||||
// Processes results from the format that elasticsearch returns to
|
||||
// a list of search result objects (that contain domain objects)
|
||||
// a list of search result objects (that contain domain objects), then
|
||||
// returns an object in the format {hits: searchResult[], total: number}
|
||||
function processResults(rawResults, timestamp) {
|
||||
var results = rawResults.data.hits.hits,
|
||||
resultsLength = results.length,
|
||||
@ -98,13 +99,6 @@ define(
|
||||
searchResults = [],
|
||||
i;
|
||||
|
||||
/*
|
||||
if (rawResults.data.hits.total > resultsLength) {
|
||||
// TODO: Somehow communicate this to the user
|
||||
//console.log('Total number of results greater than displayed results');
|
||||
}
|
||||
*/
|
||||
|
||||
// Get the result objects' IDs
|
||||
for (i = 0; i < resultsLength; i += 1) {
|
||||
ids.push(results[i][ID]);
|
||||
@ -134,7 +128,10 @@ define(
|
||||
}
|
||||
}
|
||||
|
||||
return searchResults;
|
||||
return {
|
||||
hits: searchResults,
|
||||
total: rawResults.data.hits.total
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
@ -151,7 +148,7 @@ define(
|
||||
|
||||
// If the user input is empty, we want to have no search results.
|
||||
if (searchTerm !== '') {
|
||||
// Process search term
|
||||
// Process the search term
|
||||
searchTerm = processSearchTerm(searchTerm);
|
||||
|
||||
// Create the query to elasticsearch
|
||||
@ -170,7 +167,7 @@ define(
|
||||
return processResults(rawResults, timestamp);
|
||||
});
|
||||
} else {
|
||||
return [];
|
||||
return {hits: [], total: 0};
|
||||
}
|
||||
}
|
||||
|
||||
@ -178,7 +175,11 @@ define(
|
||||
/**
|
||||
* Searches through the filetree for domain objects using a search
|
||||
* term. This is done through querying elasticsearch. Returns a
|
||||
* promise for an array of domain object results.
|
||||
* promise for a result object that has the format
|
||||
* {hits: searchResult[], total: number}
|
||||
* where a searchResult has the format
|
||||
* {id: domainObject ID, object: domainObject, score: number}
|
||||
*
|
||||
* Notes:
|
||||
* * The order of the results is from highest to lowest score,
|
||||
* as elsaticsearch determines them to be.
|
||||
|
@ -92,12 +92,12 @@ define(
|
||||
ids.push(id);
|
||||
}
|
||||
objectService.getObjects(ids).then(function (objects) {
|
||||
var results = [],
|
||||
var searchResults = [],
|
||||
id;
|
||||
|
||||
// Reset and repopulate the latest results
|
||||
for (id in objects) {
|
||||
results.push({
|
||||
searchResults.push({
|
||||
object: objects[id],
|
||||
id: id,
|
||||
score: event.data.results[id]
|
||||
@ -105,7 +105,12 @@ define(
|
||||
}
|
||||
|
||||
// Resove the promise corresponding to this
|
||||
pendingQueries[event.data.timestamp].resolve(results);
|
||||
pendingQueries[event.data.timestamp].resolve(
|
||||
{
|
||||
hits: searchResults,
|
||||
total: searchResults.length // TODO: Make worker return this
|
||||
}
|
||||
);
|
||||
});
|
||||
}
|
||||
}
|
||||
@ -192,7 +197,11 @@ define(
|
||||
* Searches through the filetree for domain objects which match
|
||||
* the search term. This function is to be used as a fallback
|
||||
* in the case where other search services are not avaliable.
|
||||
* Returns a promise for an array of domain object results.
|
||||
* Returns a promise for a result object that has the format
|
||||
* {hits: searchResult[], total: number}
|
||||
* where a searchResult has the format
|
||||
* {id: domainObject ID, object: domainObject, score: number}
|
||||
*
|
||||
* Notes:
|
||||
* * The order of the results is not guarenteed.
|
||||
* * A domain object qualifies as a match for a search input if
|
||||
|
Loading…
x
Reference in New Issue
Block a user