1 |
|
2 | var id = function (id){ return document.getElementById(id); };
|
3 | var table = id('demo');
|
4 | var totRowIndex = table.getElementsByTagName('tr').length;
|
5 |
|
6 | var tf = new TableFilter('demo', {
|
7 | base_path: '../dist/tablefilter/',
|
8 | rows_always_visible: [
|
9 | totRowIndex-6,
|
10 | totRowIndex-5,
|
11 | totRowIndex-4,
|
12 | totRowIndex-3,
|
13 | totRowIndex-2,
|
14 | totRowIndex-1,
|
15 | totRowIndex,
|
16 | ],
|
17 | extensions: [{
|
18 | name: 'colOps',
|
19 | id: [
|
20 | 'sum1', 'sum2',
|
21 | 'mean1', 'mean2',
|
22 | 'min1', 'min2',
|
23 | 'max1', 'max2',
|
24 | 'median1', 'median2',
|
25 | 'q1-1', 'q1-2',
|
26 | 'q3-1', 'q3-2'
|
27 | ],
|
28 | col: [
|
29 | 2, 3,
|
30 | 2, 3,
|
31 | 2, 3,
|
32 | 2, 3,
|
33 | 2, 3,
|
34 | 2, 3,
|
35 | 2, 3
|
36 | ],
|
37 | operation: [
|
38 | 'sum', 'sum',
|
39 | 'mean', 'mean',
|
40 | 'min', 'min',
|
41 | 'max', 'max',
|
42 | 'median', 'median',
|
43 | 'q1', 'q1',
|
44 | 'q3', 'q3'
|
45 | ],
|
46 | write_method: [
|
47 | 'innerhtml', 'innerhtml',
|
48 | 'innerhtml', 'innerhtml',
|
49 | 'innerhtml', 'innerhtml',
|
50 | 'innerhtml', 'innerhtml',
|
51 | 'innerhtml', 'innerhtml',
|
52 | 'innerhtml', 'innerhtml',
|
53 | 'innerhtml', 'innerhtml'
|
54 | ],
|
55 | exclude_row: [
|
56 | totRowIndex-6,
|
57 | totRowIndex-5,
|
58 | totRowIndex-4,
|
59 | totRowIndex-3,
|
60 | totRowIndex-2,
|
61 | totRowIndex-1,
|
62 | totRowIndex
|
63 | ],
|
64 | decimal_precision: [
|
65 | 0, 2,
|
66 | 0, 2,
|
67 | 0, 2,
|
68 | 0, 2,
|
69 | 0, 2,
|
70 | 0, 2,
|
71 | 0, 2
|
72 | ],
|
73 | tot_row_index: [
|
74 | totRowIndex-6, totRowIndex-6,
|
75 | totRowIndex-5, totRowIndex-5,
|
76 | totRowIndex-4, totRowIndex-4,
|
77 | totRowIndex-3, totRowIndex-3,
|
78 | totRowIndex-2, totRowIndex-2,
|
79 | totRowIndex-1, totRowIndex-1,
|
80 | totRowIndex, totRowIndex
|
81 | ]
|
82 | }]
|
83 | });
|
84 | tf.init();
|
85 |
|
86 | module('Sanity checks');
|
87 | test('Column operations', function() {
|
88 | var colOps = tf.extension('colOps');
|
89 | deepEqual(typeof colOps, 'object', 'ColOps instanciated');
|
90 | equal(id('sum1').innerHTML, 9911, 'Sum result');
|
91 | equal(id('sum2').innerHTML, 11.85, 'Sum result');
|
92 | equal(id('mean1').innerHTML, 1416, 'Mean result');
|
93 | equal(id('mean2').innerHTML, 1.69, 'Mean result');
|
94 | equal(id('min1').innerHTML, 286, 'Min result');
|
95 | equal(id('min2').innerHTML, 0.60, 'Min result');
|
96 | equal(id('max1').innerHTML, 2781, 'Max result');
|
97 | equal(id('max2').innerHTML, 3.10, 'Max result');
|
98 | equal(id('median1').innerHTML, 1412, 'Median result');
|
99 | equal(id('median2').innerHTML, 1.50, 'Median result');
|
100 | equal(id('q1-1').innerHTML, 872, 'Q1 result');
|
101 | equal(id('q1-2').innerHTML, 1.10, 'Q1 result');
|
102 | equal(id('q3-1').innerHTML, 2045, 'Q3 result');
|
103 | equal(id('q3-2').innerHTML, 2.15, 'Q3 result');
|
104 | tf.clearFilters();
|
105 | });
|
106 |
|
107 | module('Behaviour checks');
|
108 | test('Column operations after filtering', function() {
|
109 | tf.setFilterValue(0, 'syd');
|
110 | tf.filter();
|
111 | equal(id('sum1').innerHTML, 3552, 'Sum result');
|
112 | equal(id('sum2').innerHTML, 4.60, 'Sum result');
|
113 | equal(id('mean1').innerHTML, 888, 'Mean result');
|
114 | equal(id('mean2').innerHTML, 1.15, 'Mean result');
|
115 | equal(id('min1').innerHTML, 286, 'Min result');
|
116 | equal(id('min2').innerHTML, 0.60, 'Min result');
|
117 | equal(id('max1').innerHTML, 1412, 'Max result');
|
118 | equal(id('max2').innerHTML, 1.50, 'Max result');
|
119 | equal(id('median1').innerHTML, 927, 'Median result');
|
120 | equal(id('median2').innerHTML, 1.25, 'Median result');
|
121 | equal(id('q1-1').innerHTML, 579, 'Q1 result');
|
122 | equal(id('q1-2').innerHTML, 0.85, 'Q1 result');
|
123 | equal(id('q3-1').innerHTML, 1197, 'Q3 result');
|
124 | equal(id('q3-2').innerHTML, 1.45, 'Q3 result');
|
125 | tf.clearFilters();
|
126 | });
|
127 |
|
128 | test('Can make column calculations', function() {
|
129 |
|
130 | var colOps = tf.extension('colOps');
|
131 |
|
132 |
|
133 | var result0 = colOps.columnCalc(2, 'mean', 1);
|
134 | var result1 = colOps.columnCalc(2, 'min', 2);
|
135 | var result2 = colOps.columnCalc(2, 'max', 0);
|
136 |
|
137 |
|
138 | deepEqual(result0, 1415.9, 'columnCalc mean');
|
139 | deepEqual(result1, 286.00, 'columnCalc min');
|
140 | deepEqual(result2, 2781, 'columnCalc max');
|
141 | });
|
142 |
|
143 | test('Can make column calculations with formated results', function() {
|
144 |
|
145 | var colOps = tf.extension('colOps');
|
146 | colOps.formatResults[2] = { suffix: ' Km' };
|
147 | colOps.formatResults[4] = { suffix: ' Km' };
|
148 | colOps.formatResults[6] = { suffix: ' Km' };
|
149 | tf.colTypes[2] = { type: 'formatted-number', decimal: '.', thousands: ',' };
|
150 |
|
151 |
|
152 | colOps.calcAll();
|
153 |
|
154 |
|
155 | deepEqual(id('mean1').innerHTML, '1,416 Km', 'Formatted mean result');
|
156 | deepEqual(id('min1').innerHTML, '286 Km', 'Formatted min result');
|
157 | deepEqual(id('max1').innerHTML, '2,781 Km', 'Formatted max result');
|
158 |
|
159 | colOps.formatResults[2] = undefined;
|
160 | colOps.formatResults[4] = undefined;
|
161 | colOps.formatResults[6] = undefined;
|
162 | tf.colTypes[2] = undefined;
|
163 | });
|
164 |
|
165 | test('Can configure result format', function() {
|
166 |
|
167 | var colOps = tf.extension('colOps');
|
168 | var format = { prefix: '$', suffix: '/item' };
|
169 |
|
170 |
|
171 | var format = colOps.configureFormat(2, format);
|
172 |
|
173 |
|
174 | deepEqual(format.prefix, '$', 'prefix');
|
175 | deepEqual(format.suffix, '/item', 'suffix');
|
176 | deepEqual(format.decimal, '', 'decimal separator');
|
177 | deepEqual(format.integerSeparator, '', 'thousands separator');
|
178 | });
|
179 |
|
180 | test('Can configure result format for formatted number column', function() {
|
181 |
|
182 | var colOps = tf.extension('colOps');
|
183 | var format = { prefix: '$', suffix: '/item' };
|
184 | tf.colTypes = [null, null, null, null, null];
|
185 | tf.colTypes[3] = { type: 'formatted-number', decimal: ',', thousands: '.' };
|
186 |
|
187 |
|
188 | var format = colOps.configureFormat(3, format);
|
189 |
|
190 |
|
191 | deepEqual(format.prefix, '$', 'prefix');
|
192 | deepEqual(format.suffix, '/item', 'suffix');
|
193 | deepEqual(format.decimal, ',', 'decimal separator');
|
194 | deepEqual(format.integerSeparator, '.', 'thousands separator');
|
195 | tf.colTypes[3] = undefined;
|
196 | });
|
197 |
|
198 | module('Tear-down');
|
199 | test('can destroy', function() {
|
200 | tf.destroy();
|
201 | deepEqual(tf.isInitialized(), false, 'Filters removed');
|
202 | });
|