Skip to content

Instantly share code, notes, and snippets.

@w495
Created December 12, 2013 23:29
Show Gist options
  • Save w495/7937468 to your computer and use it in GitHub Desktop.
Save w495/7937468 to your computer and use it in GitHub Desktop.
Простой паджинатор на JQuery.
define(
'gen_pager',
['jquery', "bootstrap"],
function($, bootstrap){
'use strict';
function Gen_pager()
{
var self = this;
self.options = {
BUTTON : $( ".pages-pager .pages-pager-button" ),
LOADPOINT : $( ".pages-pager .pages-pager-loadpoint" ),
URL : "/pybsadm/orderinfo/?page="
};
self.state = {
'page' : 0,
'prevdata' : null,
'nexturl' : null
};
self.start = function(options){
if(options){
self.options = {
CONTAINER : options.container,
BUTTON : options.button,
LOADPOINT : options.loadpoint,
URL : options.url,
SEARCH : options.search,
BEFORE_INSERT_CONTENT : options.before_insert_content || function(){},
AFTER_INSERT_CONTENT : options.after_insert_content || function(){},
ON_SUCCESS_PAGE_LOAD : options.on_success_page_load || function(){},
ON_ERROR_PAGE_LOAD : options.on_error_page_load || function(){}
};
self.state.nexturl = self.options.URL
}
self.next(function(){
self.next()
});
self.initevents();
};
self.initevents = function(callback){
self.onclick(function(){
self.next();
})
};
self.onclick = function(callback){
self.options.BUTTON.on('click', callback);
};
self.click = function(){
self.options.BUTTON.click();
};
self.lock = function(){
self.options.BUTTON.button('loading');
};
self.unlock = function(){
self.options.BUTTON.button('reset')
};
self.hide = function(){
self.options.BUTTON.hide()
};
self.insert_content = function(data){
self.options.LOADPOINT.before(data);
};
self.spawn = function(f){
return setTimeout(f, 0);
};
self.get = function(success_callback) {
if(self.state.prevdata){
self.options.BEFORE_INSERT_CONTENT();
var result = $(self.state.prevdata);
self.insert_content(result);
self.options.AFTER_INSERT_CONTENT(result);
}
if(!self.state.nexturl){
self.hide();
return false;
}
self.spawn(function(){
self.lock();
jQuery.ajax({
type: "GET",
dataType: "html",
url: self.state.nexturl,
success: function (data, status, response) {
self.unlock();
self.state.prevdata = data;
self.state.prevurl = self.state.nexturl
self.state.nexturl = $(self.state.prevdata).data('next')
if(success_callback){
success_callback()
}
self.options.ON_SUCCESS_PAGE_LOAD()
},
error: function (response, status) {
self.unlock();
if(404 == response.status){
self.hide();
}
self.options.ON_ERROR_PAGE_LOAD()
}
})
});
};
self.next = function(success_callback){
self.state.page += 1;
self.get(success_callback);
};
};
return new Gen_pager();
}
);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment