UNPKG

linagora-rse

Version:
41 lines (31 loc) 1.14 kB
(function() { 'use strict'; angular.module('esn.pagination') .factory('esnPaginationtionProviderBuilder', esnPaginationtionProviderBuilder); function esnPaginationtionProviderBuilder(esnPaginationProvider, infiniteScrollHelper, PageAggregatorService, _) { return function(scope, name, sources, options) { var aggregator; var providers = []; sources = Array.isArray(sources) ? sources : [sources]; sources.forEach(function(source) { providers.push(new esnPaginationProvider(source, options)); }); scope.loadMoreElements = infiniteScrollHelper(scope, function() { if (aggregator) { return load(); } aggregator = new PageAggregatorService(name, providers, { compare: options.compare || defaultCompare, results_per_page: options.limit }); return load(); }); function defaultCompare(a, b) { return b.timestamps.creation - a.timestamps.creation; } function load() { return aggregator.loadNextItems().then(_.property('data'), _.constant([])); } }; } })();