PHP Classes
elePHPant
Icontem

File: js/teaPaginate.js

Recommend this page to a friend!
  Classes of Basilio  >  teaPagination  >  js/teaPaginate.js  >  Download  
File: js/teaPaginate.js
Role: Auxiliary data
Content type: text/plain
Description: Auxiliary data
Class: teaPagination
Display pagination for database queries using PDO
Author: By
Last change:
Date: 5 years ago
Size: 4,935 bytes
 

 

Contents

Class file image Download
(function(window, $){
    var teaPaginate = function(elem, options){
	this.elem = elem;
        this.$elem = $(elem);
        this.options = options;
    };
    var content;
    teaPaginate.prototype = {
        defaults: {
            type: 'POST',
            url: '',
            data:{page:1},
            textLoading: 'Loading...',
            buttonsContainer: '',
            contentType: "charset=utf-8", 
            OnBefore : '',
            OnLoad: ''
        },
        _ContainerBtn: function(content){
            if(this.defaults.buttonsContainer !== ''){
                var typeContainer;
                if($('.'+this.defaults.buttonsContainer).length > 0)
                    typeContainer = '.';
                else
                    typeContainer = '#';
                if(content !== null)$(typeContainer+this.defaults.buttonsContainer).html(content);
                else return $(typeContainer+this.defaults.buttonsContainer);
            }
            return false;
        },
        init: function() {
            this.defaults = $.extend({}, this.defaults, this.options);
            var setting = this.defaults;
            var page;
            var buttonsElement = false;
            var idElem = this.$elem.attr('id');
            this.$elem.html(setting.textLoading);
            var elemAction = this.$elem;
            if(this._ContainerBtn(null) !== false){
                elemAction = this._ContainerBtn(null);
                buttonsElement = elemAction;
            }
            $.ajax({type:setting.type,dataType:'json',url:setting.url,data:setting.data}).done(function(data){$('#'+idElem).html(data.list); if(buttonsElement)buttonsElement.html(data.buttons)});
            elemAction.live("click", function(e) {
                if($(e.target).is("a")){
                    var type = $(e.target).attr('class');
                    switch(type){
                        case '_first':
                            setting.data = {
                                page:1
                            };
                            page = 1;
                            $.ajax({type:setting.type,dataType:'json',url:setting.url,data:setting.data,beforeSend:setting.OnBefore,success:setting.OnLoad});
                            break;
                        case '_next':
                            page = $(e.target).attr('rel');
                            page = page.replace("_", "");
                            setting.data = {
                                page:page
                            };
                            $.ajax({type:setting.type,dataType:'json',url:setting.url,data:setting.data,beforeSend:setting.OnBefore,success:setting.OnLoad});
                            break;
                        case '_last':
                            page = $(e.target).attr('rel');
                            page = page.replace("_", "");
                            setting.data = {
                                page:page
                            };
                            $.ajax({type:setting.type,dataType:'json',url:setting.url,data:setting.data,beforeSend:setting.OnBefore,success:setting.OnLoad});
                            break;
                        case '_prev':
                            page = $(e.target).attr('rel');
                            page = page.replace("_", "");
                            setting.data = {
                                page:page
                            };
                            $.ajax({type:setting.type,dataType:'json',url:setting.url,data:setting.data,beforeSend:setting.OnBefore,success:setting.OnLoad});
                            break;
                        case '_page':
                            page = $(e.target).attr('rel');
                            page = page.replace("_", "");
                            setting.data = {
                                page:page
                            };
                            $.ajax({type:setting.type,dataType:'json',url:setting.url,data:setting.data,beforeSend:setting.OnBefore,success:setting.OnLoad});
                            break;
                        default:
                            return true;
                    }
                }
                return false;
            });
            return this;
        },
        update: function(options) {
            var setting = $.extend({}, this.defaults, options);
            this.defaults.data.page = options.data.page;
            $.ajax({type:setting.type,dataType:'json',url:setting.url,data:setting.data,beforeSend:setting.OnBefore,success:setting.OnLoad});
        },
        currentPage: function(){
            return this.defaults.data.page;
        }
    };

    $.fn.plugin = function() {
        return this.each(function() {
            new teaPaginate(this).init();
        });
    };

    window.teaPaginate = teaPaginate;
})(window, jQuery);