var ajaxPagination = { sendPaginationRequest : function(data_attributes){ return $.get(data_attributes.url, data_attributes); }, drawLinkIcons : function($el, $parent, response){ var self = this; var links_arr = []; var new_page = $el.data('element_number'); var current_page = $parent.data('current_page'); if(isNaN(new_page)){ if(response.data.length > 0){ if(new_page === 'next'){ current_page+=1 }else{ if(current_page !== 0){ current_page-=1; } } }else{ //if clicking 'next' returned no results then do nothing } $parent.data('current_page', current_page); }else{ $parent.data('current_page', new_page); } var links_arr = self.buildLinkList($parent, response.data); str_arr = []; links_arr.forEach(function(element, index, array){ var class_name = (element-1 === $parent.data('current_page')) ? 'pagination_link selected_page' : 'pagination_link'; if(isNaN(element)){ if(element === '...'){ str_arr.push(""+element+""); }else{ str_arr.push(""+element+""); } }else{ str_arr.push(""+element+""); } }); $parent.children('a').remove(); var str = '' $parent.find('.link_canvas').html(String.prototype.concat.apply(str,str_arr)); $parent.find('.link_canvas a').handleLinkClick(); }, buildDomElements : function($canvas, template, response){ $canvas.html(''); if(response.status == 'success'){ $.each(response.data, function(k,v){ var content = JST[template](v); $canvas.append(content); }); }else{ $canvas.html('There was an error. Try again or reload the page'); } }, buildLinkList: function($parent, data){ var current_page = $parent.data('current_page'); var link_list; if($parent.data('per_page') === undefined || $parent.data('total') === undefined || $parent.data('omit_n_and_p')){ if(data.length < 1){ link_list = ['prev']; }else if(current_page != 0){ link_list = ['prev','next']; }else{ link_list = ['next']; } }else{ var total = $parent.data('total'); var offset = $parent.data('per_page'); var new_page = $parent.data('current_page'); var pages = Math.ceil(total/offset); if(pages > 7){ if(new_page >= 4 && new_page <= pages-5){ link_list = ['prev',1,'...',new_page-1,new_page,new_page+1,new_page+2,new_page+3,'...',pages,'next']; }else if(new_page <= 3){ link_list = new_page === 0 ? [1,2,3,4,5,'...',pages,'next'] : ['prev',1,2,3,4,5,'...',pages,'next'] }else if(new_page >= pages-4){ ////// Should be able to cut off the if statement link_list = new_page === pages-1 ? ['prev',1,'...',pages-4,pages-3,pages-2,pages-1,pages] : ['prev',1,'...',pages-4,pages-3,pages-2,pages-1,pages,'next']; } }else{ link_list = []; if(new_page !== 0){ link_list.push('prev'); } for(var x = 1; x <= pages; x++){ link_list.push(x); } if(new_page !== pages-1){ link_list.push('next'); } } } return link_list } } // end object $(document).ready(function(){ if($('.selected_page').length > 0){ $link = $('.selected_page'); $link.handleLinkClick(); $link.trigger('click'); } });