mirror of
https://github.com/koalyptus/TableFilter.git
synced 2024-06-27 18:01:33 +02:00
125 lines
4.2 KiB
JavaScript
125 lines
4.2 KiB
JavaScript
|
|
var id = function (id){ return document.getElementById(id); };
|
|
|
|
var tf = new TableFilter('demo', {
|
|
base_path: '../dist/tablefilter/',
|
|
col_0: 'multiple',
|
|
col_1: 'select',
|
|
col_2: 'checklist',
|
|
load_filters_on_demand: true
|
|
});
|
|
tf.init();
|
|
|
|
var flt1 = tf.getFilterElement(0);
|
|
var flt2 = tf.getFilterElement(1);
|
|
var flt3 = null;
|
|
var flt3ContId = tf.feature('checkList').prfxCheckListDiv+'2_'+tf.id;
|
|
var flt3Cont = id(flt3ContId);
|
|
|
|
function buildChecklist(tf, colIdx){
|
|
var checkList = tf.feature('checkList');
|
|
checkList._build(colIdx);
|
|
checkList.checkListDiv[colIdx].onclick = null;
|
|
checkList.checkListDiv[colIdx].title = '';
|
|
}
|
|
|
|
|
|
module('Sanity checks');
|
|
test('Select type filters exist', function() {
|
|
deepEqual(tf.loadFltOnDemand, true, 'loadFltOnDemand property');
|
|
notEqual(flt1, null, 'Filter 1 element exists');
|
|
notEqual(flt2, null, 'Filter 2 element exists');
|
|
deepEqual(flt3, null, 'Filter 3 element exists');
|
|
deepEqual(tf.getFilterType(0), 'multiple', 'Expected filter type 1');
|
|
deepEqual(tf.getFilterType(1), 'select', 'Expected filter type 2');
|
|
deepEqual(tf.getFilterType(2), 'checklist', 'Expected filter type 3');
|
|
});
|
|
|
|
module('UI Filter elements');
|
|
test('Filters are empty', function() {
|
|
deepEqual(flt1.options.length, 1, 'Number of options for filter 1');
|
|
deepEqual(flt2.options.length, 1, 'Number of options for filter 2');
|
|
deepEqual(flt1.options[0].text, 'Clear', 'Filter 1 text');
|
|
deepEqual(flt2.options[0].text, 'Clear', 'Filter 2 text');
|
|
deepEqual(flt3Cont.innerHTML, 'Click to load filter data', 'Filter 3 text');
|
|
});
|
|
|
|
test('Filters are populated after activation', function() {
|
|
flt1.focus();
|
|
flt2.focus();
|
|
buildChecklist(tf, 2);
|
|
|
|
flt3 = tf.getFilterElement(2);
|
|
|
|
deepEqual(flt1.options.length, 3, 'Number of options for filter 1');
|
|
deepEqual(flt2.options.length, 7, 'Number of options for filter 2');
|
|
deepEqual(flt3.childNodes.length, 8, 'Number of options for filter 3');
|
|
});
|
|
|
|
test('TableFilter re-initialised with grid layout', function() {
|
|
tf.destroy();
|
|
deepEqual(tf.hasGrid(), false, 'Filters removed');
|
|
tf = null;
|
|
tf = new TableFilter('demo', {
|
|
base_path: '../dist/tablefilter/',
|
|
col_0: 'multiple',
|
|
col_1: 'select',
|
|
col_2: 'checklist',
|
|
load_filters_on_demand: true,
|
|
grid_layout: true
|
|
});
|
|
tf.init();
|
|
|
|
flt1 = tf.getFilterElement(0);
|
|
flt2 = tf.getFilterElement(1);
|
|
flt3 = null;
|
|
flt3ContId = tf.feature('checkList').prfxCheckListDiv+'2_'+tf.id;
|
|
flt3Cont = id(flt3ContId);
|
|
});
|
|
|
|
module('Behaviour with grid layout');
|
|
test('Selet type filters exist', function() {
|
|
deepEqual(tf.loadFltOnDemand, true, 'loadFltOnDemand property');
|
|
notEqual(flt1, null, 'Filter 1 element exists');
|
|
notEqual(flt2, null, 'Filter 2 element exists');
|
|
deepEqual(flt3, null, 'Filter 3 element exists');
|
|
deepEqual(tf.getFilterType(0), 'multiple', 'Expected filter type 1');
|
|
deepEqual(tf.getFilterType(1), 'select', 'Expected filter type 2');
|
|
deepEqual(tf.getFilterType(2), 'checklist', 'Expected filter type 3');
|
|
});
|
|
|
|
module('UI Filter elements');
|
|
test('Filters are empty', function() {
|
|
deepEqual(flt1.options.length, 1, 'Number of options for filter 1');
|
|
deepEqual(flt2.options.length, 1, 'Number of options for filter 2');
|
|
deepEqual(flt1.options[0].text, 'Clear', 'Filter 1 text');
|
|
deepEqual(flt2.options[0].text, 'Clear', 'Filter 2 text');
|
|
deepEqual(flt3Cont.innerHTML, 'Click to load filter data', 'Filter 3 text');
|
|
});
|
|
|
|
test('Filters are populated after activation', function() {
|
|
flt1.focus();
|
|
flt2.focus();
|
|
buildChecklist(tf, 2);
|
|
flt3 = tf.getFilterElement(2);
|
|
|
|
deepEqual(flt1.options.length, 3, 'Number of options for filter 1');
|
|
deepEqual(flt2.options.length, 7, 'Number of options for filter 2');
|
|
deepEqual(flt3.childNodes.length, 8, 'Number of options for filter 3');
|
|
});
|
|
|
|
test('Filters can filter table', function() {
|
|
tf.setFilterValue(0, 'Sydney');
|
|
tf.setFilterValue(1, 'Canberra');
|
|
tf.setFilterValue(2, '286');
|
|
tf.filter();
|
|
|
|
deepEqual(tf.getValidRows().length, 1, 'Number of results');
|
|
});
|
|
|
|
test('TableFilter removed', function() {
|
|
tf.destroy();
|
|
deepEqual(tf.hasGrid(), false, 'Filters removed');
|
|
tf = null;
|
|
});
|