1 |
|
2 | var id = function (id){ return document.getElementById(id); };
|
3 |
|
4 | var tf = new TableFilter('demo', {
|
5 | base_path: '../dist/tablefilter/',
|
6 | col_0: 'multiple',
|
7 | col_1: 'select',
|
8 | col_2: 'checklist',
|
9 | load_filters_on_demand: true
|
10 | });
|
11 | tf.init();
|
12 |
|
13 | var flt1 = tf.getFilterElement(0);
|
14 | var flt2 = tf.getFilterElement(1);
|
15 | var flt3 = null;
|
16 | var flt3ContId = tf.feature('checkList').prfx + '2_' + tf.id;
|
17 | var flt3Cont = id(flt3ContId);
|
18 |
|
19 | function buildChecklist(tf, colIdx){
|
20 | var checkList = tf.feature('checkList');
|
21 | checkList.build(colIdx);
|
22 | checkList.containers[colIdx].onclick = null;
|
23 | checkList.containers[colIdx].title = '';
|
24 | }
|
25 |
|
26 |
|
27 | module('Sanity checks');
|
28 | test('Select type filters exist', function() {
|
29 | deepEqual(tf.loadFltOnDemand, true, 'loadFltOnDemand property');
|
30 | notEqual(flt1, null, 'Filter 1 element exists');
|
31 | notEqual(flt2, null, 'Filter 2 element exists');
|
32 | deepEqual(flt3, null, 'Filter 3 element exists');
|
33 | deepEqual(tf.getFilterType(0), 'multiple', 'Expected filter type 1');
|
34 | deepEqual(tf.getFilterType(1), 'select', 'Expected filter type 2');
|
35 | deepEqual(tf.getFilterType(2), 'checklist', 'Expected filter type 3');
|
36 | });
|
37 |
|
38 | module('UI Filter elements');
|
39 | test('Filters are empty', function() {
|
40 | deepEqual(flt1.options.length, 1, 'Number of options for filter 1');
|
41 | deepEqual(flt2.options.length, 1, 'Number of options for filter 2');
|
42 | deepEqual(flt1.options[0].text, 'Clear', 'Filter 1 text');
|
43 | deepEqual(flt2.options[0].text, 'Clear', 'Filter 2 text');
|
44 | deepEqual(flt3Cont.innerHTML, 'Click to load filter data', 'Filter 3 text');
|
45 | });
|
46 |
|
47 | test('Filters are populated after activation', function() {
|
48 | flt1.focus();
|
49 | flt2.focus();
|
50 | buildChecklist(tf, 2);
|
51 |
|
52 | flt3 = tf.getFilterElement(2);
|
53 |
|
54 | deepEqual(flt1.options.length, 3, 'Number of options for filter 1');
|
55 | deepEqual(flt2.options.length, 7, 'Number of options for filter 2');
|
56 | deepEqual(flt3.childNodes.length, 8, 'Number of options for filter 3');
|
57 | });
|
58 |
|
59 | test('TableFilter re-initialised with grid layout', function() {
|
60 | tf.destroy();
|
61 | deepEqual(tf.isInitialized(), false, 'Filters removed');
|
62 | tf = null;
|
63 | tf = new TableFilter('demo', {
|
64 | base_path: '../dist/tablefilter/',
|
65 | col_0: 'multiple',
|
66 | col_1: 'select',
|
67 | col_2: 'checklist',
|
68 | load_filters_on_demand: true,
|
69 | grid_layout: true
|
70 | });
|
71 | tf.init();
|
72 |
|
73 | flt1 = tf.getFilterElement(0);
|
74 | flt2 = tf.getFilterElement(1);
|
75 | flt3 = null;
|
76 | flt3ContId = tf.feature('checkList').prfx + '2_' + tf.id;
|
77 | flt3Cont = id(flt3ContId);
|
78 | });
|
79 |
|
80 | module('Behaviour with grid layout');
|
81 | test('Selet type filters exist', function() {
|
82 | deepEqual(tf.loadFltOnDemand, true, 'loadFltOnDemand property');
|
83 | notEqual(flt1, null, 'Filter 1 element exists');
|
84 | notEqual(flt2, null, 'Filter 2 element exists');
|
85 | deepEqual(flt3, null, 'Filter 3 element exists');
|
86 | deepEqual(tf.getFilterType(0), 'multiple', 'Expected filter type 1');
|
87 | deepEqual(tf.getFilterType(1), 'select', 'Expected filter type 2');
|
88 | deepEqual(tf.getFilterType(2), 'checklist', 'Expected filter type 3');
|
89 | });
|
90 |
|
91 | module('UI Filter elements');
|
92 | test('Filters are empty', function() {
|
93 | deepEqual(flt1.options.length, 1, 'Number of options for filter 1');
|
94 | deepEqual(flt2.options.length, 1, 'Number of options for filter 2');
|
95 | deepEqual(flt1.options[0].text, 'Clear', 'Filter 1 text');
|
96 | deepEqual(flt2.options[0].text, 'Clear', 'Filter 2 text');
|
97 | deepEqual(flt3Cont.innerHTML, 'Click to load filter data', 'Filter 3 text');
|
98 | });
|
99 |
|
100 | test('Filters are populated after activation', function() {
|
101 | flt1.focus();
|
102 | flt2.focus();
|
103 | buildChecklist(tf, 2);
|
104 | flt3 = tf.getFilterElement(2);
|
105 |
|
106 | deepEqual(flt1.options.length, 3, 'Number of options for filter 1');
|
107 | deepEqual(flt2.options.length, 7, 'Number of options for filter 2');
|
108 | deepEqual(flt3.childNodes.length, 8, 'Number of options for filter 3');
|
109 | });
|
110 |
|
111 | test('Filters can filter table', function() {
|
112 | tf.setFilterValue(0, 'Sydney');
|
113 | tf.setFilterValue(1, 'Canberra');
|
114 | tf.setFilterValue(2, '286');
|
115 | tf.filter();
|
116 |
|
117 | deepEqual(tf.getValidRows().length, 1, 'Number of results');
|
118 | });
|
119 |
|
120 | test('TableFilter removed', function() {
|
121 | tf.destroy();
|
122 | deepEqual(tf.isInitialized(), false, 'Filters removed');
|
123 | tf = null;
|
124 | });
|