diff --git a/src/app/search/controller/search_criteria_controller.js b/src/app/search/controller/search_criteria_controller.js index a3329c28..45feac59 100644 --- a/src/app/search/controller/search_criteria_controller.js +++ b/src/app/search/controller/search_criteria_controller.js @@ -48,7 +48,7 @@ angular.module('sb.search').controller('SearchCriteriaController', resourceTypes = types || resourceTypes; $scope.criteria = defaultCriteria || []; $scope.searchForCriteria = - Criteria.buildCriteriaSearch(resourceTypes); + Criteria.buildCriteriaSearch(resourceTypes, 5); }; /** diff --git a/src/app/search/directive/search_results.js b/src/app/search/directive/search_results.js index e1713e27..8b83602b 100644 --- a/src/app/search/directive/search_results.js +++ b/src/app/search/directive/search_results.js @@ -20,7 +20,7 @@ * @see ProjectListController */ angular.module('sb.search').directive('searchResults', - function ($log, $parse, Criteria, $injector) { + function ($log, $parse, Criteria, $injector, Preference) { 'use strict'; return { @@ -30,7 +30,8 @@ angular.module('sb.search').directive('searchResults', // Extract the resource type. var resourceName = args.searchResource; - var pageSize = args.searchPageSize || 20; + var pageSize = args.searchPageSize || + Preference.get('page_size'); var searchWithoutCriteria = args.searchWithoutCriteria === 'true'; var criteria = []; diff --git a/src/app/services/criteria/criteria.js b/src/app/services/criteria/criteria.js index db4cf2a3..b2b0faa9 100644 --- a/src/app/services/criteria/criteria.js +++ b/src/app/services/criteria/criteria.js @@ -19,7 +19,7 @@ * validation, filtering, criteria-to-parameter mapping, and more. */ angular.module('sb.services').service('Criteria', - function ($q, $log, $injector) { + function ($q, $log, $injector, Preference) { 'use strict'; return { @@ -91,8 +91,12 @@ angular.module('sb.services').service('Criteria', * customized lambda that will perform our browse search for us. * * @param types An array of resource types to browse. + * @param pageSize An optional page size for the criteria. Defaults + * to the global page_size preference. */ - buildCriteriaSearch: function (types) { + buildCriteriaSearch: function (types, pageSize) { + pageSize = pageSize || Preference.get('page_size'); + var resolvers = []; types.forEach(function (type) { // Retrieve an instance of the declared resource. @@ -122,7 +126,7 @@ angular.module('sb.services').service('Criteria', var promises = []; resolvers.forEach(function (resolver) { - promises.push(resolver(searchString)); + promises.push(resolver(searchString, pageSize)); }); // Wrap everything into a collective promise diff --git a/src/app/services/service/resource_factory.js b/src/app/services/service/resource_factory.js index 433b72cc..c9cb5881 100644 --- a/src/app/services/service/resource_factory.js +++ b/src/app/services/service/resource_factory.js @@ -21,7 +21,8 @@ */ angular.module('sb.services') .service('ResourceFactory', - function ($q, $log, $injector, Criteria, $resource, storyboardApiBase) { + function ($q, $log, $injector, Criteria, $resource, storyboardApiBase, + Preference) { 'use strict'; /** @@ -147,33 +148,36 @@ angular.module('sb.services') /** * Add the criteria resolver method. */ - resource.criteriaResolver = function (searchString) { + resource.criteriaResolver = + function (searchString, pageSize) { + pageSize = pageSize || Preference.get('page_size'); - var deferred = $q.defer(); + var deferred = $q.defer(); - // build the query parameters. - var queryParams = {}; - queryParams[nameField] = searchString; + // build the query parameters. + var queryParams = {}; + queryParams[nameField] = searchString; + queryParams.limit = pageSize; - resource.query(queryParams, - function (result) { - // Transform the results to criteria tags. - var criteriaResults = []; - result.forEach(function (item) { - criteriaResults.push( - Criteria.create(resourceName, - item.id, - item[nameField]) - ); - }); - deferred.resolve(criteriaResults); - }, function () { - deferred.resolve([]); - } - ); + resource.query(queryParams, + function (result) { + // Transform the results to criteria tags. + var criteriaResults = []; + result.forEach(function (item) { + criteriaResults.push( + Criteria.create(resourceName, + item.id, + item[nameField]) + ); + }); + deferred.resolve(criteriaResults); + }, function () { + deferred.resolve([]); + } + ); - return deferred.promise; - }; + return deferred.promise; + }; } diff --git a/src/app/storyboard/controller/header_controller.js b/src/app/storyboard/controller/header_controller.js index cb50368e..0a5e36d9 100644 --- a/src/app/storyboard/controller/header_controller.js +++ b/src/app/storyboard/controller/header_controller.js @@ -96,8 +96,8 @@ angular.module('storyboard').controller('HeaderController', searchString = searchString || ''; $q.all({ - projects: Project.criteriaResolver(searchString), - stories: Story.criteriaResolver(searchString) + projects: Project.criteriaResolver(searchString, 5), + stories: Story.criteriaResolver(searchString, 5) }).then(function (results) { var criteria = [