UNPKG

6.61 kBJavaScriptView Raw
1
2var id = function (id){ return document.getElementById(id); };
3var table = id('demo');
4var totRowIndex = table.getElementsByTagName('tr').length;
5
6var 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});
84tf.init();
85
86module('Sanity checks');
87test('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
107module('Behaviour checks');
108test('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
128test('Can make column calculations', function() {
129 // setup
130 var colOps = tf.extension('colOps');
131
132 // act
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 // assert
138 deepEqual(result0, 1415.9, 'columnCalc mean');
139 deepEqual(result1, 286.00, 'columnCalc min');
140 deepEqual(result2, 2781, 'columnCalc max');
141});
142
143test('Can make column calculations with formated results', function() {
144 // setup
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 // act
152 colOps.calcAll();
153
154 // assert
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
165test('Can configure result format', function() {
166 // setup
167 var colOps = tf.extension('colOps');
168 var format = { prefix: '$', suffix: '/item' };
169
170 // act
171 var format = colOps.configureFormat(2, format);
172
173 // assert
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
180test('Can configure result format for formatted number column', function() {
181 // setup
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 // act
188 var format = colOps.configureFormat(3, format);
189
190 // assert
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
198module('Tear-down');
199test('can destroy', function() {
200 tf.destroy();
201 deepEqual(tf.isInitialized(), false, 'Filters removed');
202});