mirror of
https://github.com/koalyptus/TableFilter.git
synced 2026-03-18 00:19:50 +01:00
Merge pull request #522 from koalyptus/519-tbody-working-rows
519 tbody working rows
This commit is contained in:
commit
175a23934f
23 changed files with 466 additions and 83 deletions
4
dist/starter.html
vendored
4
dist/starter.html
vendored
|
|
@ -1,10 +1,10 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>tablefilter v0.5.43 - Starter</title>
|
||||
<title>tablefilter v0.6.0 - Starter</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>tablefilter v0.5.43</h1>
|
||||
<h1>tablefilter v0.6.0</h1>
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
4
dist/tablefilter/style/colsVisibility.css
vendored
4
dist/tablefilter/style/colsVisibility.css
vendored
|
|
@ -1,6 +1,6 @@
|
|||
/**
|
||||
* tablefilter v0.5.43 by Max Guglielmi
|
||||
* build date: 2017-10-09T10:51:27.062Z
|
||||
* tablefilter v0.6.0 by Max Guglielmi
|
||||
* build date: 2017-10-26T02:27:39.033Z
|
||||
* MIT License
|
||||
*/
|
||||
span.colVisSpan{text-align:left;}span.colVisSpan a.colVis{display:inline-block;padding:7px 5px 0;font-size:inherit;font-weight:inherit;vertical-align:top}div.colVisCont{position:relative;background:#fff;-webkit-box-shadow:3px 3px 2px #888;-moz-box-shadow:3px 3px 2px #888;box-shadow:3px 3px 2px #888;position:absolute;display:none;border:1px solid #ccc;height:auto;width:250px;background-color:#fff;margin:35px 0 0 -100px;z-index:10000;padding:10px 10px 10px 10px;text-align:left;font-size:inherit;}div.colVisCont:after,div.colVisCont:before{bottom:100%;left:50%;border:solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none}div.colVisCont:after{border-color:rgba(255,255,255,0);border-bottom-color:#fff;border-width:10px;margin-left:-10px}div.colVisCont:before{border-color:rgba(255,255,255,0);border-bottom-color:#ccc;border-width:12px;margin-left:-12px}div.colVisCont p{margin:6px auto 6px auto}div.colVisCont a.colVis{display:initial;font-weight:inherit}ul.cols_checklist{padding:0;margin:0;list-style-type:none;}ul.cols_checklist label{display:block}ul.cols_checklist input{vertical-align:middle;margin:2px 5px 2px 1px}li.cols_checklist_item{padding:4px;margin:0;}li.cols_checklist_item:hover{background-color:#335ea8;color:#fff}.cols_checklist_slc_item{background-color:#335ea8;color:#fff}
|
||||
4
dist/tablefilter/style/filtersVisibility.css
vendored
4
dist/tablefilter/style/filtersVisibility.css
vendored
|
|
@ -1,6 +1,6 @@
|
|||
/**
|
||||
* tablefilter v0.5.43 by Max Guglielmi
|
||||
* build date: 2017-10-09T10:51:27.062Z
|
||||
* tablefilter v0.6.0 by Max Guglielmi
|
||||
* build date: 2017-10-26T02:27:39.033Z
|
||||
* MIT License
|
||||
*/
|
||||
span.expClpFlt a.btnExpClpFlt{width:35px;height:35px;display:inline-block;}span.expClpFlt a.btnExpClpFlt:hover{background-color:#f4f4f4}span.expClpFlt img{padding:8px 11px 11px 11px}
|
||||
4
dist/tablefilter/style/tablefilter.css
vendored
4
dist/tablefilter/style/tablefilter.css
vendored
|
|
@ -1,6 +1,6 @@
|
|||
/**
|
||||
* tablefilter v0.5.43 by Max Guglielmi
|
||||
* build date: 2017-10-09T10:51:27.062Z
|
||||
* tablefilter v0.6.0 by Max Guglielmi
|
||||
* build date: 2017-10-26T02:27:39.033Z
|
||||
* MIT License
|
||||
*/
|
||||
.activeHeader{background-color:#66afe9 !important;color:#fff !important}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/**
|
||||
* tablefilter v0.5.43 by Max Guglielmi
|
||||
* build date: 2017-10-09T10:51:27.062Z
|
||||
* tablefilter v0.6.0 by Max Guglielmi
|
||||
* build date: 2017-10-26T02:27:39.033Z
|
||||
* MIT License
|
||||
*/
|
||||
table.TF{border-left:1px solid #ccc;border-top:none;border-right:none;border-bottom:none;}table.TF th{background:#ebecee url("images/bg_th.jpg") left top repeat-x;border-bottom:1px solid #d0d0d0;border-right:1px solid #d0d0d0;border-left:1px solid #fff;border-top:1px solid #fff;color:#333}table.TF td{border-bottom:1px dotted #999;padding:5px}.fltrow{background-color:#ebecee !important;}.fltrow th,.fltrow td{border-bottom:1px dotted #666 !important;padding:1px 3px 1px 3px !important}.flt,select.flt,select.flt_multi,.flt_s,.single_flt,.div_checklist{border:1px solid #999 !important}input.flt{width:99% !important}.inf{height:$min-height;background:#d7d7d7 url("images/bg_infDiv.jpg") 0 0 repeat-x !important}input.reset{background:transparent url("images/btn_eraser.gif") center center no-repeat !important}.helpBtn:hover{background-color:transparent}.nextPage{background:transparent url("images/btn_next_page.gif") center center no-repeat !important;}.nextPage:hover{background:transparent url("images/btn_over_next_page.gif") center center no-repeat !important}.previousPage{background:transparent url("images/btn_previous_page.gif") center center no-repeat !important;}.previousPage:hover{background:transparent url("images/btn_over_previous_page.gif") center center no-repeat !important}.firstPage{background:transparent url("images/btn_first_page.gif") center center no-repeat !important;}.firstPage:hover{background:transparent url("images/btn_over_first_page.gif") center center no-repeat !important}.lastPage{background:transparent url("images/btn_last_page.gif") center center no-repeat !important;}.lastPage:hover{background:transparent url("images/btn_over_last_page.gif") center center no-repeat !important}div.grd_Cont{background-color:#ebecee !important;border:1px solid #ccc !important;padding:0 !important;}div.grd_Cont .even{background-color:#fff}div.grd_Cont .odd{background-color:#d5d5d5}div.grd_headTblCont{background-color:#ebecee !important;border-bottom:none !important;}div.grd_headTblCont table{border-right:none !important}div.grd_tblCont table th,div.grd_headTblCont table th,div.grd_headTblCont table td{background:#ebecee url("images/bg_th.jpg") left top repeat-x !important;border-bottom:1px solid #d0d0d0 !important;border-right:1px solid #d0d0d0 !important;border-left:1px solid #fff !important;border-top:1px solid #fff !important}div.grd_tblCont table td{border-bottom:1px solid #999 !important}.grd_inf{background:#d7d7d7 url("images/bg_infDiv.jpg") 0 0 repeat-x !important;border-top:1px solid #d0d0d0 !important}.loader{border:1px solid #999}.defaultLoader{width:32px;height:32px;background:transparent url("images/img_loading.gif") 0 0 no-repeat !important}.even{background-color:#fff}.odd{background-color:#d5d5d5}span.expClpFlt a.btnExpClpFlt:hover{background-color:transparent !important}.activeHeader{background:#999 !important}
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
/**
|
||||
* tablefilter v0.5.43 by Max Guglielmi
|
||||
* build date: 2017-10-09T10:51:27.062Z
|
||||
* tablefilter v0.6.0 by Max Guglielmi
|
||||
* build date: 2017-10-26T02:27:39.033Z
|
||||
* MIT License
|
||||
*/
|
||||
table.TF{border-left:1px dotted #81963b;border-top:none;border-right:0;border-bottom:none;}table.TF th{background:#39424b url("images/bg_headers.jpg") left top repeat-x;border-bottom:0;border-right:1px dotted #d0d0d0;border-left:0;border-top:0;color:#fff}table.TF td{border-bottom:1px dotted #81963b;border-right:1px dotted #81963b;padding:5px}.fltrow{background-color:#81963b !important;}.fltrow th,.fltrow td{border-bottom:1px dotted #39424b !important;border-right:1px dotted #fff !important;border-left:0 !important;border-top:0 !important;padding:1px 3px 1px 3px !important}.flt,select.flt,select.flt_multi,.flt_s,.single_flt,.div_checklist{border:1px solid #687830 !important}input.flt{width:99% !important}.inf{background:#d8d8d8;height:$min-height}input.reset{width:53px;background:transparent url("images/btn_filter.png") center center no-repeat !important}.helpBtn:hover{background-color:transparent}.nextPage{background:transparent url("images/btn_next_page.gif") center center no-repeat !important}.previousPage{background:transparent url("images/btn_previous_page.gif") center center no-repeat !important}.firstPage{background:transparent url("images/btn_first_page.gif") center center no-repeat !important}.lastPage{background:transparent url("images/btn_last_page.gif") center center no-repeat !important}div.grd_Cont{background:#81963b url("images/bg_headers.jpg") left top repeat-x !important;border:1px solid #ccc !important;padding:0 1px 1px 1px !important;}div.grd_Cont .even{background-color:#bccd83}div.grd_Cont .odd{background-color:#fff}div.grd_headTblCont{background-color:#ebecee !important;border-bottom:none !important}div.grd_tblCont table{border-right:none !important;}div.grd_tblCont table td{border-bottom:1px dotted #81963b;border-right:1px dotted #81963b}div.grd_tblCont table th,div.grd_headTblCont table th{background:transparent url("images/bg_headers.jpg") 0 0 repeat-x !important;border-bottom:0 !important;border-right:1px dotted #d0d0d0 !important;border-left:0 !important;border-top:0 !important;padding:0 4px 0 4px !important;color:#fff !important;height:35px !important}div.grd_headTblCont table td{border-bottom:1px dotted #39424b !important;border-right:1px dotted #fff !important;border-left:0 !important;border-top:0 !important;background-color:#81963b !important;padding:1px 3px 1px 3px !important}.grd_inf{background-color:#d8d8d8;border-top:1px solid #d0d0d0 !important}.loader{border:0 !important;background:#81963b !important}.defaultLoader{width:32px;height:32px;background:transparent url("images/img_loading.gif") 0 0 no-repeat !important}.even{background-color:#bccd83}.odd{background-color:#fff}span.expClpFlt a.btnExpClpFlt:hover{background-color:transparent !important}.activeHeader{background:#81963b !important}
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
/**
|
||||
* tablefilter v0.5.43 by Max Guglielmi
|
||||
* build date: 2017-10-09T10:51:27.062Z
|
||||
* tablefilter v0.6.0 by Max Guglielmi
|
||||
* build date: 2017-10-26T02:27:39.033Z
|
||||
* MIT License
|
||||
*/
|
||||
table.TF{padding:0;color:#000;border-right:1px solid #a4bed4;border-top:1px solid #a4bed4;border-left:1px solid #a4bed4;border-bottom:0;}table.TF th{margin:0;color:inherit;background:#d1e5fe url("images/bg_skyblue.gif") 0 0 repeat-x;border-color:#fdfdfd #a4bed4 #a4bed4 #fdfdfd;border-width:1px;border-style:solid}table.TF td{margin:0;padding:5px;color:inherit;border-bottom:1px solid #a4bed4;border-left:0;border-top:0;border-right:0}.fltrow{background-color:#d1e5fe !important;}.fltrow th,.fltrow td{padding:1px 3px 1px 3px !important}.flt,select.flt,select.flt_multi,.flt_s,.single_flt,.div_checklist{border:1px solid #a4bed4 !important}input.flt{width:99% !important}.inf{background-color:#e3efff !important;border:1px solid #a4bed4;height:$min-height;color:#004a6f}div.tot,div.status{border-right:0 !important}.helpBtn:hover{background-color:transparent}input.reset{background:transparent url("images/icn_clear_filters.png") center center no-repeat !important}.nextPage{background:transparent url("images/btn_next_page.gif") center center no-repeat !important;border:1px solid transparent !important;}.nextPage:hover{background:#ffe4ab url("images/btn_next_page.gif") center center no-repeat !important;border:1px solid #ffb552 !important}.previousPage{background:transparent url("images/btn_prev_page.gif") center center no-repeat !important;border:1px solid transparent !important;}.previousPage:hover{background:#ffe4ab url("images/btn_prev_page.gif") center center no-repeat !important;border:1px solid #ffb552 !important}.firstPage{background:transparent url("images/btn_first_page.gif") center center no-repeat !important;border:1px solid transparent !important;}.firstPage:hover{background:#ffe4ab url("images/btn_first_page.gif") center center no-repeat !important;border:1px solid #ffb552 !important}.lastPage{background:transparent url("images/btn_last_page.gif") center center no-repeat !important;border:1px solid transparent !important;}.lastPage:hover{background:#ffe4ab url("images/btn_last_page.gif") center center no-repeat !important;border:1px solid #ffb552 !important}.activeHeader{background:#ffe4ab !important;border:1px solid #ffb552 !important;color:inherit !important}div.grd_Cont{background-color:#d9eaed !important;border:1px solid #9cc !important;padding:0 !important;}div.grd_Cont .even{background-color:#fff}div.grd_Cont .odd{background-color:#e3efff}div.grd_headTblCont{background-color:#d9eaed !important;border-bottom:none !important}div.grd_tblCont table{border-right:none !important}div.grd_tblCont table th,div.grd_headTblCont table th,div.grd_headTblCont table td{background:#d9eaed url("images/bg_skyblue.gif") left top repeat-x;border-bottom:1px solid #a4bed4;border-right:1px solid #a4bed4 !important;border-left:1px solid #fff !important;border-top:1px solid #fff !important}div.grd_tblCont table td{border-bottom:1px solid #a4bed4 !important;border-right:0 !important;border-left:0 !important;border-top:0 !important}.grd_inf{background-color:#cce2fe;color:#004a6f;border-top:1px solid #9cc !important;}.grd_inf a{text-decoration:none;font-weight:bold}.loader{background-color:#2d8eef;border:1px solid #cce2fe;border-radius:5px}.even{background-color:#fff}.odd{background-color:#e3efff}span.expClpFlt a.btnExpClpFlt:hover{background-color:transparent !important}.ezActiveRow{background-color:#ffdc61 !important;color:inherit}.ezSelectedRow{background-color:#ffe4ab !important;color:inherit}.ezActiveCell{background-color:#fff !important;color:#000 !important;font-weight:bold}.ezETSelectedCell{background-color:#fff !important;font-weight:bold;color:#000 !important}
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
/**
|
||||
* tablefilter v0.5.43 by Max Guglielmi
|
||||
* build date: 2017-10-09T10:51:27.062Z
|
||||
* tablefilter v0.6.0 by Max Guglielmi
|
||||
* build date: 2017-10-26T02:27:39.033Z
|
||||
* MIT License
|
||||
*/
|
||||
table.TF{padding:0;color:inherit;border-right:1px solid transparent;border-top:1px solid transparent;border-left:1px solid transparent;border-bottom:0;}table.TF th{margin:0;color:inherit;background-color:transparent;border-color:transparent;border-width:1px;border-style:solid;}table.TF th:last-child{border-right:1px solid transparent}table.TF td{margin:0;padding:5px;color:inherit;border-bottom:1px solid transparent;border-left:0;border-top:0;border-right:0}.fltrow{background-color:transparent;}.fltrow th,.fltrow td{padding:1px 3px 1px 3px;border-bottom:1px solid transparent !important;}.fltrow th:last-child,.fltrow td:last-child{border-right:1px solid transparent}.flt,select.flt,select.flt_multi,.flt_s,.single_flt,.div_checklist{border:1px solid #a4bed4}input.flt{width:99% !important}.inf{background-color:transparent;border:1px solid transparent;height:$min-height;color:inherit}div.tot,div.status{border-right:0 !important}.helpBtn:hover{background-color:transparent}input.reset{background:transparent url("images/icn_clear_filters.png") center center no-repeat !important}.nextPage{background:transparent url("images/btn_next_page.gif") center center no-repeat !important;border:1px solid transparent !important;}.nextPage:hover{background:#f7f7f7 url("images/btn_next_page.gif") center center no-repeat !important;border:1px solid #f7f7f7 !important}.previousPage{background:transparent url("images/btn_prev_page.gif") center center no-repeat !important;border:1px solid transparent !important;}.previousPage:hover{background:#f7f7f7 url("images/btn_prev_page.gif") center center no-repeat !important;border:1px solid #f7f7f7 !important}.firstPage{background:transparent url("images/btn_first_page.gif") center center no-repeat !important;border:1px solid transparent !important;}.firstPage:hover{background:#f7f7f7 url("images/btn_first_page.gif") center center no-repeat !important;border:1px solid #f7f7f7 !important}.lastPage{background:transparent url("images/btn_last_page.gif") center center no-repeat !important;border:1px solid transparent !important;}.lastPage:hover{background:#f7f7f7 url("images/btn_last_page.gif") center center no-repeat !important;border:1px solid #f7f7f7 !important}.activeHeader{background:#f7f7f7 !important;border:1px solid transparent;color:inherit !important}div.grd_Cont{-webkit-box-shadow:0 0 0 0 rgba(50,50,50,0.75);-moz-box-shadow:0 0 0 0 rgba(50,50,50,0.75);box-shadow:0 0 0 0 rgba(50,50,50,0.75);background-color:transparent;border:1px solid transparent;padding:0 !important;}div.grd_Cont .even{background-color:transparent}div.grd_Cont .odd{background-color:#f7f7f7}div.grd_headTblCont{background-color:transparent;border-bottom:none !important}div.grd_tblCont table{border-right:none !important}div.grd_tblCont table th,div.grd_headTblCont table th,div.grd_headTblCont table td{background:transparent;border-bottom:1px solid transparent;border-right:1px solid transparent !important;border-left:1px solid transparent;border-top:1px solid transparent}div.grd_tblCont table td{border-bottom:1px solid transparent;border-right:0 !important;border-left:0 !important;border-top:0 !important}.grd_inf{background-color:transparent;color:inherit;border-top:1px solid transparent;}.grd_inf a{text-decoration:none;font-weight:bold}.loader{background-color:#f7f7f7;border:1px solid #f7f7f7;border-radius:5px;color:#000;text-shadow:none}.even{background-color:transparent}.odd{background-color:#f7f7f7}span.expClpFlt a.btnExpClpFlt:hover{background-color:transparent !important}.ezActiveRow{background-color:#ccc !important;color:inherit}.ezSelectedRow{background-color:#ccc !important;color:inherit}.ezActiveCell{background-color:transparent;color:inherit;font-weight:bold}.ezETSelectedCell{background-color:transparent;font-weight:bold;color:inherit}
|
||||
6
dist/tablefilter/tablefilter.js
vendored
6
dist/tablefilter/tablefilter.js
vendored
File diff suppressed because one or more lines are too long
2
dist/tablefilter/tablefilter.js.map
vendored
2
dist/tablefilter/tablefilter.js.map
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
dist/tablefilter/tf-0-c7a91c786637bc856ce5.js.map
vendored
Normal file
1
dist/tablefilter/tf-0-c7a91c786637bc856ce5.js.map
vendored
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "tablefilter",
|
||||
"version": "0.5.43",
|
||||
"version": "0.6.0",
|
||||
"description": "A Javascript library making HTML tables filterable and a bit more",
|
||||
"license": "MIT",
|
||||
"author": {
|
||||
|
|
|
|||
|
|
@ -236,7 +236,7 @@ export class CheckList extends BaseDropdown {
|
|||
for (let k = tf.refRow; k < nbRows; k++) {
|
||||
// always visible rows don't need to appear on selects as always
|
||||
// valid
|
||||
if (tf.hasVisibleRows && tf.visibleRows.indexOf(k) !== -1) {
|
||||
if (tf.excludeRows.indexOf(k) !== -1) {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -190,7 +190,7 @@ export class Dropdown extends BaseDropdown {
|
|||
for (let k = tf.refRow; k < nbRows; k++) {
|
||||
// always visible rows don't need to appear on selects as always
|
||||
// valid
|
||||
if (tf.hasVisibleRows && tf.visibleRows.indexOf(k) !== -1) {
|
||||
if (tf.excludeRows.indexOf(k) !== -1) {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -6,7 +6,8 @@ import {
|
|||
import {contains, matchCase, rgxEsc, trim} from './string';
|
||||
import {isEmpty as isEmptyString} from './string';
|
||||
import {
|
||||
isArray, isEmpty, isFn, isNumber, isObj, isString, isUndef, EMPTY_FN
|
||||
isArray, isEmpty, isFn, isNumber, isObj, isString, isUndef, EMPTY_FN,
|
||||
isBoolean
|
||||
} from './types';
|
||||
import {parse as parseNb} from './number';
|
||||
import {
|
||||
|
|
@ -365,16 +366,18 @@ export class TableFilter {
|
|||
this.activeFilterId = null;
|
||||
|
||||
/**
|
||||
* Enable/disable always visible rows, excluded from filtering
|
||||
* Determine if there are excluded rows from filtering
|
||||
* @type {Boolean}
|
||||
* @private
|
||||
*/
|
||||
this.hasVisibleRows = Boolean(f.rows_always_visible);
|
||||
this.hasExcludedRows = Boolean(isArray(f.exclude_rows) &&
|
||||
f.exclude_rows.length > 0);
|
||||
|
||||
/**
|
||||
* List of row indexes to be excluded from filtering
|
||||
* @type {Array}
|
||||
*/
|
||||
this.visibleRows = this.hasVisibleRows ? f.rows_always_visible : [];
|
||||
this.excludeRows = defaultsArr(f.exclude_rows, []);
|
||||
|
||||
/**
|
||||
* List of containers IDs where external filters will be generated
|
||||
|
|
@ -999,7 +1002,7 @@ export class TableFilter {
|
|||
}//if this.fltGrid
|
||||
|
||||
/* Features */
|
||||
if (this.hasVisibleRows) {
|
||||
if (this.hasExcludedRows) {
|
||||
this.emitter.on(['after-filtering'],
|
||||
() => this.enforceVisibility());
|
||||
this.enforceVisibility();
|
||||
|
|
@ -1440,7 +1443,7 @@ export class TableFilter {
|
|||
}
|
||||
|
||||
// unsubscribe to events
|
||||
if (this.hasVisibleRows) {
|
||||
if (this.hasExcludedRows) {
|
||||
emitter.off(['after-filtering'], () => this.enforceVisibility());
|
||||
}
|
||||
if (this.linkedFilters) {
|
||||
|
|
@ -1888,7 +1891,7 @@ export class TableFilter {
|
|||
* Return the data of a specified column
|
||||
* @param {Number} colIndex Column index
|
||||
* @param {Boolean} [includeHeaders=false] Include headers row
|
||||
* @param {Arrat} [exclude=[]] List of row indexes to be excluded
|
||||
* @param {Array} [exclude=[]] List of row indexes to be excluded
|
||||
* @return Flat list of data for a column
|
||||
*/
|
||||
getColumnData(colIndex, includeHeaders = false, exclude = []) {
|
||||
|
|
@ -1899,7 +1902,7 @@ export class TableFilter {
|
|||
* Return the values of a specified column
|
||||
* @param {Number} colIndex Column index
|
||||
* @param {Boolean} [includeHeaders=false] Include headers row
|
||||
* @param {Arrat} [exclude=[]] List of row indexes to be excluded
|
||||
* @param {Array} [exclude=[]] List of row indexes to be excluded
|
||||
* @return Flat list of values for a column
|
||||
*/
|
||||
getColumnValues(colIndex, includeHeaders = false, exclude = []) {
|
||||
|
|
@ -2063,17 +2066,29 @@ export class TableFilter {
|
|||
}
|
||||
|
||||
/**
|
||||
* Return the number of filterable rows starting from reference row if
|
||||
* Return the number of working rows starting from reference row if
|
||||
* defined
|
||||
* @param {Boolean} includeHeaders Include the headers row
|
||||
* @return {Number} Number of filterable rows
|
||||
* @param {Boolean} includeHeaders Include the headers row(s)
|
||||
* @return {Number} Number of working rows
|
||||
*/
|
||||
getRowsNb(includeHeaders) {
|
||||
let s = includeHeaders === true ? 0 : this.refRow;
|
||||
let ntrs = this.dom().rows.length;
|
||||
return parseInt(ntrs - s, 10);
|
||||
let nbRows = this.getWorkingRows().length;
|
||||
if (this.dom().tHead) {
|
||||
return includeHeaders ?
|
||||
nbRows + this.dom().querySelectorAll('thead > tr').length :
|
||||
nbRows;
|
||||
}
|
||||
return includeHeaders ? nbRows : nbRows - this.refRow;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the collection of the working rows, that is, the rows belonging
|
||||
* to the tbody section(s)
|
||||
* @returns {Array}
|
||||
*/
|
||||
getWorkingRows() {
|
||||
return [].slice.call(this.dom().querySelectorAll('tbody > tr'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the text content of a given cell
|
||||
|
|
@ -2393,12 +2408,12 @@ export class TableFilter {
|
|||
*/
|
||||
validateRow(rowIndex, isValid) {
|
||||
let row = this.dom().rows[rowIndex];
|
||||
if (!row || typeof isValid !== 'boolean') {
|
||||
if (!row || !isBoolean(isValid)) {
|
||||
return;
|
||||
}
|
||||
|
||||
// always visible rows are valid
|
||||
if (this.hasVisibleRows && this.visibleRows.indexOf(rowIndex) !== -1) {
|
||||
if (this.excludeRows.indexOf(rowIndex) !== -1) {
|
||||
isValid = true;
|
||||
}
|
||||
|
||||
|
|
@ -2416,7 +2431,6 @@ export class TableFilter {
|
|||
}
|
||||
|
||||
this.onRowValidated(this, rowIndex);
|
||||
|
||||
this.emitter.emit('row-validated', this, rowIndex);
|
||||
}
|
||||
}
|
||||
|
|
@ -2522,12 +2536,12 @@ export class TableFilter {
|
|||
* Make defined rows always visible
|
||||
*/
|
||||
enforceVisibility() {
|
||||
if (!this.hasVisibleRows) {
|
||||
if (!this.hasExcludedRows) {
|
||||
return;
|
||||
}
|
||||
let nbRows = this.getRowsNb(true);
|
||||
for (let i = 0, len = this.visibleRows.length; i < len; i++) {
|
||||
let row = this.visibleRows[i];
|
||||
for (let i = 0, len = this.excludeRows.length; i < len; i++) {
|
||||
let row = this.excludeRows[i];
|
||||
//row index cannot be > nrows
|
||||
if (row <= nbRows) {
|
||||
this.validateRow(row, true);
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>TableFilter always visible rows tests</title>
|
||||
<title>TableFilter excluded rows tests</title>
|
||||
<link rel="stylesheet" href="libs/qunit/qunit.css">
|
||||
<script src="libs/qunit/qunit.js"></script>
|
||||
<script src="libs/polyfill.js"></script>
|
||||
|
|
@ -84,7 +84,7 @@
|
|||
</table>
|
||||
|
||||
<script src="../dist/tablefilter/tablefilter.js"></script>
|
||||
<script src="test-always-visible-rows.js"></script>
|
||||
<script src="test-excluded-rows.js"></script>
|
||||
|
||||
<div id="qunit"></div>
|
||||
<div id="qunit-fixture"></div>
|
||||
|
|
@ -1,47 +1,48 @@
|
|||
(function(win, TableFilter){
|
||||
var tf = new TableFilter('demo', {
|
||||
base_path: '../dist/tablefilter/',
|
||||
rows_always_visible: [4, 9]
|
||||
exclude_rows: [4, 9]
|
||||
});
|
||||
tf.init();
|
||||
|
||||
module('Sanity checks');
|
||||
test('Always visible rows', function() {
|
||||
test('Excluded rows', function() {
|
||||
deepEqual(tf instanceof TableFilter, true, 'TableFilter type');
|
||||
deepEqual(tf.hasVisibleRows, true, 'Contains always visible rows');
|
||||
deepEqual(tf.hasExcludedRows, true, 'Has excluded rows');
|
||||
deepEqual(tf.excludeRows, [4, 9], 'Excluded rows');
|
||||
});
|
||||
|
||||
module('Behaviour');
|
||||
test('for filtered table', function() {
|
||||
tf.setFilterValue(0, 'Hello');
|
||||
tf.filter();
|
||||
var alwaysVisibleRow1 = tf.dom().rows[4];
|
||||
var alwaysVisibleRow2 = tf.dom().rows[9];
|
||||
var excludedRow1 = tf.dom().rows[4];
|
||||
var excludedRow2 = tf.dom().rows[9];
|
||||
deepEqual(
|
||||
tf.getRowDisplay(alwaysVisibleRow1),
|
||||
tf.getRowDisplay(excludedRow1),
|
||||
'',
|
||||
'Row display for alwaysVisibleRow1'
|
||||
'Row display for excludedRow1'
|
||||
);
|
||||
deepEqual(
|
||||
tf.getRowDisplay(alwaysVisibleRow2),
|
||||
tf.getRowDisplay(excludedRow2),
|
||||
'',
|
||||
'Row display for alwaysVisibleRow2'
|
||||
'Row display for excludedRow2'
|
||||
);
|
||||
});
|
||||
|
||||
test('after filters are cleared', function() {
|
||||
tf.clearFilters();
|
||||
var alwaysVisibleRow1 = tf.dom().rows[4];
|
||||
var alwaysVisibleRow2 = tf.dom().rows[9];
|
||||
var excludedRow1 = tf.dom().rows[4];
|
||||
var excludedRow2 = tf.dom().rows[9];
|
||||
deepEqual(
|
||||
tf.getRowDisplay(alwaysVisibleRow1),
|
||||
tf.getRowDisplay(excludedRow1),
|
||||
'',
|
||||
'Row display for alwaysVisibleRow1'
|
||||
'Row display for excludedRow1'
|
||||
);
|
||||
deepEqual(
|
||||
tf.getRowDisplay(alwaysVisibleRow2),
|
||||
tf.getRowDisplay(excludedRow2),
|
||||
'',
|
||||
'Row display for alwaysVisibleRow2'
|
||||
'Row display for excludedRow2'
|
||||
);
|
||||
|
||||
testPaging();
|
||||
|
|
@ -51,7 +52,7 @@
|
|||
tf.destroy();
|
||||
tf = new TableFilter('demo', {
|
||||
base_path: '../dist/tablefilter/',
|
||||
rows_always_visible: [4, 9],
|
||||
exclude_rows: [4, 9],
|
||||
paging: {
|
||||
length: 2
|
||||
}
|
||||
|
|
@ -63,49 +64,49 @@
|
|||
test('for filtered table', function() {
|
||||
tf.setFilterValue(0, 'Hello');
|
||||
tf.filter();
|
||||
var alwaysVisibleRow1 = tf.dom().rows[4];
|
||||
var alwaysVisibleRow2 = tf.dom().rows[9];
|
||||
var excludedRow1 = tf.dom().rows[4];
|
||||
var excludedRow2 = tf.dom().rows[9];
|
||||
deepEqual(
|
||||
tf.getRowDisplay(alwaysVisibleRow1),
|
||||
tf.getRowDisplay(excludedRow1),
|
||||
'',
|
||||
'Row display for alwaysVisibleRow1'
|
||||
'Row display for excludedRow1'
|
||||
);
|
||||
deepEqual(
|
||||
tf.getRowDisplay(alwaysVisibleRow2),
|
||||
tf.getRowDisplay(excludedRow2),
|
||||
'',
|
||||
'Row display for alwaysVisibleRow2'
|
||||
'Row display for excludedRow2'
|
||||
);
|
||||
});
|
||||
|
||||
test('after filters are cleared', function() {
|
||||
tf.clearFilters();
|
||||
var alwaysVisibleRow1 = tf.dom().rows[4];
|
||||
var alwaysVisibleRow2 = tf.dom().rows[9];
|
||||
var excludedRow1 = tf.dom().rows[4];
|
||||
var excludedRow2 = tf.dom().rows[9];
|
||||
deepEqual(
|
||||
tf.getRowDisplay(alwaysVisibleRow1),
|
||||
tf.getRowDisplay(excludedRow1),
|
||||
'none',
|
||||
'Row display for alwaysVisibleRow1'
|
||||
'Row display for excludedRow1'
|
||||
);
|
||||
deepEqual(
|
||||
tf.getRowDisplay(alwaysVisibleRow2),
|
||||
tf.getRowDisplay(excludedRow2),
|
||||
'none',
|
||||
'Row display for alwaysVisibleRow2'
|
||||
'Row display for excludedRow2'
|
||||
);
|
||||
});
|
||||
|
||||
test('after changing pagination page', function() {
|
||||
paging.setPage(2);
|
||||
var alwaysVisibleRow1 = tf.dom().rows[4];
|
||||
var alwaysVisibleRow2 = tf.dom().rows[9];
|
||||
var excludedRow1 = tf.dom().rows[4];
|
||||
var excludedRow2 = tf.dom().rows[9];
|
||||
deepEqual(
|
||||
tf.getRowDisplay(alwaysVisibleRow1),
|
||||
tf.getRowDisplay(excludedRow1),
|
||||
'',
|
||||
'Row display for alwaysVisibleRow1'
|
||||
'Row display for excludedRow1'
|
||||
);
|
||||
deepEqual(
|
||||
tf.getRowDisplay(alwaysVisibleRow2),
|
||||
tf.getRowDisplay(excludedRow2),
|
||||
'none',
|
||||
'Row display for alwaysVisibleRow2'
|
||||
'Row display for excludedRow2'
|
||||
);
|
||||
|
||||
tf.destroy();
|
||||
96
test/test-tfoot.html
Normal file
96
test/test-tfoot.html
Normal file
|
|
@ -0,0 +1,96 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>TableFilter tfoot tests</title>
|
||||
<link rel="stylesheet" href="libs/qunit/qunit.css">
|
||||
<script src="libs/qunit/qunit.js"></script>
|
||||
<script src="libs/polyfill.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<table id="demo">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>From</th>
|
||||
<th>Destination</th>
|
||||
<th>Road Distance (km)</th>
|
||||
<th>By Air (hrs)</th>
|
||||
<th>By Rail (hrs)</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<td><strong>footer</strong></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>footer</strong></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><strong>Sydney</strong></td>
|
||||
<td>Adelaide</td>
|
||||
<td>1412</td>
|
||||
<td>1.4</td>
|
||||
<td>25.3</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Sydney</strong></td>
|
||||
<td>Brisbane</td>
|
||||
<td>982</td>
|
||||
<td>1.5</td>
|
||||
<td>16</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Sydney</strong></td>
|
||||
<td>Canberra</td>
|
||||
<td>286</td>
|
||||
<td>.6</td>
|
||||
<td>4.3</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Sydney</strong></td>
|
||||
<td>Melbourne</td>
|
||||
<td>872</td>
|
||||
<td>1.1</td>
|
||||
<td>10.5</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Adelaide</strong></td>
|
||||
<td>Perth</td>
|
||||
<td>2781</td>
|
||||
<td>3.1</td>
|
||||
<td>38</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Adelaide</strong></td>
|
||||
<td>Alice Springs</td>
|
||||
<td>1533</td>
|
||||
<td>2</td>
|
||||
<td>20.25</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Adelaide</strong></td>
|
||||
<td>Brisbane</td>
|
||||
<td>2045</td>
|
||||
<td>2.15</td>
|
||||
<td>40</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<script src="../dist/tablefilter/tablefilter.js"></script>
|
||||
<script src="test-tfoot.js"></script>
|
||||
|
||||
<div id="qunit"></div>
|
||||
<div id="qunit-fixture"></div>
|
||||
</body>
|
||||
</html>
|
||||
123
test/test-tfoot.js
Normal file
123
test/test-tfoot.js
Normal file
|
|
@ -0,0 +1,123 @@
|
|||
|
||||
var tf = new TableFilter('demo', {
|
||||
base_path: '../dist/tablefilter/'
|
||||
});
|
||||
tf.init();
|
||||
|
||||
module('Sanity checks');
|
||||
test('tfoot', function() {
|
||||
deepEqual(tf instanceof TableFilter, true, 'TableFilter instanciated');
|
||||
deepEqual(tf.getFiltersRowIndex(), 0, 'Filters row index');
|
||||
deepEqual(tf.refRow, 2, 'Reference row index');
|
||||
deepEqual(tf.getRowsNb(), 7, 'nb working rows');
|
||||
deepEqual(tf.getRowsNb(true), 9, 'nb working rows with headers');
|
||||
notEqual(tf.getFilterElement(0), null, 'Filter element for column 0');
|
||||
|
||||
tf.setFilterValue(1, 'Ade');
|
||||
tf.filter();
|
||||
|
||||
deepEqual(tf.getValidRows(), [2], 'Filtered row');
|
||||
deepEqual(
|
||||
tf.getVisibleColumnData(0),
|
||||
['Sydney'],
|
||||
'Get data API does not include footer'
|
||||
);
|
||||
deepEqual(
|
||||
tf.getFilteredDataCol(0),
|
||||
['Sydney'],
|
||||
'Get data API does not include footer'
|
||||
);
|
||||
});
|
||||
|
||||
test('tfoot with paging', function() {
|
||||
tf.destroy();
|
||||
tf = new TableFilter('demo', {
|
||||
base_path: '../dist/tablefilter/',
|
||||
paging: { length: 3 }
|
||||
});
|
||||
tf.init();
|
||||
|
||||
deepEqual(tf instanceof TableFilter, true, 'TableFilter instanciated');
|
||||
deepEqual(tf.getFiltersRowIndex(), 0, 'Filters row index');
|
||||
deepEqual(tf.refRow, 2, 'Reference row index');
|
||||
deepEqual(tf.getRowsNb(), 7, 'nb working rows');
|
||||
deepEqual(tf.getRowsNb(true), 9, 'nb working rows with headers');
|
||||
notEqual(tf.getFilterElement(0), null, 'Filter element for column 0');
|
||||
|
||||
tf.setFilterValue(1, 'Ade');
|
||||
tf.filter();
|
||||
|
||||
deepEqual(tf.getValidRows(), [2], 'Filtered row');
|
||||
|
||||
deepEqual(tf.getValidRows(), [2], 'Filtered row');
|
||||
deepEqual(
|
||||
tf.getVisibleColumnData(0),
|
||||
['Sydney'],
|
||||
'Get data API does not include footer'
|
||||
);
|
||||
deepEqual(
|
||||
tf.getFilteredDataCol(0),
|
||||
['Sydney'],
|
||||
'Get data API does not include footer'
|
||||
);
|
||||
|
||||
tf.clearFilters();
|
||||
|
||||
var paging = tf.feature('paging');
|
||||
paging.setPage(3);
|
||||
|
||||
deepEqual(tf.getRowDisplay(tf.dom().tFoot.rows[0]), '',
|
||||
'Footer row visible');
|
||||
|
||||
deepEqual(tf.getRowDisplay(tf.dom().tFoot.rows[1]), '',
|
||||
'Footer row visible');
|
||||
});
|
||||
|
||||
test('tfoot with grid-layout', function() {
|
||||
tf.destroy();
|
||||
tf = new TableFilter('demo', {
|
||||
base_path: '../dist/tablefilter/',
|
||||
grid_layout: true
|
||||
});
|
||||
tf.init();
|
||||
|
||||
deepEqual(tf instanceof TableFilter, true, 'TableFilter instanciated');
|
||||
deepEqual(tf.getFiltersRowIndex(), 1, 'Filters row index');
|
||||
deepEqual(tf.refRow, 0, 'Reference row index');
|
||||
deepEqual(tf.getRowsNb(), 7, 'nb working rows');
|
||||
deepEqual(tf.getRowsNb(true), 7, 'nb working rows with headers');
|
||||
notEqual(tf.getFilterElement(0), null, 'Filter element for column 0');
|
||||
|
||||
tf.setFilterValue(1, 'Ade');
|
||||
tf.filter();
|
||||
|
||||
deepEqual(tf.getValidRows(), [0], 'Filtered row');
|
||||
|
||||
tf.setFilterValue(1, 'Ade');
|
||||
tf.filter();
|
||||
|
||||
deepEqual(tf.getValidRows(), [0], 'Filtered row');
|
||||
deepEqual(
|
||||
tf.getVisibleColumnData(0),
|
||||
['Sydney'],
|
||||
'Get data API does not include footer'
|
||||
);
|
||||
deepEqual(
|
||||
tf.getFilteredDataCol(0),
|
||||
['Sydney'],
|
||||
'Get data API does not include footer'
|
||||
);
|
||||
|
||||
deepEqual(tf.getRowDisplay(tf.dom().tFoot.rows[0]), '',
|
||||
'Footer row visible');
|
||||
|
||||
deepEqual(tf.getRowDisplay(tf.dom().tFoot.rows[1]), '',
|
||||
'Footer row visible');
|
||||
});
|
||||
|
||||
module('Tear-down');
|
||||
test('TableFilter removed', function() {
|
||||
tf.clearFilters();
|
||||
tf.destroy();
|
||||
deepEqual(tf.isInitialized(), false, 'Filters removed');
|
||||
});
|
||||
80
test/test-thead.html
Normal file
80
test/test-thead.html
Normal file
|
|
@ -0,0 +1,80 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>TableFilter thead tests</title>
|
||||
<link rel="stylesheet" href="libs/qunit/qunit.css">
|
||||
<script src="libs/qunit/qunit.js"></script>
|
||||
<script src="libs/polyfill.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<table id="demo">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>From</th>
|
||||
<th>Destination</th>
|
||||
<th>Road Distance (km)</th>
|
||||
<th>By Air (hrs)</th>
|
||||
<th>By Rail (hrs)</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><strong>Sydney</strong></td>
|
||||
<td>Adelaide</td>
|
||||
<td>1412</td>
|
||||
<td>1.4</td>
|
||||
<td>25.3</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Sydney</strong></td>
|
||||
<td>Brisbane</td>
|
||||
<td>982</td>
|
||||
<td>1.5</td>
|
||||
<td>16</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Sydney</strong></td>
|
||||
<td>Canberra</td>
|
||||
<td>286</td>
|
||||
<td>.6</td>
|
||||
<td>4.3</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Sydney</strong></td>
|
||||
<td>Melbourne</td>
|
||||
<td>872</td>
|
||||
<td>1.1</td>
|
||||
<td>10.5</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Adelaide</strong></td>
|
||||
<td>Perth</td>
|
||||
<td>2781</td>
|
||||
<td>3.1</td>
|
||||
<td>38</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Adelaide</strong></td>
|
||||
<td>Alice Springs</td>
|
||||
<td>1533</td>
|
||||
<td>2</td>
|
||||
<td>20.25</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Adelaide</strong></td>
|
||||
<td>Brisbane</td>
|
||||
<td>2045</td>
|
||||
<td>2.15</td>
|
||||
<td>40</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<script src="../dist/tablefilter/tablefilter.js"></script>
|
||||
<script src="test-thead.js"></script>
|
||||
|
||||
<div id="qunit"></div>
|
||||
<div id="qunit-fixture"></div>
|
||||
</body>
|
||||
</html>
|
||||
69
test/test-thead.js
Normal file
69
test/test-thead.js
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
|
||||
var tf = new TableFilter('demo', {
|
||||
base_path: '../dist/tablefilter/'
|
||||
});
|
||||
tf.init();
|
||||
|
||||
module('Sanity checks');
|
||||
test('thead', function() {
|
||||
deepEqual(tf instanceof TableFilter, true, 'TableFilter instanciated');
|
||||
deepEqual(tf.getFiltersRowIndex(), 0, 'Filters row index');
|
||||
deepEqual(tf.refRow, 2, 'Reference row index');
|
||||
deepEqual(tf.getRowsNb(), 7, 'nb working rows');
|
||||
deepEqual(tf.getRowsNb(true), 9, 'nb working rows with headers');
|
||||
notEqual(tf.getFilterElement(0), null, 'Filter element for column 0');
|
||||
|
||||
tf.setFilterValue(1, 'Ade');
|
||||
tf.filter();
|
||||
|
||||
deepEqual(tf.getValidRows(), [2], 'Filtered row');
|
||||
});
|
||||
|
||||
test('thead with paging', function() {
|
||||
tf.destroy();
|
||||
tf = new TableFilter('demo', {
|
||||
base_path: '../dist/tablefilter/',
|
||||
paging: { length: 3 }
|
||||
});
|
||||
tf.init();
|
||||
|
||||
deepEqual(tf instanceof TableFilter, true, 'TableFilter instanciated');
|
||||
deepEqual(tf.getFiltersRowIndex(), 0, 'Filters row index');
|
||||
deepEqual(tf.refRow, 2, 'Reference row index');
|
||||
deepEqual(tf.getRowsNb(), 7, 'nb working rows');
|
||||
deepEqual(tf.getRowsNb(true), 9, 'nb working rows with headers');
|
||||
notEqual(tf.getFilterElement(0), null, 'Filter element for column 0');
|
||||
|
||||
tf.setFilterValue(1, 'Ade');
|
||||
tf.filter();
|
||||
|
||||
deepEqual(tf.getValidRows(), [2], 'Filtered row');
|
||||
});
|
||||
|
||||
test('thead with grid-layout', function() {
|
||||
tf.destroy();
|
||||
tf = new TableFilter('demo', {
|
||||
base_path: '../dist/tablefilter/',
|
||||
grid_layout: true
|
||||
});
|
||||
tf.init();
|
||||
|
||||
deepEqual(tf instanceof TableFilter, true, 'TableFilter instanciated');
|
||||
deepEqual(tf.getFiltersRowIndex(), 1, 'Filters row index');
|
||||
deepEqual(tf.refRow, 0, 'Reference row index');
|
||||
deepEqual(tf.getRowsNb(), 7, 'nb working rows');
|
||||
deepEqual(tf.getRowsNb(true), 7, 'nb working rows with headers');
|
||||
notEqual(tf.getFilterElement(0), null, 'Filter element for column 0');
|
||||
|
||||
tf.setFilterValue(1, 'Ade');
|
||||
tf.filter();
|
||||
|
||||
deepEqual(tf.getValidRows(), [0], 'Filtered row');
|
||||
});
|
||||
|
||||
module('Tear-down');
|
||||
test('TableFilter removed', function() {
|
||||
tf.clearFilters();
|
||||
tf.destroy();
|
||||
deepEqual(tf.isInitialized(), false, 'Filters removed');
|
||||
});
|
||||
Loading…
Add table
Add a link
Reference in a new issue