mirror of
https://github.com/koalyptus/TableFilter.git
synced 2024-06-29 10:50:51 +02:00
220 lines
7.1 KiB
JavaScript
220 lines
7.1 KiB
JavaScript
|
|
var id = function (id){ return document.getElementById(id); };
|
|
|
|
var tf = new TableFilter('demo', {
|
|
base_path: '../dist/tablefilter/',
|
|
col_2: 'select',
|
|
col_3: 'multiple',
|
|
col_4: 'checklist',
|
|
/* external filters */
|
|
external_flt_ids: [
|
|
'extFrom',
|
|
'extDestination',
|
|
'extRoadDistance',
|
|
'extAirDistance',
|
|
'extRailDistance'
|
|
]
|
|
});
|
|
tf.init();
|
|
|
|
module('Sanity checks');
|
|
test('External filters', function() {
|
|
deepEqual(tf instanceof TableFilter, true, 'TableFilter instanciated');
|
|
deepEqual(tf.isExternalFlt(), true, 'Has external filters');
|
|
deepEqual(tf.externalFltIds.length, 5,
|
|
'External filters ids length');
|
|
deepEqual(tf.getFiltersRowIndex(), 0, 'Filters row index');
|
|
deepEqual(tf.getHeadersRowIndex(), 1, 'Headers row index');
|
|
deepEqual(tf.getStartRowIndex(), 2, 'Reference row index');
|
|
deepEqual(id('extFrom').childNodes.length>0, true,
|
|
'Col0 filter is external');
|
|
deepEqual(id('extDestination').childNodes.length>0, true,
|
|
'Col1 filter is external');
|
|
deepEqual(id('extRoadDistance').childNodes.length>0, true,
|
|
'Col2 filter is external');
|
|
deepEqual(id('extAirDistance').childNodes.length>0, true,
|
|
'Col3 filter is external');
|
|
deepEqual(id('extRailDistance').childNodes.length>0, true,
|
|
'Col4 filter is external');
|
|
});
|
|
|
|
module('Filter columns');
|
|
test('Can filter column 0', function() {
|
|
tf.setFilterValue(0, 'Syd');
|
|
tf.filter();
|
|
deepEqual(tf.getValidRows().length, 4, 'Filtered rows length');
|
|
});
|
|
test('Can filter column 1', function() {
|
|
tf.clearFilters();
|
|
tf.setFilterValue(1, 'Ade');
|
|
tf.filter();
|
|
deepEqual(tf.getValidRows(), [2], 'Filtered rows');
|
|
});
|
|
test('Can filter column 2', function() {
|
|
tf.clearFilters();
|
|
tf.setFilterValue(2, '1533');
|
|
tf.filter();
|
|
deepEqual(tf.getValidRows(), [7], 'Filtered rows');
|
|
});
|
|
test('Can filter column 3', function() {
|
|
tf.clearFilters();
|
|
tf.setFilterValue(3, ['2', '3.1', '1.5']);
|
|
tf.filter();
|
|
deepEqual(tf.getValidRows().length, 3, 'Filtered rows');
|
|
});
|
|
test('Can filter column 4', function() {
|
|
tf.clearFilters();
|
|
tf.setFilterValue(4, ['16', '40']);
|
|
tf.filter();
|
|
deepEqual(tf.getValidRows().length, 2, 'Filtered rows');
|
|
});
|
|
|
|
// Filters in grid-layout mode are already considered as `external` as
|
|
// generated in headers container
|
|
module('Grid-layout');
|
|
test('Sanity checks', function() {
|
|
tf.clearFilters();
|
|
tf.destroy();
|
|
tf = new TableFilter('demo', {
|
|
base_path: '../dist/tablefilter/',
|
|
col_2: 'select',
|
|
col_3: 'multiple',
|
|
col_4: 'checklist',
|
|
/* external filters */
|
|
external_flt_ids: [
|
|
'extFrom',
|
|
'extDestination',
|
|
'extRoadDistance',
|
|
'extAirDistance',
|
|
'extRailDistance'
|
|
],
|
|
grid_layout: true
|
|
});
|
|
tf.init();
|
|
|
|
deepEqual(tf instanceof TableFilter, true, 'TableFilter instanciated');
|
|
deepEqual(tf.isExternalFlt(), true, 'Has external filters');
|
|
deepEqual(tf.externalFltIds.length, 5,
|
|
'External filters ids length');
|
|
deepEqual(tf.getFiltersRowIndex(), 1, 'Filters row index');
|
|
deepEqual(tf.getHeadersRowIndex(), 0, 'Headers row index');
|
|
deepEqual(tf.getStartRowIndex(), 0, 'Reference row index');
|
|
deepEqual(id('extFrom').childNodes.length, 0,
|
|
'Col0 filter is external');
|
|
deepEqual(id('extDestination').childNodes.length, 0,
|
|
'Col1 filter is external');
|
|
deepEqual(id('extRoadDistance').childNodes.length, 0,
|
|
'Col2 filter is external');
|
|
deepEqual(id('extAirDistance').childNodes.length, 0,
|
|
'Col3 filter is external');
|
|
deepEqual(id('extRailDistance').childNodes.length, 0,
|
|
'Col4 filter is external');
|
|
});
|
|
test('Can filter column 0', function() {
|
|
tf.setFilterValue(0, 'Syd');
|
|
tf.filter();
|
|
deepEqual(tf.getValidRows().length, 4, 'Filtered rows length');
|
|
});
|
|
test('Can filter column 1', function() {
|
|
tf.clearFilters();
|
|
tf.setFilterValue(1, 'Ade');
|
|
tf.filter();
|
|
deepEqual(tf.getValidRows(), [0], 'Filtered rows');
|
|
});
|
|
test('Can filter column 2', function() {
|
|
tf.clearFilters();
|
|
tf.setFilterValue(2, '1533');
|
|
tf.filter();
|
|
deepEqual(tf.getValidRows(), [5], 'Filtered rows');
|
|
});
|
|
test('Can filter column 3', function() {
|
|
tf.clearFilters();
|
|
tf.setFilterValue(3, ['2', '3.1', '1.5']);
|
|
tf.filter();
|
|
deepEqual(tf.getValidRows().length, 3, 'Filtered rows');
|
|
});
|
|
test('Can filter column 4', function() {
|
|
tf.clearFilters();
|
|
tf.setFilterValue(4, ['16', '40']);
|
|
tf.filter();
|
|
deepEqual(tf.getValidRows().length, 2, 'Filtered rows');
|
|
});
|
|
|
|
// In popup filters mode are already considered as `external` as
|
|
// generated in headers container
|
|
module('Pop-up filters');
|
|
test('Sanity checks', function() {
|
|
tf.clearFilters();
|
|
tf.destroy();
|
|
tf = new TableFilter('demo', {
|
|
base_path: '../dist/tablefilter/',
|
|
col_2: 'select',
|
|
col_3: 'multiple',
|
|
col_4: 'checklist',
|
|
/* external filters */
|
|
external_flt_ids: [
|
|
'extFrom',
|
|
'extDestination',
|
|
'extRoadDistance',
|
|
'extAirDistance',
|
|
'extRailDistance'
|
|
],
|
|
popup_filters: true
|
|
});
|
|
tf.init();
|
|
|
|
deepEqual(tf instanceof TableFilter, true, 'TableFilter instanciated');
|
|
deepEqual(tf.isExternalFlt(), true, 'Has external filters');
|
|
deepEqual(tf.externalFltIds.length, 5,
|
|
'External filters ids length');
|
|
deepEqual(tf.getFiltersRowIndex(), 0, 'Filters row index');
|
|
deepEqual(tf.getHeadersRowIndex(), 1, 'Headers row index');
|
|
deepEqual(tf.getStartRowIndex(), 2, 'Reference row index');
|
|
deepEqual(id('extFrom').childNodes.length, 0,
|
|
'Col0 filter is external');
|
|
deepEqual(id('extDestination').childNodes.length, 0,
|
|
'Col1 filter is external');
|
|
deepEqual(id('extRoadDistance').childNodes.length, 0,
|
|
'Col2 filter is external');
|
|
deepEqual(id('extAirDistance').childNodes.length, 0,
|
|
'Col3 filter is external');
|
|
deepEqual(id('extRailDistance').childNodes.length, 0,
|
|
'Col4 filter is external');
|
|
});
|
|
test('Can filter column 0', function() {
|
|
tf.setFilterValue(0, 'Syd');
|
|
tf.filter();
|
|
deepEqual(tf.getValidRows().length, 4, 'Filtered rows length');
|
|
});
|
|
test('Can filter column 1', function() {
|
|
tf.clearFilters();
|
|
tf.setFilterValue(1, 'Ade');
|
|
tf.filter();
|
|
deepEqual(tf.getValidRows(), [2], 'Filtered rows');
|
|
});
|
|
test('Can filter column 2', function() {
|
|
tf.clearFilters();
|
|
tf.setFilterValue(2, '1533');
|
|
tf.filter();
|
|
deepEqual(tf.getValidRows(), [7], 'Filtered rows');
|
|
});
|
|
test('Can filter column 3', function() {
|
|
tf.clearFilters();
|
|
tf.setFilterValue(3, ['2', '3.1', '1.5']);
|
|
tf.filter();
|
|
deepEqual(tf.getValidRows().length, 3, 'Filtered rows');
|
|
});
|
|
test('Can filter column 4', function() {
|
|
tf.clearFilters();
|
|
tf.setFilterValue(4, ['16', '40']);
|
|
tf.filter();
|
|
deepEqual(tf.getValidRows().length, 2, 'Filtered rows');
|
|
});
|
|
|
|
module('Tear-down');
|
|
test('TableFilter removed', function() {
|
|
tf.clearFilters();
|
|
tf.destroy();
|
|
deepEqual(tf.isInitialized(), false, 'Filters removed');
|
|
});
|