1 |
|
2 | var tf = new TableFilter('demo', {
|
3 | base_path: '../dist/tablefilter/',
|
4 | col_types: ['string', 'string', 'number', 'number', 'number']
|
5 | });
|
6 | tf.init();
|
7 |
|
8 | var tf1 = new TableFilter('demo1', {
|
9 | base_path: '../dist/tablefilter/',
|
10 | col_types: ['string', 'string', 'number', 'number', 'number'],
|
11 | extensions: [{
|
12 | name: 'colsVisibility',
|
13 | at_start: [1, 2],
|
14 | on_loaded: colsVisibilityTests
|
15 | }]
|
16 | });
|
17 |
|
18 | tf1.registerExtension(
|
19 | {
|
20 | init: function() {},
|
21 | destroy: function() {}
|
22 | },
|
23 | 'myExtension'
|
24 | );
|
25 | tf1.init();
|
26 |
|
27 | module('Sanity checks');
|
28 | test('TableFilter object', function() {
|
29 | deepEqual(tf instanceof TableFilter, true, 'TableFilter instanciated');
|
30 | deepEqual(tf.id, 'demo', 'id check');
|
31 | deepEqual(tf.getFiltersRowIndex(), 0, 'Filters row index');
|
32 | deepEqual(tf.getHeadersRowIndex(), 1, 'Headers row index');
|
33 | deepEqual(tf.getCellsNb(), 5, 'Cells collection length');
|
34 | deepEqual(tf.getRowsNb(), 7, 'Rows collection length');
|
35 | deepEqual(tf.getFilterableRowsNb(), 7, 'Number of filterable rows');
|
36 | deepEqual(tf.getFilterId(0), 'flt0_demo', 'Filter DOM element id');
|
37 | deepEqual(tf.getStartRowIndex(), 2, 'Start of filterable rows');
|
38 | deepEqual(tf.getLastRowIndex(), 8, 'Last row index');
|
39 | deepEqual(tf.dom().nodeName, 'TABLE', 'Working DOM element type');
|
40 | deepEqual(
|
41 | tf.getHeadersText(),
|
42 | [
|
43 | 'From','Destination','Road Distance (km)', 'By Air (hrs)',
|
44 | 'By Rail (hrs)'
|
45 | ],
|
46 | 'Headers text');
|
47 | deepEqual(
|
48 | tf.getCellValue(tf.getHeaderElement(1)),
|
49 | 'Destination',
|
50 | 'Column header text'
|
51 | );
|
52 | deepEqual(tf.getValidRowsNb(), 0, 'Number of valid rows before filtering');
|
53 | deepEqual(
|
54 | tf.getCellData(tf.dom().rows[3].cells[2]),
|
55 | 982,
|
56 | 'getCellData returns typed value'
|
57 | );
|
58 | });
|
59 |
|
60 | module('Public methods');
|
61 | test('Filters DOM elements', function() {
|
62 | deepEqual(tf.getFilterElement(1).nodeName, 'INPUT',
|
63 | 'Filter\'s DOM element');
|
64 | deepEqual(tf.getHeaderElement(2).nodeName, 'TH',
|
65 | 'Header\'s DOM element');
|
66 | });
|
67 |
|
68 | test('Get filters values', function() {
|
69 | equal(tf.getFilterValue(0), '', 'Column 0 filter value');
|
70 | tf.setFilterValue(0, 'Syd');
|
71 | tf.setFilterValue(1, 'Ade');
|
72 | deepEqual(tf.getFilterValue(0), 'Syd', 'Column 0 filter value');
|
73 | deepEqual(tf.getFiltersValue(), ['Syd', 'Ade', '', '', '']);
|
74 | });
|
75 |
|
76 | test('Filter table', function() {
|
77 | tf.clearFilters();
|
78 | deepEqual(tf.getFilterValue(0), '',
|
79 | 'Column 0 filter value after clearing filters');
|
80 | tf.setFilterValue(0, 'Syd');
|
81 | tf.filter();
|
82 | deepEqual(tf.getValidRowsNb(), 4, 'Filtered rows number');
|
83 | });
|
84 |
|
85 | test('Filter table with range', function() {
|
86 | tf.clearFilters();
|
87 | tf.setFilterValue(2, '>1500 && <=2871');
|
88 | tf.filter();
|
89 | deepEqual(tf.getValidRows().length, 3, 'Filtered rows number');
|
90 | });
|
91 |
|
92 | test('Filter table with operator', function() {
|
93 | tf.clearFilters();
|
94 | tf.setFilterValue(1, '{Bri');
|
95 | tf.filter();
|
96 | deepEqual(tf.getValidRows().length, 2, 'Filtered rows number');
|
97 | });
|
98 |
|
99 | test('Get active filter ID', function() {
|
100 |
|
101 | tf.getFilterElement(0).focus();
|
102 |
|
103 |
|
104 | var id = tf.getActiveFilterId();
|
105 |
|
106 |
|
107 | deepEqual(id, 'flt0_demo', 'Active filter ID');
|
108 | });
|
109 |
|
110 | test('Set active filter ID', function() {
|
111 |
|
112 | tf.setActiveFilterId('hello');
|
113 |
|
114 |
|
115 | deepEqual(tf.getActiveFilterId(), 'hello', 'Active filter ID');
|
116 | });
|
117 |
|
118 | test('Get column index from filter ID', function() {
|
119 |
|
120 | var filterId = 'flt3_demo';
|
121 |
|
122 |
|
123 | var colIndex = tf.getColumnIndexFromFilterId(filterId);
|
124 |
|
125 |
|
126 | deepEqual(colIndex, 3, 'Column index');
|
127 | });
|
128 |
|
129 | test('Activate filter for a specified column', function() {
|
130 |
|
131 | var filterId = 'flt3_demo';
|
132 |
|
133 |
|
134 | tf.activateFilter(3);
|
135 |
|
136 |
|
137 | deepEqual(tf.getActiveFilterId(), filterId, 'Filter active');
|
138 | });
|
139 |
|
140 | test('Activate filter not called if colIndex not a number', function() {
|
141 |
|
142 | var originalSetActiveFilterId = tf.setActiveFilterId;
|
143 | var hit = 0;
|
144 | tf.setActiveFilterId = function() { hit++; };
|
145 |
|
146 |
|
147 | tf.activateFilter(undefined);
|
148 |
|
149 |
|
150 | deepEqual(hit, 0, 'setActiveFilterId never called');
|
151 |
|
152 | tf.setActiveFilterId = originalSetActiveFilterId;
|
153 | });
|
154 |
|
155 | test('Clear filters', function() {
|
156 | tf.clearFilters();
|
157 | deepEqual(tf.getValidRowsNb(), 7, 'Filtered rows number');
|
158 | deepEqual(tf.getFiltersValue(), ['', '', '', '', '']);
|
159 | });
|
160 |
|
161 | test('Can get feature', function() {
|
162 | var feature = tf.feature('help');
|
163 | deepEqual(typeof feature, 'object', 'Feature instance');
|
164 | deepEqual(feature.feature, 'help', 'Feature name');
|
165 | });
|
166 |
|
167 | test('can iterate columns', function() {
|
168 |
|
169 | var counter = [];
|
170 |
|
171 |
|
172 | tf.eachCol(
|
173 | function(idx) {
|
174 | counter.push(idx);
|
175 | },
|
176 | function(idx) {
|
177 | return idx === 2;
|
178 | },
|
179 | function(idx) {
|
180 | return idx === 4;
|
181 | }
|
182 | );
|
183 |
|
184 |
|
185 | deepEqual(counter, [0, 1, 3], 'column iterator conditions met');
|
186 | });
|
187 |
|
188 | test('Get table data', function() {
|
189 | deepEqual(tf.getColValues(0),
|
190 | [
|
191 | 'Sydney','Sydney','Sydney',
|
192 | 'Sydney','Adelaide','Adelaide','Adelaide'
|
193 | ],
|
194 | 'Get specified column values'
|
195 | );
|
196 | deepEqual(tf.getColValues(0, true),
|
197 | [
|
198 | 'From','Sydney','Sydney','Sydney',
|
199 | 'Sydney','Adelaide','Adelaide','Adelaide'
|
200 | ],
|
201 | 'Get specified column values including column header'
|
202 | );
|
203 | deepEqual(
|
204 | tf.getColValues(2, false, true),
|
205 | [1412,982,286,872,2781,1533,2045],
|
206 | 'Get specified column typed values'
|
207 | );
|
208 | deepEqual(
|
209 | tf.getTableData(),
|
210 | [
|
211 | [2, ['Sydney','Adelaide','1412','1.4','25.3']],
|
212 | [3, ['Sydney','Brisbane','982','1.5','16']],
|
213 | [4, ['Sydney','Canberra','286','.6','4.3']],
|
214 | [5, ['Sydney','Melbourne','872','1.1','10.5']],
|
215 | [6, ['Adelaide','Perth','2781','3.1','38']],
|
216 | [7, ['Adelaide','Alice Springs','1533','2','20.25']],
|
217 | [8, ['Adelaide','Brisbane','2045','2.15','40']]
|
218 | ],
|
219 | 'Get table data'
|
220 | );
|
221 | deepEqual(
|
222 | tf.getTableData(true),
|
223 | [
|
224 | [1, ['From','Destination','Road Distance (km)',
|
225 | 'By Air (hrs)','By Rail (hrs)']],
|
226 | [2, ['Sydney','Adelaide','1412','1.4','25.3']],
|
227 | [3, ['Sydney','Brisbane','982','1.5','16']],
|
228 | [4, ['Sydney','Canberra','286','.6','4.3']],
|
229 | [5, ['Sydney','Melbourne','872','1.1','10.5']],
|
230 | [6, ['Adelaide','Perth','2781','3.1','38']],
|
231 | [7, ['Adelaide','Alice Springs','1533','2','20.25']],
|
232 | [8, ['Adelaide','Brisbane','2045','2.15','40']]
|
233 | ],
|
234 | 'Get table data including columns headers'
|
235 | );
|
236 | deepEqual(
|
237 | tf.getTableData(false, false, true),
|
238 | [
|
239 | [2, ['Sydney','Adelaide',1412,1.4,25.3]],
|
240 | [3, ['Sydney','Brisbane',982,1.5,16]],
|
241 | [4, ['Sydney','Canberra',286,0.6,4.3]],
|
242 | [5, ['Sydney','Melbourne',872,1.1,10.5]],
|
243 | [6, ['Adelaide','Perth',2781,3.1,38]],
|
244 | [7, ['Adelaide','Alice Springs',1533,2,20.25]],
|
245 | [8, ['Adelaide','Brisbane',2045,2.15,40]]
|
246 | ],
|
247 | 'Get table typed data'
|
248 | );
|
249 | tf.setFilterValue(0, 'Adelaide');
|
250 | tf.filter();
|
251 | deepEqual(
|
252 | tf.getFilteredValues(),
|
253 | [
|
254 | [6, ['Adelaide','Perth','2781','3.1','38']],
|
255 | [7, ['Adelaide','Alice Springs','1533','2','20.25']],
|
256 | [8, ['Adelaide','Brisbane','2045','2.15','40']]
|
257 | ],
|
258 | 'Get filtered table data'
|
259 | );
|
260 | deepEqual(
|
261 | tf.getFilteredValues(true),
|
262 | [
|
263 | [1, ['From','Destination','Road Distance (km)',
|
264 | 'By Air (hrs)','By Rail (hrs)']],
|
265 | [6, ['Adelaide','Perth','2781','3.1','38']],
|
266 | [7, ['Adelaide','Alice Springs','1533','2','20.25']],
|
267 | [8, ['Adelaide','Brisbane','2045','2.15','40']]
|
268 | ],
|
269 | 'Get filtered table values including columns headers'
|
270 | );
|
271 | deepEqual(
|
272 | tf.getFilteredData(),
|
273 | [
|
274 | [6, ['Adelaide','Perth',2781,3.1,38]],
|
275 | [7, ['Adelaide','Alice Springs',1533,2,20.25]],
|
276 | [8, ['Adelaide','Brisbane',2045,2.15,40]]
|
277 | ],
|
278 | 'Get filtered typed data'
|
279 | );
|
280 | deepEqual(
|
281 | tf.getFilteredDataCol(0),
|
282 | ['Adelaide','Adelaide','Adelaide'],
|
283 | 'Get specified column filtered values'
|
284 | );
|
285 | deepEqual(
|
286 | tf.getFilteredDataCol(0, true),
|
287 | ['From','Adelaide','Adelaide','Adelaide'],
|
288 | 'Get specified column filtered values including header'
|
289 | );
|
290 | deepEqual(
|
291 | tf.getFilteredDataCol(2, false, true),
|
292 | [2781,1533,2045],
|
293 | 'Get specified column filtered typed values'
|
294 | );
|
295 | deepEqual(
|
296 | tf.getFilteredColumnData(2),
|
297 | [2781,1533,2045],
|
298 | 'Get filtered column data'
|
299 | );
|
300 | deepEqual(
|
301 | tf.getFilteredColumnData(2, true),
|
302 | ['Road Distance (km)',2781,1533,2045],
|
303 | 'Get filtered column data with headers'
|
304 | );
|
305 | deepEqual(
|
306 | tf.getVisibleColumnData(2),
|
307 | [2781,1533,2045],
|
308 | 'Get visible column data'
|
309 | );
|
310 | deepEqual(
|
311 | tf.getVisibleColumnData(2, true),
|
312 | ['Road Distance (km)',2781,1533,2045],
|
313 | 'Get visible column data with headers'
|
314 | );
|
315 | deepEqual(
|
316 | tf.getFilteredColumnValues(2),
|
317 | ['2781','1533','2045'],
|
318 | 'Get filtered column data'
|
319 | );
|
320 | deepEqual(
|
321 | tf.getFilteredColumnValues(2, true),
|
322 | ['Road Distance (km)','2781','1533','2045'],
|
323 | 'Get filtered column data with headers'
|
324 | );
|
325 | deepEqual(
|
326 | tf.getVisibleColumnValues(2),
|
327 | ['2781','1533','2045'],
|
328 | 'Get visible column data'
|
329 | );
|
330 | deepEqual(
|
331 | tf.getVisibleColumnValues(2, true),
|
332 | ['Road Distance (km)','2781','1533','2045'],
|
333 | 'Get visible column data with headers'
|
334 | );
|
335 | tf.clearFilters();
|
336 | tf.filter();
|
337 | });
|
338 |
|
339 | test('Destroy', function() {
|
340 | tf.destroy();
|
341 | deepEqual(tf.isInitialized(), false, 'Filters removed');
|
342 | tf = null;
|
343 | });
|
344 |
|
345 | module('TableFilter instance with different filter types');
|
346 | test('Test filter types', function() {
|
347 | tf = null;
|
348 | tf = new TableFilter('demo', {
|
349 | base_path: '../dist/tablefilter/',
|
350 | col_0: 'select',
|
351 | col_1: 'multiple',
|
352 | col_2: 'checklist',
|
353 | col_types: ['string', 'string', 'number', 'number', 'number']
|
354 | });
|
355 | tf.init();
|
356 |
|
357 | deepEqual(tf.getFilterType(0), 'select', 'Colmun 0 filter type');
|
358 | deepEqual(tf.getFilterType(1), 'multiple', 'Colmun 1 filter type');
|
359 | deepEqual(tf.getFilterType(2), 'checklist', 'Colmun 2 filter type');
|
360 | deepEqual(tf.getFilterType(3), 'input', 'Colmun 3 filter type');
|
361 | deepEqual(tf.getFiltersByType('select'), ['flt0_demo'],
|
362 | 'Get select filter(s)');
|
363 | deepEqual(tf.getFiltersByType('multiple'), ['flt1_demo'],
|
364 | 'Get multiple filter(s)');
|
365 | deepEqual(tf.getFiltersByType('checklist'), ['flt2_demo'],
|
366 | 'Get checklist filter(s)');
|
367 | deepEqual(tf.getFiltersByType('input'), ['flt3_demo','flt4_demo'],
|
368 | 'Get input filter(s)');
|
369 | });
|
370 |
|
371 | test('Get filters values', function() {
|
372 | tf.setFilterValue(0, 'Sydney');
|
373 | tf.setFilterValue(1, 'Adelaide');
|
374 | deepEqual(tf.getFilterValue(0), 'Sydney', 'Column 0 filter value');
|
375 | deepEqual(tf.getFiltersValue(),
|
376 | ['Sydney', ['Adelaide'], '', '', '']);
|
377 | });
|
378 |
|
379 | test('Filter table', function() {
|
380 | tf.clearFilters();
|
381 | tf.setFilterValue(1, 'Alice Springs');
|
382 | tf.filter();
|
383 | deepEqual(tf.getValidRows().length, 1, 'Filtered rows number');
|
384 | });
|
385 |
|
386 | test('Can filter table with multiple filter', function() {
|
387 | tf.clearFilters();
|
388 | tf.setFilterValue(1, ['Alice Springs', 'Canberra']);
|
389 | tf.filter();
|
390 | deepEqual(tf.getValidRows().length, 2, 'Filtered rows number');
|
391 | });
|
392 |
|
393 | test('Can filter table with checklist filter', function() {
|
394 | tf.clearFilters();
|
395 | tf.setFilterValue(2, ['2045', '2781']);
|
396 | tf.filter();
|
397 | deepEqual(tf.getValidRows().length, 2, 'Filtered rows number');
|
398 | });
|
399 |
|
400 | test('Can select dropdown options with or operator', function() {
|
401 | tf.setFilterValue(1, '');
|
402 | tf.setFilterValue(1, 'Brisbane || Melbourne');
|
403 |
|
404 | deepEqual(tf.getFilterValue(1), ['Brisbane', 'Melbourne'],
|
405 | 'Column 2 filter values');
|
406 | });
|
407 |
|
408 | test('Can select dropdown options with array', function() {
|
409 | tf.setFilterValue(1, '');
|
410 | tf.setFilterValue(1, ['Canberra', 'Perth']);
|
411 |
|
412 | deepEqual(tf.getFilterValue(1), ['Canberra', 'Perth'],
|
413 | 'Column 2 filter values');
|
414 | });
|
415 |
|
416 | test('Can select checklist options', function() {
|
417 | tf.setFilterValue(2, '2045 || 2781');
|
418 |
|
419 | deepEqual(tf.getFilterValue(2), ['2045', '2781'],
|
420 | 'Column 2 filter values');
|
421 | });
|
422 |
|
423 | test('Can select checklist options with array', function() {
|
424 | tf.setFilterValue(2, '');
|
425 | tf.setFilterValue(2, ['1412', '982']);
|
426 |
|
427 | deepEqual(tf.getFilterValue(2), ['982', '1412'],
|
428 | 'Column 2 filter values');
|
429 | });
|
430 |
|
431 | test('get and set filter value can handle out of range column index',
|
432 | function() {
|
433 |
|
434 | tf.setFilterValue(11, '');
|
435 |
|
436 |
|
437 | deepEqual(tf.getFilterValue(11), '',
|
438 | 'return empty string for inexistent filter');
|
439 | });
|
440 |
|
441 | module('TableFilter with pop-up filters');
|
442 | test('Sanity checks', function() {
|
443 | tf.destroy();
|
444 | tf = null;
|
445 | tf = new TableFilter('demo', {
|
446 | base_path: '../dist/tablefilter/',
|
447 | popup_filters: true,
|
448 | col_types: ['string', 'string', 'number', 'number', 'number']
|
449 | });
|
450 | tf.init();
|
451 |
|
452 | deepEqual(tf.getFiltersRowIndex(), 0, 'Filters row index');
|
453 | deepEqual(tf.getHeadersRowIndex(), 1, 'Headers row index');
|
454 | deepEqual(tf.getFilterElement(1).nodeName, 'INPUT',
|
455 | 'Filter\'s DOM element');
|
456 | deepEqual(tf.getHeaderElement(2).nodeName, 'TH',
|
457 | 'Header\'s DOM element');
|
458 | });
|
459 |
|
460 | test('Get filters values', function() {
|
461 | tf.setFilterValue(0, 'Sydney');
|
462 | tf.setFilterValue(1, 'Adelaide');
|
463 | deepEqual(tf.getFilterValue(0), 'Sydney', 'Column 0 filter value');
|
464 | deepEqual(tf.getFiltersValue(), ['Sydney', 'Adelaide', '', '', '']);
|
465 | });
|
466 |
|
467 |
|
468 | test('Test getCellValue with white spaces', function() {
|
469 |
|
470 | var cell = document.createElement('td');
|
471 | cell.textContent ='\t\thello world\t\t\t';
|
472 |
|
473 |
|
474 | var result = tf.getCellValue(cell);
|
475 |
|
476 |
|
477 | deepEqual(result, 'hello world', 'Expected text with no white spaces');
|
478 | });
|
479 |
|
480 | test('Filter table', function() {
|
481 | tf.clearFilters();
|
482 | tf.setFilterValue(1, 'Adelaide');
|
483 | tf.filter();
|
484 | deepEqual(tf.getValidRows().length, 1, 'Filtered rows number');
|
485 | });
|
486 |
|
487 | module('TableFilter with grid-layout');
|
488 | test('Sanity checks', function() {
|
489 | tf.destroy();
|
490 | tf = null;
|
491 | tf = new TableFilter('demo', {
|
492 | base_path: '../dist/tablefilter/',
|
493 | grid_layout: true,
|
494 | col_0: 'select',
|
495 | col_1: 'multiple',
|
496 | col_2: 'checklist',
|
497 | col_types: ['string', 'string', 'number', 'number', 'number']
|
498 | });
|
499 | tf.init();
|
500 |
|
501 | deepEqual(tf.getFilterType(0), 'select', 'Colmun 0 filter type');
|
502 | deepEqual(tf.getFilterType(1), 'multiple', 'Colmun 1 filter type');
|
503 | deepEqual(tf.getFilterType(2), 'checklist', 'Colmun 2 filter type');
|
504 | deepEqual(tf.getFilterType(3), 'input', 'Colmun 3 filter type');
|
505 | deepEqual(tf.getFiltersByType('select'), ['flt0_demo'],
|
506 | 'Get select filter(s)');
|
507 | deepEqual(tf.getFiltersByType('multiple'), ['flt1_demo'],
|
508 | 'Get multiple filter(s)');
|
509 | deepEqual(tf.getFiltersByType('checklist'), ['flt2_demo'],
|
510 | 'Get checklist filter(s)');
|
511 | deepEqual(tf.getFiltersByType('input'), ['flt3_demo','flt4_demo'],
|
512 | 'Get input filter(s)');
|
513 |
|
514 | deepEqual(tf.getFiltersRowIndex(), 1, 'Filters row index');
|
515 | deepEqual(tf.getHeadersRowIndex(), 0, 'Headers row index');
|
516 | deepEqual(tf.getFilterElement(1).nodeName, 'SELECT',
|
517 | 'Filter\'s DOM element');
|
518 | deepEqual(tf.getHeaderElement(2).nodeName, 'TH',
|
519 | 'Header\'s DOM element');
|
520 | });
|
521 |
|
522 | test('Get filters values', function() {
|
523 | tf.setFilterValue(0, 'Sydney');
|
524 | tf.setFilterValue(1, 'Adelaide');
|
525 | deepEqual(tf.getFilterValue(0), 'Sydney', 'Column 0 filter value');
|
526 | deepEqual(tf.getFiltersValue(), ['Sydney', ['Adelaide'], '', '', '']);
|
527 | });
|
528 |
|
529 | test('Filter table', function() {
|
530 | tf.clearFilters();
|
531 | tf.setFilterValue(1, 'Adelaide');
|
532 | tf.filter();
|
533 | deepEqual(tf.getValidRows().length, 1, 'Filtered rows number');
|
534 | });
|
535 |
|
536 | test('Clear filters', function() {
|
537 | tf.clearFilters();
|
538 | deepEqual(tf.getValidRowsNb(), 7, 'Filtered rows number');
|
539 | deepEqual(tf.getFiltersValue(), ['', '', '', '', '']);
|
540 | });
|
541 |
|
542 | test('Get table data', function() {
|
543 | deepEqual(tf.getColValues(0),
|
544 | [
|
545 | 'Sydney','Sydney','Sydney',
|
546 | 'Sydney','Adelaide','Adelaide','Adelaide'
|
547 | ],
|
548 | 'Get specified column values'
|
549 | );
|
550 | deepEqual(tf.getColValues(0, true),
|
551 | [
|
552 | 'From','Sydney','Sydney','Sydney',
|
553 | 'Sydney','Adelaide','Adelaide','Adelaide'
|
554 | ],
|
555 | 'Get specified column values including column header'
|
556 | );
|
557 | deepEqual(tf.getColumnValues(0),
|
558 | [
|
559 | 'Sydney','Sydney','Sydney',
|
560 | 'Sydney','Adelaide','Adelaide','Adelaide'
|
561 | ],
|
562 | 'Get specified column values'
|
563 | );
|
564 | deepEqual(tf.getColumnValues(0, true),
|
565 | [
|
566 | 'From','Sydney','Sydney','Sydney',
|
567 | 'Sydney','Adelaide','Adelaide','Adelaide'
|
568 | ],
|
569 | 'Get specified column values including column header'
|
570 | );
|
571 | deepEqual(tf.getColumnData(2),
|
572 | [1412, 982, 286, 872, 2781, 1533, 2045],
|
573 | 'Get specified column data'
|
574 | );
|
575 | deepEqual(tf.getColumnData(2, true),
|
576 | ['Road Distance (km)', 1412, 982, 286, 872, 2781, 1533, 2045],
|
577 | 'Get specified column data including column header'
|
578 | );
|
579 | deepEqual(
|
580 | tf.getTableData(),
|
581 | [
|
582 | [0, ['Sydney','Adelaide','1412','1.4','25.3']],
|
583 | [1, ['Sydney','Brisbane','982','1.5','16']],
|
584 | [2, ['Sydney','Canberra','286','.6','4.3']],
|
585 | [3, ['Sydney','Melbourne','872','1.1','10.5']],
|
586 | [4, ['Adelaide','Perth','2781','3.1','38']],
|
587 | [5, ['Adelaide','Alice Springs','1533','2','20.25']],
|
588 | [6, ['Adelaide','Brisbane','2045','2.15','40']]
|
589 | ],
|
590 | 'Get table values with getTableData()'
|
591 | );
|
592 | deepEqual(
|
593 | tf.getData(),
|
594 | [
|
595 | [0, ['Sydney','Adelaide',1412,1.4,25.3]],
|
596 | [1, ['Sydney','Brisbane',982,1.5,16]],
|
597 | [2, ['Sydney','Canberra',286,0.6,4.3]],
|
598 | [3, ['Sydney','Melbourne',872,1.1,10.5]],
|
599 | [4, ['Adelaide','Perth',2781,3.1,38]],
|
600 | [5, ['Adelaide','Alice Springs',1533,2,20.25]],
|
601 | [6, ['Adelaide','Brisbane',2045,2.15,40]]
|
602 | ],
|
603 | 'Get table data'
|
604 | );
|
605 | deepEqual(
|
606 | tf.getValues(),
|
607 | [
|
608 | [0, ['Sydney','Adelaide','1412','1.4','25.3']],
|
609 | [1, ['Sydney','Brisbane','982','1.5','16']],
|
610 | [2, ['Sydney','Canberra','286','.6','4.3']],
|
611 | [3, ['Sydney','Melbourne','872','1.1','10.5']],
|
612 | [4, ['Adelaide','Perth','2781','3.1','38']],
|
613 | [5, ['Adelaide','Alice Springs','1533','2','20.25']],
|
614 | [6, ['Adelaide','Brisbane','2045','2.15','40']]
|
615 | ],
|
616 | 'Get table values'
|
617 | );
|
618 |
|
619 | tf.clearFilters();
|
620 | tf.setFilterValue(0, 'Adelaide');
|
621 | tf.filter();
|
622 | deepEqual(
|
623 | tf.getFilteredValues(),
|
624 | [
|
625 | [4, ['Adelaide','Perth','2781','3.1','38']],
|
626 | [5, ['Adelaide','Alice Springs','1533','2','20.25']],
|
627 | [6, ['Adelaide','Brisbane','2045','2.15','40']]
|
628 | ],
|
629 | 'Get filtered table values'
|
630 | );
|
631 | deepEqual(
|
632 | tf.getFilteredValues(true),
|
633 | [
|
634 | [0, ['From','Destination','Road Distance (km)',
|
635 | 'By Air (hrs)','By Rail (hrs)']],
|
636 | [4, ['Adelaide','Perth','2781','3.1','38']],
|
637 | [5, ['Adelaide','Alice Springs','1533','2','20.25']],
|
638 | [6, ['Adelaide','Brisbane','2045','2.15','40']]
|
639 | ],
|
640 | 'Get filtered table values including columns headers'
|
641 | );
|
642 | deepEqual(
|
643 | tf.getFilteredDataCol(0),
|
644 | ['Adelaide','Adelaide','Adelaide'],
|
645 | 'Get specified column filtered values'
|
646 | );
|
647 | deepEqual(
|
648 | tf.getFilteredDataCol(0, true),
|
649 | ['From','Adelaide','Adelaide','Adelaide'],
|
650 | 'Get specified column filtered values including header'
|
651 | );
|
652 | deepEqual(
|
653 | tf.getFilteredColumnData(2),
|
654 | [2781,1533,2045],
|
655 | 'Get filtered column data'
|
656 | );
|
657 | deepEqual(
|
658 | tf.getFilteredColumnData(2, true),
|
659 | ['Road Distance (km)',2781,1533,2045],
|
660 | 'Get filtered column data with headers'
|
661 | );
|
662 | deepEqual(
|
663 | tf.getVisibleColumnData(2),
|
664 | [2781,1533,2045],
|
665 | 'Get visible column data'
|
666 | );
|
667 | deepEqual(
|
668 | tf.getVisibleColumnData(2, true),
|
669 | ['Road Distance (km)',2781,1533,2045],
|
670 | 'Get visible column data with headers'
|
671 | );
|
672 | deepEqual(
|
673 | tf.getFilteredColumnValues(2),
|
674 | ['2781','1533','2045'],
|
675 | 'Get filtered column data'
|
676 | );
|
677 | deepEqual(
|
678 | tf.getFilteredColumnValues(2, true),
|
679 | ['Road Distance (km)','2781','1533','2045'],
|
680 | 'Get filtered column data with headers'
|
681 | );
|
682 | deepEqual(
|
683 | tf.getVisibleColumnValues(2),
|
684 | ['2781','1533','2045'],
|
685 | 'Get visible column data'
|
686 | );
|
687 | deepEqual(
|
688 | tf.getVisibleColumnValues(2, true),
|
689 | ['Road Distance (km)','2781','1533','2045'],
|
690 | 'Get visible column data with headers'
|
691 | );
|
692 | tf.clearFilters();
|
693 | tf.filter();
|
694 | });
|
695 |
|
696 | test('Destroy', function() {
|
697 | tf.destroy();
|
698 | deepEqual(tf.isInitialized(), false, 'Filters removed');
|
699 | tf = null;
|
700 | });
|
701 |
|
702 | function colsVisibilityTests() {
|
703 | module('Public methods with columns visibility extension');
|
704 | test('Sanity checks', function() {
|
705 |
|
706 | tf1.setFilterValue(0, 'Adelaide');
|
707 | tf1.filter();
|
708 |
|
709 | deepEqual(
|
710 | tf1.getFilteredValues(false, true),
|
711 | [
|
712 | [6, ['Adelaide','3.1','38']],
|
713 | [7, ['Adelaide','2','20.25']],
|
714 | [8, ['Adelaide','2.15','40']]
|
715 | ],
|
716 | 'Get filtered table values with excluded columns'
|
717 | );
|
718 |
|
719 | deepEqual(
|
720 | tf1.getFilteredValues(true, true),
|
721 | [
|
722 | [1, ['From','By Air (hrs)','By Rail (hrs)']],
|
723 | [6, ['Adelaide','3.1','38']],
|
724 | [7, ['Adelaide','2','20.25']],
|
725 | [8, ['Adelaide','2.15','40']]
|
726 | ],
|
727 | 'Get filtered table values with headers and excluded columns'
|
728 | );
|
729 |
|
730 | deepEqual(
|
731 | tf1.getTableData(false, true),
|
732 | [
|
733 | [2, ['Sydney','1.4','25.3']],
|
734 | [3, ['Sydney','1.5','16']],
|
735 | [4, ['Sydney','.6','4.3']],
|
736 | [5, ['Sydney','1.1','10.5']],
|
737 | [6, ['Adelaide','3.1','38']],
|
738 | [7, ['Adelaide','2','20.25']],
|
739 | [8, ['Adelaide','2.15','40']]
|
740 | ],
|
741 | 'Get table data with excluded columns'
|
742 | );
|
743 |
|
744 | deepEqual(
|
745 | tf1.getTableData(true, true),
|
746 | [
|
747 | [1, ['From','By Air (hrs)','By Rail (hrs)']],
|
748 | [2, ['Sydney','1.4','25.3']],
|
749 | [3, ['Sydney','1.5','16']],
|
750 | [4, ['Sydney','.6','4.3']],
|
751 | [5, ['Sydney','1.1','10.5']],
|
752 | [6, ['Adelaide','3.1','38']],
|
753 | [7, ['Adelaide','2','20.25']],
|
754 | [8, ['Adelaide','2.15','40']]
|
755 | ],
|
756 | 'Get table data with headers and excluded columns'
|
757 | );
|
758 |
|
759 | deepEqual(
|
760 | tf1.getHeadersText(false),
|
761 | [
|
762 | 'From','Destination','Road Distance (km)', 'By Air (hrs)',
|
763 | 'By Rail (hrs)'
|
764 | ],
|
765 | 'Headers text'
|
766 | );
|
767 |
|
768 | deepEqual(
|
769 | tf1.getHeadersText(true),
|
770 | ['From', 'By Air (hrs)','By Rail (hrs)'],
|
771 | 'Headers text with excluded columns'
|
772 | );
|
773 |
|
774 | });
|
775 |
|
776 | test('Extension Sanity checks', function() {
|
777 | deepEqual(
|
778 | tf1.hasExtension('colsVisibility'),
|
779 | true,
|
780 | 'ColsVisibility in extensions registry'
|
781 | );
|
782 |
|
783 | deepEqual(
|
784 | tf1.hasExtension('myExtension'),
|
785 | true,
|
786 | 'myExtension in extensions registry'
|
787 | );
|
788 | });
|
789 |
|
790 | test('Destroy', function() {
|
791 | tf1.destroy();
|
792 | deepEqual(tf1.isInitialized(), false, 'Filters removed');
|
793 | tf1 = null;
|
794 | });
|
795 | }
|