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 |
|
42 |
|
43 |
|
44 |
|
45 |
|
46 |
|
47 |
|
48 |
|
49 |
|
50 |
|
51 |
|
52 |
|
53 |
|
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 |
|
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 |
|
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);
|