All Downloads are FREE. Search and download functionalities are using the official Maven repository.
Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
META-INF.resources.primefaces.mobile.widgets.paginator.js Maven / Gradle / Ivy
/**
* PrimeFaces Mobile Paginator Widget
*
*/
PrimeFaces.widget.Paginator = PrimeFaces.widget.BaseWidget.extend({
init: function(cfg) {
this.cfg = cfg;
this.jq = $();
var $this = this;
$.each(this.cfg.id, function(index, id){
$this.jq = $this.jq.add($(PrimeFaces.escapeClientId(id)));
});
//elements
this.controlGroups = this.jq.find('> .ui-controlgroup > .ui-controlgroup-controls');
this.pageLinks = this.controlGroups.children('.ui-paginator-page');
this.firstLink = this.controlGroups.children('.ui-paginator-first');
this.prevLink = this.controlGroups.children('.ui-paginator-prev');
this.nextLink = this.controlGroups.children('.ui-paginator-next');
this.endLink = this.controlGroups.children('.ui-paginator-last');
//metadata
this.cfg.rows = (this.cfg.rows === 0) ? this.cfg.rowCount : this.cfg.rows;
this.cfg.pageCount = Math.ceil(this.cfg.rowCount / this.cfg.rows)||1;
this.cfg.pageLinks = this.cfg.pageLinks||10;
this.cfg.currentPageTemplate = this.cfg.currentPageTemplate||'({currentPage} of {totalPages})';
//event bindings
this.bindEvents();
},
bindEvents: function() {
var $this = this;
//page links
this.bindPageLinkEvents();
//First page link
this.firstLink.click(function() {
PrimeFaces.clearSelection();
if(!$(this).hasClass("ui-state-disabled")){
$this.setPage(0);
}
});
//Prev page link
this.prevLink.click(function() {
PrimeFaces.clearSelection();
if(!$(this).hasClass("ui-state-disabled")){
$this.setPage($this.cfg.page - 1);
}
});
//Next page link
this.nextLink.click(function() {
PrimeFaces.clearSelection();
if(!$(this).hasClass("ui-state-disabled")){
$this.setPage($this.cfg.page + 1);
}
});
//Last page link
this.endLink.click(function() {
PrimeFaces.clearSelection();
if(!$(this).hasClass("ui-state-disabled")){
$this.setPage($this.cfg.pageCount - 1);
}
});
},
bindPageLinkEvents: function(){
var $this = this;
this.pageLinks.on('click.paginator', function(e) {
var link = $(this);
if(!link.hasClass('ui-state-disabled') &&! link.hasClass('ui-btn-active')) {
$this.setPage(parseInt(link.text()) - 1);
}
});
},
updateUI: function() {
//boundaries
if(this.cfg.page === 0) {
this.disableElement(this.firstLink);
this.disableElement(this.prevLink);
}
else {
this.enableElement(this.firstLink);
this.enableElement(this.prevLink);
}
if(this.cfg.page === (this.cfg.pageCount - 1)) {
this.disableElement(this.nextLink);
this.disableElement(this.endLink);
}
else {
this.enableElement(this.nextLink);
this.enableElement(this.endLink);
}
this.updatePageLinks();
},
updatePageLinks: function() {
var start, end, delta, j = 0;
//calculate visible page links
this.cfg.pageCount = Math.ceil(this.cfg.rowCount / this.cfg.rows)||1;
var visiblePages = Math.min(this.cfg.pageLinks, this.cfg.pageCount);
//calculate range, keep current in middle if necessary
start = Math.max(0, Math.ceil(this.cfg.page - ((visiblePages) / 2)));
end = Math.min(this.cfg.pageCount - 1, start + visiblePages - 1);
//check when approaching to last page
delta = this.cfg.pageLinks - (end - start + 1);
start = Math.max(0, start - delta);
//update dom
for(var i = start; i <= end; i++) {
var styleClass = 'ui-paginator-page ui-btn';
if(this.cfg.page === i) {
styleClass += " ui-btn-active";
}
this.pageLinks.eq(j).attr('class', styleClass).text(i + 1);
this.pageLinks.eq(parseInt(j + (this.pageLinks.length / 2))).attr('class', styleClass).text(i + 1);
j++;
}
},
setPage: function(p, silent) {
if(p >= 0 && p < this.cfg.pageCount && this.cfg.page != p){
var newState = {
first: this.cfg.rows * p,
rows: this.cfg.rows,
page: p
};
if(silent) {
this.cfg.page = p;
this.updateUI();
}
else {
this.cfg.paginate.call(this, newState);
}
}
},
setTotalRecords: function(value) {
this.cfg.rowCount = value;
this.cfg.pageCount = Math.ceil(value / this.cfg.rows)||1;
this.cfg.page = 0;
this.updateUI();
},
getCurrentPage: function() {
return this.cfg.page;
},
getFirst: function() {
return (this.cfg.rows * this.cfg.page);
},
getContainerHeight: function(margin) {
var height = 0;
for(var i = 0; i < this.jq.length; i++) {
height += this.jq.eq(i).outerHeight(margin);
}
return height;
},
disableElement: function(element) {
element.removeClass('ui-state-hover ui-state-focus ui-state-active').addClass('ui-state-disabled').attr('tabindex', -1);
element.removeClass('ui-state-hover ui-state-focus ui-state-active').addClass('ui-state-disabled').attr('tabindex', -1);
},
enableElement: function(element) {
element.removeClass('ui-state-disabled').attr('tabindex', 0);
}
});