UNPKG

25.5 kBJavaScriptView Raw
1
2var tf = new TableFilter('demo', {
3 base_path: '../dist/tablefilter/',
4 col_types: ['string', 'string', 'number', 'number', 'number']
5});
6tf.init();
7
8var 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
18tf1.registerExtension(
19 {
20 init: function() {},
21 destroy: function() {}
22 },
23 'myExtension'
24);
25tf1.init();
26
27module('Sanity checks');
28test('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
60module('Public methods');
61test('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
68test('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
76test('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
85test('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
92test('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
99test('Get active filter ID', function() {
100 //setup
101 tf.getFilterElement(0).focus();
102
103 //act
104 var id = tf.getActiveFilterId();
105
106 //assert
107 deepEqual(id, 'flt0_demo', 'Active filter ID');
108});
109
110test('Set active filter ID', function() {
111 //act
112 tf.setActiveFilterId('hello');
113
114 //assert
115 deepEqual(tf.getActiveFilterId(), 'hello', 'Active filter ID');
116});
117
118test('Get column index from filter ID', function() {
119 //set
120 var filterId = 'flt3_demo';
121
122 //act
123 var colIndex = tf.getColumnIndexFromFilterId(filterId);
124
125 //assert
126 deepEqual(colIndex, 3, 'Column index');
127});
128
129test('Activate filter for a specified column', function() {
130 //set
131 var filterId = 'flt3_demo';
132
133 //act
134 tf.activateFilter(3);
135
136 //assert
137 deepEqual(tf.getActiveFilterId(), filterId, 'Filter active');
138});
139
140test('Activate filter not called if colIndex not a number', function() {
141 //set
142 var originalSetActiveFilterId = tf.setActiveFilterId;
143 var hit = 0;
144 tf.setActiveFilterId = function() { hit++; };
145
146 //act
147 tf.activateFilter(undefined);
148
149 //assert
150 deepEqual(hit, 0, 'setActiveFilterId never called');
151
152 tf.setActiveFilterId = originalSetActiveFilterId;
153});
154
155test('Clear filters', function() {
156 tf.clearFilters();
157 deepEqual(tf.getValidRowsNb(), 7, 'Filtered rows number');
158 deepEqual(tf.getFiltersValue(), ['', '', '', '', '']);
159});
160
161test('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
167test('can iterate columns', function() {
168 // setup
169 var counter = [];
170
171 // act
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 // assert
185 deepEqual(counter, [0, 1, 3], 'column iterator conditions met');
186});
187
188test('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
339test('Destroy', function() {
340 tf.destroy();
341 deepEqual(tf.isInitialized(), false, 'Filters removed');
342 tf = null;
343});
344
345module('TableFilter instance with different filter types');
346test('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
371test('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
379test('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
386test('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
393test('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
400test('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
408test('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
416test('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
423test('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
431test('get and set filter value can handle out of range column index',
432 function() {
433 // act
434 tf.setFilterValue(11, '');
435
436 // assert
437 deepEqual(tf.getFilterValue(11), '',
438 'return empty string for inexistent filter');
439 });
440
441module('TableFilter with pop-up filters');
442test('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
460test('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// Test case for issue 165
468test('Test getCellValue with white spaces', function() {
469 // setup
470 var cell = document.createElement('td');
471 cell.textContent ='\t\thello world\t\t\t';
472
473 // act
474 var result = tf.getCellValue(cell);
475
476 //assert
477 deepEqual(result, 'hello world', 'Expected text with no white spaces');
478});
479
480test('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
487module('TableFilter with grid-layout');
488test('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
522test('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
529test('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
536test('Clear filters', function() {
537 tf.clearFilters();
538 deepEqual(tf.getValidRowsNb(), 7, 'Filtered rows number');
539 deepEqual(tf.getFiltersValue(), ['', '', '', '', '']);
540});
541
542test('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
696test('Destroy', function() {
697 tf.destroy();
698 deepEqual(tf.isInitialized(), false, 'Filters removed');
699 tf = null;
700});
701
702function colsVisibilityTests() { // issue 94
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}