web/META-INF/resources/js/services.js (76 lines of code) (raw):

/* * Licensed under the Apache License, Version 2.0 (the "License"); you * may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ 'use strict'; /* Services */ var searchServices = angular.module('searchServices', ['ngResource']); searchServices.factory('MetaData', ['$resource', function($resource) { return $resource("services/metadata/search/", {}, { get: {method: 'GET', cache: false, isArray: false} }); }]); searchServices.factory('VocabList', ['$resource', function($resource) { return $resource("services/vocabulary/search/", {}, { get: {method: 'GET', cache: false, isArray: false} }); }]); searchServices.factory('Autocomplete', ['$resource', function($resource) { return $resource("services/autocomplete/query", {}, { get: {method: 'GET', cache: false, isArray: true} }); }]); searchServices.factory('DatasetDetail', ['$resource', function($resource) { return $resource("services/datasetdetail/search/", {}, { get: {method: 'GET', cache: false, isArray: false} }); }]); searchServices.factory('HRecommendation', ['$resource', function($resource) { return $resource("services/hrecommendation/search/", {}, { get: {method: 'GET', cache: false, isArray: false} }); }]); searchServices.factory('SearchOptions', function(){ var searchOptions = {'opt':'Or'}; return { getSearchOptions: function () { return searchOptions; }, setSearchOptions: function (value) { searchOptions = value; } }; }); searchServices.factory('PagerService', function() { // service definition var service = {}; service.GetPager = GetPager; return service; // service implementation function GetPager(totalItems, currentPage, pageSize) { // default to first page currentPage = currentPage || 1; // default page size is 10 pageSize = pageSize || 10; // calculate total pages var totalPages = Math.ceil(totalItems / pageSize); var startPage, endPage; if (totalPages <= 10) { // less than 10 total pages so show all startPage = 1; endPage = totalPages; } else { // more than 10 total pages so calculate start and end pages if (currentPage <= 6) { startPage = 1; endPage = 10; } else if (currentPage + 4 >= totalPages) { startPage = totalPages - 9; endPage = totalPages; } else { startPage = currentPage - 5; endPage = currentPage + 4; } } // calculate start and end item indexes var startIndex = (currentPage - 1) * pageSize; var endIndex = Math.min(startIndex + pageSize - 1, totalItems - 1); // create an array of pages to ng-repeat in the pager control var pages = _.range(startPage, endPage + 1); // return object with all pager properties required by the view return { totalItems: totalItems, currentPage: currentPage, pageSize: pageSize, totalPages: totalPages, startPage: startPage, endPage: endPage, startIndex: startIndex, endIndex: endIndex, pages: pages }; } });