diff --git a/dist/tablefilter/tablefilter.js b/dist/tablefilter/tablefilter.js index f370043f..7ef75f19 100644 --- a/dist/tablefilter/tablefilter.js +++ b/dist/tablefilter/tablefilter.js @@ -1,6 +1,6 @@ /** * TableFilter v0.0.0 by Max Guglielmi - * build date: 2015-07-27T09:31:23.290Z + * build date: 2015-07-30T07:19:59.670Z * MIT License */ diff --git a/dist/tablefilter/tf-1.js b/dist/tablefilter/tf-1.js index f5a647c7..69cf81b2 100644 --- a/dist/tablefilter/tf-1.js +++ b/dist/tablefilter/tf-1.js @@ -1,6 +1,6 @@ /** * TableFilter v0.0.0 by Max Guglielmi - * build date: 2015-07-27T09:31:23.290Z + * build date: 2015-07-30T07:19:59.670Z * MIT License */ diff --git a/test/test-api.js b/test/test-api.js index 30594565..6e1dca0f 100644 --- a/test/test-api.js +++ b/test/test-api.js @@ -108,7 +108,8 @@ tf = null; }); - test('Re-instantiate TableFilter with different filter types', function() { + module('TableFilter instance with different filter types'); + test('Test filter types', function() { tf = null; tf = new TableFilter('demo', { base_path: '../dist/tablefilter/', @@ -132,4 +133,162 @@ 'Get input filter(s)'); }); + test('Get filters values', function() { + tf.setFilterValue(0, 'Sydney'); + tf.setFilterValue(1, 'Adelaide'); + deepEqual(tf.getFilterValue(0), 'Sydney', 'Column 0 filter value'); + deepEqual(tf.getFiltersValue(), ['sydney', 'adelaide', '', '', '']); + }); + + test('Filter table', function() { + tf.clearFilters(); + tf.setFilterValue(1, 'Adelaide'); + tf.filter(); + deepEqual(tf.getValidRows().length, 1, 'Filtered rows number'); + }); + + module('TableFilter with pop-up filtes'); + test('Sanity checks', function() { + tf.destroy(); + tf = null; + tf = new TableFilter('demo', { + base_path: '../dist/tablefilter/', + popup_filters: true + }); + tf.init(); + + deepEqual(tf.getFiltersRowIndex(), 0, 'Filters row index'); + deepEqual(tf.getHeadersRowIndex(), 1, 'Headers row index'); + deepEqual(tf.getFilterElement(1).nodeName, 'INPUT', + 'Filter\'s DOM element'); + deepEqual(tf.getHeaderElement(2).nodeName, 'TH', + 'Header\'s DOM element'); + }); + + test('Get filters values', function() { + tf.setFilterValue(0, 'Sydney'); + tf.setFilterValue(1, 'Adelaide'); + deepEqual(tf.getFilterValue(0), 'Sydney', 'Column 0 filter value'); + deepEqual(tf.getFiltersValue(), ['sydney', 'adelaide', '', '', '']); + }); + + test('Filter table', function() { + tf.clearFilters(); + tf.setFilterValue(1, 'Adelaide'); + tf.filter(); + deepEqual(tf.getValidRows().length, 1, 'Filtered rows number'); + }); + + module('TableFilter with grid-layout'); + test('Sanity checks', function() { + tf.destroy(); + tf = null; + tf = new TableFilter('demo', { + base_path: '../dist/tablefilter/', + grid_layout: true, + col_0: 'select', + col_1: 'multiple', + col_2: 'checklist' + }); + tf.init(); + + deepEqual(tf.getFilterType(0), 'select', 'Colmun 0 filter type'); + deepEqual(tf.getFilterType(1), 'multiple', 'Colmun 1 filter type'); + deepEqual(tf.getFilterType(2), 'checklist', 'Colmun 2 filter type'); + deepEqual(tf.getFilterType(3), 'input', 'Colmun 3 filter type'); + deepEqual(tf.getFiltersByType('select'), ['flt0_demo'], + 'Get select filter(s)'); + deepEqual(tf.getFiltersByType('multiple'), ['flt1_demo'], + 'Get multiple filter(s)'); + deepEqual(tf.getFiltersByType('checklist'), ['flt2_demo'], + 'Get checklist filter(s)'); + deepEqual(tf.getFiltersByType('input'), ['flt3_demo','flt4_demo'], + 'Get input filter(s)'); + + deepEqual(tf.getFiltersRowIndex(), 1, 'Filters row index'); + deepEqual(tf.getHeadersRowIndex(), 0, 'Headers row index'); + deepEqual(tf.getFilterElement(1).nodeName, 'SELECT', + 'Filter\'s DOM element'); + deepEqual(tf.getHeaderElement(2).nodeName, 'TH', + 'Header\'s DOM element'); + }); + + test('Get filters values', function() { + tf.setFilterValue(0, 'Sydney'); + tf.setFilterValue(1, 'Adelaide'); + deepEqual(tf.getFilterValue(0), 'Sydney', 'Column 0 filter value'); + deepEqual(tf.getFiltersValue(), ['sydney', 'adelaide', '', '', '']); + }); + + test('Filter table', function() { + tf.clearFilters(); + tf.setFilterValue(1, 'Adelaide'); + tf.filter(); + deepEqual(tf.getValidRows().length, 1, 'Filtered rows number'); + }); + + test('Clear filters', function() { + tf.clearFilters(); + deepEqual(tf.nbVisibleRows, 7, 'Filtered rows number'); + deepEqual(tf.getFiltersValue(), ['', '', '', '', '']); + }); + + test('Get table data', function() { + deepEqual(tf.getColValues(0), + [ + 'sydney','sydney','sydney', + 'sydney','adelaide','adelaide','adelaide' + ], + 'Get specified column values' + ); + // deepEqual( + // tf.getTableData(), + // [ + // [0, ['Sydney','Adelaide','1412','1.4','25.3']], + // [1, ['Sydney','Brisbane','982','1.5','16']], + // [2, ['Sydney','Canberra','286','.6','4.3']], + // [3, ['Sydney','Melbourne','872','1.1','10.5']], + // [4, ['Adelaide','Perth','2781','3.1','38']], + // [5, ['Adelaide','Alice Springs','1533','2','20.25']], + // [6, ['Adelaide','Brisbane','2045','2.15','40']] + // ], + // 'Get table data' + // ); + // tf.setFilterValue(0, 'Adelaide'); + // tf.filter(); + // deepEqual( + // tf.getFilteredData(), + // [ + // [6, ['Adelaide','Perth','2781','3.1','38']], + // [7, ['Adelaide','Alice Springs','1533','2','20.25']], + // [8, ['Adelaide','Brisbane','2045','2.15','40']] + // ], + // 'Get filtered table data' + // ); + // deepEqual( + // tf.getFilteredData(true), + // [ + // [1, ['From','Destination','Road Distance (km)', + // 'By Air (hrs)','By Rail (hrs)']], + // [6, ['Adelaide','Perth','2781','3.1','38']], + // [7, ['Adelaide','Alice Springs','1533','2','20.25']], + // [8, ['Adelaide','Brisbane','2045','2.15','40']] + // ], + // 'Get filtered table data including columns headers' + // ); + // deepEqual( + // tf.getFilteredDataCol(0), + // ['Adelaide','Adelaide','Adelaide'], + // 'Get specified column filtered values' + // ); + // tf.clearFilters(); + // tf.filter(); + }); + + test('Destroy', function() { + tf.destroy(); + deepEqual(tf.hasGrid(), false, 'Filters removed'); + tf = null; + }); + })(window, TableFilter);