Skip to content

Commit

Permalink
added new option to allow external filters
Browse files Browse the repository at this point in the history
  • Loading branch information
manuelpiesold committed Dec 5, 2014
1 parent 7a62f29 commit c0642f3
Show file tree
Hide file tree
Showing 8 changed files with 98 additions and 61 deletions.
31 changes: 16 additions & 15 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,24 +24,25 @@

### Options

| Option | Type | Description | Default |
| ---------------------- | ------- | ------------------------------------------ | -------------- |
| Option | Type | Description | Default |
| ------------------------ | ------- | ------------------------------------------ | -------------- |
|FilterOpts||||
| `useFilter` | Boolean | en-/disable filtering | true |
| `filterInputSelector` | String | selector for the filter-input-element | |
| `notFilterAttribute` | String | disable sort on th if they have this attr | data-no-filter |
| `ignoreCase` | Boolean | en-/disable casesensetive filtering | false |
| `useFilter` | Boolean | en-/disable filtering | true |
| `filterInputSelector` | String | selector for the filter-input-element | |
| `notFilterAttribute` | String | disable sort on th if they have this attr | data-no-filter |
| `ignoreCase` | Boolean | en-/disable casesensetive filtering | false |
| `customFilterAttributes` | Array | custom attributes for external filters | [] |
|PagerOpts||||
| `usePager` | Boolean | en-/disable pagination | true |
| `pagerListSelector` | String | selector for the pager-ul-element | |
| `useDottedPager` | Boolean | en-/disable dotted pager | true |
| `rowsPerPage` | Integer | number of displayed rows per page | 5 |
| `usePager` | Boolean | en-/disable pagination | true |
| `pagerListSelector` | String | selector for the pager-ul-element | |
| `useDottedPager` | Boolean | en-/disable dotted pager | true |
| `rowsPerPage` | Integer | number of displayed rows per page | 5 |
|SorterOpts||||
| `useSorter` | Boolean | en-/disable sorting | true |
| `notSortableAttribute` | String | disable sort on th if they have this attr | data-no-sort |
| `sortTriggerSelector` | String | selector where to find sorttrigger in th | |
| `jumpPageOneAfterSort` | Boolean | sould jump back to page one after sorting | true |
| `initalSortColIndex` | Integer | sort the table inital by given columnindex | -1 |
| `useSorter` | Boolean | en-/disable sorting | true |
| `notSortableAttribute` | String | disable sort on th if they have this attr | data-no-sort |
| `sortTriggerSelector` | String | selector where to find sorttrigger in th | |
| `jumpPageOneAfterSort` | Boolean | sould jump back to page one after sorting | true |
| `initalSortColIndex` | Integer | sort the table inital by given columnindex | -1 |

### Events

Expand Down
57 changes: 36 additions & 21 deletions dist/jquery.tableable.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* jQuery tableable plugin - v2.0.0
* jQuery tableable plugin - v2.1.0
* A plugin to filter, paginate and sort html tables
* http://guhberlin.github.io/tableable
*
Expand Down Expand Up @@ -158,6 +158,10 @@ function Pager ( element, options ) {
this.settings = options;
this.afterPaginate = function() {};

this.settings.attrsToIgnoreRowOnPaging = [].concat(
[this.settings.filteredAttribute], this.settings.customFilterAttributes
);

this.pagerListBuildFunction = 'buildDottedPagerList';
if ( !this.settings.useDottedPager ) {
this.pagerListBuildFunction = 'buildFullPagerList';
Expand All @@ -183,7 +187,7 @@ Pager.prototype.paginate = function () {
.children( 'tr' )
.removeAttr( self.settings.pageIndexAttribute )
.filter( function() {
return !( $(this).hasAttr( self.settings.filteredAttribute ) );
return ( !self.hasElOneOfAttrs( this, self.settings.attrsToIgnoreRowOnPaging ) );
}).each( function(index) {
if ( (index%self.settings.rowsPerPage) === 0 ) { pageCount++; }
$(this).attr( self.settings.pageIndexAttribute, pageCount );
Expand All @@ -200,7 +204,7 @@ Pager.prototype.getPageCount = function() {
( $( self.element )
.children( 'tbody' ).children( 'tr' )
.filter( function() {
return !( $(this).hasAttr( self.settings.filteredAttribute ) );
return ( !self.hasElOneOfAttrs( this, self.settings.attrsToIgnoreRowOnPaging ) );
}).length ) / self.settings.rowsPerPage
)
;
Expand All @@ -219,37 +223,38 @@ Pager.prototype.buildPagerList = function () {
};

Pager.prototype.buildFullPagerList = function() {
var
self = this,
pageCount = self.getPageCount()
;
var
self = this,
pageCount = self.getPageCount()
;

for ( var i=1; i <= pageCount; i++ ) {
$( self.settings.pagerListSelector ).append('<li '+self.settings.pageSwitchPageAttribute+'="'+i+'" ><a>'+i+'</a></li>');
}

};

Pager.prototype.buildDottedPagerList = function() {
var
self = this,
cpi = parseInt( self.settings.currentPageIndex ),
pageCount = self.getPageCount(),
drawDots = false
var
self = this,
cpi = parseInt( self.settings.currentPageIndex ),
pageCount = self.getPageCount(),
drawDots = false
;

for ( var i=1; i <= pageCount; i++ ) {
if (
i === 1 || i === 2 ||
i === cpi || i === cpi-1 || i === cpi+1 ||
i === pageCount || i === pageCount-1
i === 1 || i === 2 ||
i === cpi || i === cpi-1 || i === cpi+1 ||
i === pageCount || i === pageCount-1
){
$( self.settings.pagerListSelector ).append('<li '+self.settings.pageSwitchPageAttribute+'="'+i+'" ><a>'+i+'</a></li>');
drawDots = true;
$( self.settings.pagerListSelector ).append('<li '+self.settings.pageSwitchPageAttribute+'="'+i+'" ><a>'+i+'</a></li>');
drawDots = true;
} else {
if ( drawDots ) {
$( self.settings.pagerListSelector ).append('<li><a>...</a></li>');
drawDots = false;
}
if ( drawDots ) {
$( self.settings.pagerListSelector ).append('<li><a>...</a></li>');
drawDots = false;
}
}
}
};
Expand Down Expand Up @@ -281,6 +286,15 @@ Pager.prototype.showPage = function ( pageIndex ) {
};


Pager.prototype.hasElOneOfAttrs = function( el, attributes ) {
var ret = false;
$.each(attributes, function(index, val) {
if ( $(el).hasAttr( val ) ) { ret = true; }
});
return ret;
};


function Options() {}

Options.prototype.getDefaults = function() {
Expand All @@ -289,6 +303,7 @@ Options.prototype.getDefaults = function() {
filterInputSelector: '',
ignoreCase: false,
notFilterAttribute: 'data-no-filter',
customFilterAttributes: [],

usePager: true,
useDottedPager: true,
Expand Down

0 comments on commit c0642f3

Please sign in to comment.