// GobMx global object definition // hold all other functionality ( function( factory ){ var root = self; // browser global to hold GobMx reference root.GobMx = factory( root, {}) })( function(root, GobMx){ GobMx.VERSION = '0.1'; GobMx.xhrLocked = false; return GobMx; }); // GobMx.Paginator definition ( function(factory){ var root = self; var GobMx = root.GobMx; // browser global to hold GobMx reference GobMx.Paginator = factory(root, {}, root._, root.$) })( function( root, Paginator, _, $){ Paginator = function( options ){ var options = options || {}; this.options = _.extend({ url: $('#route').val() + "/api/v1/levels", paginatedSelector: ".paginated", size: 3 }, options); } _.extend( Paginator.prototype, { // html to show a spinner while loading next page spinner: '
', // fetch a page fetch: function( options ){ options = _.pick(options, 'from', 'size', 'upToId', 'success', 'tab'); var config = this.options; // ajax call get data from server and append to the div var paginated = $(config.paginatedSelector) paginated.append(this.spinner); $.ajax({ url: config.url, data: { offset: options.from || this.offset(), size: options.size || config.size, up_to: options.upToId, tab: options.tab || "" }, success: function( response ){ $('#paginate-spinner').remove(); paginated.append(response); //Reemplazar imagenes rotas, la funcion reemplazar viene de los //assets imageReplace var imagenes = []; imagenes = document.getElementsByTagName('img'); for (i = 0; i < imagenes.length; i++) { reemplazar(imagenes[i]); } if( _.isFunction(options.success) ) options.success.apply(this); } }) }, // compute offset offset: function(){ var paginated = $(this.options.paginatedSelector); return paginated.find('section').size(); } }); return Paginator; });