UNPKG

4.26 kBJavaScriptView Raw
1(function(win, TableFilter){
2
3 var id = function (id){ return document.getElementById(id); };
4
5 var tf = new TableFilter('demo', {
6 base_path: '../dist/tablefilter/',
7 linked_filters: true,
8 col_0: 'checklist',
9 col_1: 'checklist',
10 on_after_reset: testClearFilters
11 });
12
13 var ct = 0;
14 tf.emitter.on(['after-filtering'], function() {
15 ct++;
16 });
17
18 tf.init();
19
20 tf.setFilterValue(0, 'Sydney');
21 tf.getFilterElement(0).focus();
22
23 tf.filter();
24
25 module('Sanity checks');
26 test('Linked filters feature', function() {
27 deepEqual(tf instanceof TableFilter, true, 'TableFilter instantiated');
28 deepEqual(tf.linkedFilters, true, 'Linked filters enabled');
29
30 tf.activateFilter(0);
31 tf.clearFilters();
32
33 deepEqual(ct, 2,
34 'after-filtering event emitted after filtering');
35 tf.onAfterFilter = null;
36 tf.destroy();
37 tf = null;
38 setWithChecklistFilters();
39 });
40
41 // function testLinked(tf) {
42 // test('Check filters are linked', function() {
43 // // var filter0 = tf.getFilterElement(0);
44 // deepEqual(tf.activeFilterId, 'flt1_demo_1', 'Active filter');
45 // // deepEqual(filter0.options.length, 2,
46 // // 'Linked filter expected options number'
47 // // );
48 // });
49 // tf._clearFilters();
50 // tf.onAfterFilter = null;
51 // tf.destroy();
52 // tf = null;
53 // setExcludedOptions();
54 // }
55
56 function setExcludedOptions(){
57 tf = new TableFilter('demo', {
58 base_path: '../dist/tablefilter/',
59 linked_filters: true,
60 disable_excluded_options: true,
61 col_0: 'multiple',
62 col_1: 'checklist',
63 on_after_filter: testExcludedOptions,
64 on_after_reset: testClearFilters
65 });
66 tf.init();
67 tf.setFilterValue(0, 'Sydney');
68 tf.getFilterElement(0).focus();
69 tf.filter();
70 }
71
72 function testExcludedOptions(tf){
73 var flt0 = tf.getFilterElement(0);
74
75 test('Check filters are linked', function() {
76 deepEqual(tf.activeFilterId, 'flt0_demo', 'Active filter');
77 deepEqual(
78 flt0.options[1].disabled,
79 true,
80 'Expected disabled option in master filter'
81 );
82 deepEqual(
83 id('flt1_'+tf.id+'_2').disabled,
84 true,
85 'Expected disabled option in slave filter'
86 );
87 });
88
89 tf.onAfterFilter = null;
90 setTimeout(tf.clearFilters, 0);
91 }
92
93 // Tests for https://github.com/koalyptus/TableFilter/pull/42 issue
94 function testClearFilters() {
95 test('Check clear filters functionality', function() {
96 deepEqual(tf.getFilterableRowsNb(), 7,
97 'Nb of valid rows after filters are cleared');
98 });
99
100 tf.destroy();
101 }
102
103 function setWithChecklistFilters() {
104 tf = new TableFilter('demo', {
105 base_path: '../dist/tablefilter/',
106 linked_filters: true,
107 col_0: 'checklist',
108 col_1: 'checklist'
109 });
110 tf.init();
111
112 var flt0 = tf.getFilterElement(0);
113 var flt1 = tf.getFilterElement(1);
114
115 var evObj = document.createEvent('HTMLEvents');
116 evObj.initEvent('click', true, true);
117
118 tf.setFilterValue(0, 'Sydney');
119 tf.setFilterValue(1, 'Adelaide');
120 flt0.querySelectorAll('input')[1].dispatchEvent(evObj);
121 flt1.querySelectorAll('input')[1].dispatchEvent(evObj);
122
123 setTimeout(testWithChecklistFilters.call(null, tf), 50);
124 }
125
126 // Tests for issue 113
127 function testWithChecklistFilters(tf){
128 var flt0 = id(tf.fltIds[0]);
129 var flt1 = id(tf.fltIds[1]);
130
131 deepEqual(flt0.getElementsByTagName('li').length, 2, 'Nb of options');
132 deepEqual(flt1.getElementsByTagName('li').length, 2, 'Nb of options');
133 tf.destroy();
134 tf = null;
135 setExcludedOptions();
136 }
137
138})(window, TableFilter);