1afedafcbb
includes the options for maximum search results per page, and the maximum number of pages available before help text is shown, and the next page button is disabled
55 lines
No EOL
1.8 KiB
JavaScript
55 lines
No EOL
1.8 KiB
JavaScript
(function() {
|
|
/**
|
|
* Search page.
|
|
*/
|
|
angular.module('quayPages').config(['pages', function(pages) {
|
|
pages.create('search', 'search.html', SearchCtrl, {
|
|
'title': 'Search'
|
|
});
|
|
}]);
|
|
|
|
function SearchCtrl($scope, ApiService, $routeParams, $location, Config) {
|
|
var refreshResults = function() {
|
|
$scope.currentPage = ($routeParams['page'] || '1') * 1;
|
|
|
|
var params = {
|
|
'query': $routeParams['q'],
|
|
'page': $scope.currentPage
|
|
};
|
|
|
|
var MAX_PAGE_RESULTS = Config['SEARCH_MAX_RESULT_PAGE_COUNT'];
|
|
var page = $routeParams['page'] || 1;
|
|
|
|
$scope.maxPopularity = 0;
|
|
$scope.resultsResource = ApiService.conductRepoSearchAsResource(params).get(function(resp) {
|
|
$scope.results = resp['results'];
|
|
// Only show "Next Page" if we have more results, and we aren't on the max page
|
|
$scope.showNextButton = page < MAX_PAGE_RESULTS && resp['has_additional'];
|
|
// Show some help text if we're on the last page, making them specify the search more
|
|
$scope.showMaxResultsHelpText = page >= MAX_PAGE_RESULTS;
|
|
$scope.startIndex = resp['start_index'];
|
|
resp['results'].forEach(function(result) {
|
|
$scope.maxPopularity = Math.max($scope.maxPopularity, result['popularity']);
|
|
});
|
|
});
|
|
};
|
|
|
|
$scope.previousPage = function() {
|
|
$location.search('page', (($routeParams['page'] || 1) * 1) - 1);
|
|
};
|
|
|
|
$scope.nextPage = function() {
|
|
$location.search('page', (($routeParams['page'] || 1) * 1) + 1);
|
|
};
|
|
|
|
$scope.currentQuery = $routeParams['q'];
|
|
refreshResults();
|
|
|
|
$scope.$on('$routeUpdate', function(){
|
|
$scope.currentQuery = $routeParams['q'];
|
|
refreshResults();
|
|
});
|
|
}
|
|
|
|
SearchCtrl.$inject = ['$scope', 'ApiService', '$routeParams', '$location', 'Config'];
|
|
})(); |