2015-05-31 13:48:29 +02:00
|
|
|
|
|
|
|
(function(win, TableFilter){
|
|
|
|
|
|
|
|
var tf = new TableFilter('demo', {
|
|
|
|
base_path: '../dist/tablefilter/',
|
|
|
|
mark_active_columns: true
|
|
|
|
});
|
|
|
|
tf.init();
|
2017-04-22 21:17:42 +02:00
|
|
|
var markActiveColumns = tf.feature('markActiveColumns');
|
2015-05-31 13:48:29 +02:00
|
|
|
|
|
|
|
module('Sanity checks');
|
|
|
|
test('Active columns', function() {
|
|
|
|
deepEqual(tf instanceof TableFilter, true, 'TableFilter instanciated');
|
2017-04-22 21:17:42 +02:00
|
|
|
notEqual(markActiveColumns, null, 'markActiveColumns instanciated');
|
|
|
|
deepEqual(tf.markActiveColumns, true, 'markActiveColumns property');
|
2015-05-31 13:48:29 +02:00
|
|
|
});
|
|
|
|
|
2017-04-22 21:17:42 +02:00
|
|
|
module('Feature interface');
|
|
|
|
test('Properties', function() {
|
|
|
|
deepEqual(markActiveColumns.tf instanceof TableFilter, true,
|
|
|
|
'TableFilter instance');
|
|
|
|
deepEqual(markActiveColumns.feature, 'markActiveColumns',
|
|
|
|
'Feature name');
|
|
|
|
deepEqual(markActiveColumns.enabled, true, 'Feature enabled');
|
|
|
|
deepEqual(markActiveColumns.initialized, true, 'Feature initialized');
|
|
|
|
deepEqual(typeof markActiveColumns.emitter, 'object',
|
|
|
|
'Feature has emitter instance');
|
|
|
|
deepEqual(typeof markActiveColumns.config, 'object',
|
|
|
|
'TF configuration object');
|
|
|
|
deepEqual(typeof markActiveColumns.init, 'function',
|
|
|
|
'Feature init method');
|
|
|
|
deepEqual(typeof markActiveColumns.destroy, 'function',
|
|
|
|
'Feature destroy method');
|
|
|
|
deepEqual(typeof markActiveColumns.reset, 'function',
|
|
|
|
'Feature reset method');
|
|
|
|
deepEqual(typeof markActiveColumns.enable, 'function',
|
|
|
|
'Feature enable method');
|
|
|
|
deepEqual(typeof markActiveColumns.disable, 'function',
|
|
|
|
'Feature enable method');
|
|
|
|
deepEqual(typeof markActiveColumns.isEnabled, 'function',
|
|
|
|
'Feature enable method');
|
|
|
|
});
|
|
|
|
test('Can destroy', function() {
|
|
|
|
markActiveColumns.destroy();
|
|
|
|
deepEqual(markActiveColumns.initialized, false, 'not initialised');
|
|
|
|
});
|
|
|
|
test('Can reset', function() {
|
|
|
|
markActiveColumns.reset();
|
|
|
|
deepEqual(markActiveColumns.enabled, true, 'enabled');
|
|
|
|
});
|
|
|
|
test('Can disable', function() {
|
|
|
|
markActiveColumns.disable();
|
|
|
|
deepEqual(markActiveColumns.enabled, false, 'disabled');
|
|
|
|
});
|
|
|
|
test('Can enable', function() {
|
|
|
|
markActiveColumns.enable();
|
|
|
|
deepEqual(markActiveColumns.enabled, true, 'enabled');
|
|
|
|
});
|
|
|
|
test('Can init', function() {
|
|
|
|
markActiveColumns.destroy();
|
|
|
|
markActiveColumns.enable();
|
|
|
|
markActiveColumns.init();
|
|
|
|
deepEqual(markActiveColumns.enabled, true, 'enabled');
|
|
|
|
});
|
|
|
|
test('Can check is enabled', function() {
|
|
|
|
markActiveColumns.isEnabled();
|
|
|
|
deepEqual(markActiveColumns.enabled, true, 'enabled');
|
|
|
|
});
|
|
|
|
|
|
|
|
module('Behaviour');
|
2015-05-31 13:48:29 +02:00
|
|
|
test('Active columns', function() {
|
|
|
|
tf.setFilterValue(1, 'Bri');
|
|
|
|
tf.setFilterValue(3, '>2');
|
|
|
|
tf.filter();
|
|
|
|
var header1 = tf.getHeaderElement(1);
|
|
|
|
var header3 = tf.getHeaderElement(3);
|
|
|
|
deepEqual(
|
2016-05-15 05:33:16 +02:00
|
|
|
header1.className.indexOf('activeHeader') !== -1,
|
2015-05-31 13:48:29 +02:00
|
|
|
true,
|
|
|
|
'Active filter indicator');
|
|
|
|
deepEqual(
|
2016-05-15 05:33:16 +02:00
|
|
|
header3.className.indexOf('activeHeader') !== -1,
|
2015-05-31 13:48:29 +02:00
|
|
|
true,
|
|
|
|
'Active filter indicator');
|
|
|
|
});
|
|
|
|
|
|
|
|
test('Active columns with paging', function() {
|
|
|
|
tf.destroy();
|
|
|
|
tf = null;
|
|
|
|
tf = new TableFilter('demo', {
|
|
|
|
base_path: '../dist/tablefilter/',
|
|
|
|
mark_active_columns: true,
|
|
|
|
paging: true
|
|
|
|
});
|
|
|
|
tf.init();
|
|
|
|
|
|
|
|
tf.setFilterValue(1, 'Bri');
|
|
|
|
tf.setFilterValue(3, '>2');
|
|
|
|
tf.filter();
|
|
|
|
var header1 = tf.getHeaderElement(1);
|
|
|
|
var header3 = tf.getHeaderElement(3);
|
|
|
|
deepEqual(
|
2016-05-15 05:33:16 +02:00
|
|
|
header1.className.indexOf('activeHeader') !== -1,
|
2015-05-31 13:48:29 +02:00
|
|
|
true,
|
|
|
|
'Active filter indicator');
|
|
|
|
deepEqual(
|
2016-05-15 05:33:16 +02:00
|
|
|
header3.className.indexOf('activeHeader') !== -1,
|
2015-05-31 13:48:29 +02:00
|
|
|
true,
|
|
|
|
'Active filter indicator');
|
|
|
|
});
|
|
|
|
|
|
|
|
test('Grid layout active columns', function() {
|
|
|
|
tf.destroy();
|
|
|
|
tf = null;
|
|
|
|
tf = new TableFilter('demo', {
|
|
|
|
base_path: '../dist/tablefilter/',
|
|
|
|
mark_active_columns: true,
|
|
|
|
grid_layout: true
|
|
|
|
});
|
|
|
|
tf.init();
|
|
|
|
|
|
|
|
tf.setFilterValue(1, 'Bri');
|
|
|
|
tf.setFilterValue(3, '>2');
|
|
|
|
tf.filter();
|
|
|
|
var header1 = tf.getHeaderElement(1);
|
|
|
|
var header3 = tf.getHeaderElement(3);
|
|
|
|
deepEqual(
|
2016-05-15 05:33:16 +02:00
|
|
|
header1.className.indexOf('activeHeader') !== -1,
|
2015-05-31 13:48:29 +02:00
|
|
|
true,
|
|
|
|
'Active filter indicator');
|
|
|
|
deepEqual(
|
2016-05-15 05:33:16 +02:00
|
|
|
header3.className.indexOf('activeHeader') !== -1,
|
2015-05-31 13:48:29 +02:00
|
|
|
true,
|
|
|
|
'Active filter indicator');
|
|
|
|
});
|
|
|
|
|
2017-04-22 21:17:42 +02:00
|
|
|
test('Cannot destroy if not initialised', function() {
|
|
|
|
// setup
|
|
|
|
var clearActiveColumns = markActiveColumns.clearActiveColumns;
|
|
|
|
var hit = 0;
|
|
|
|
markActiveColumns.clearActiveColumns = function() { hit++ };
|
|
|
|
markActiveColumns.initialized = false;
|
|
|
|
|
|
|
|
// act
|
|
|
|
markActiveColumns.destroy();
|
|
|
|
|
|
|
|
// assert
|
|
|
|
deepEqual(hit, 0, 'clearActiveColumns not called');
|
|
|
|
|
|
|
|
markActiveColumns.clearActiveColumns = clearActiveColumns;
|
|
|
|
});
|
|
|
|
|
|
|
|
module('Callbacks');
|
2017-04-23 10:22:34 +02:00
|
|
|
test('Can trigger onBeforeActiveColumn callback', function() {
|
2017-04-22 21:17:42 +02:00
|
|
|
// setup
|
|
|
|
var colIndex;
|
|
|
|
markActiveColumns.onBeforeActiveColumn = function(feature, colIdx) {
|
|
|
|
colIndex = colIdx;
|
|
|
|
};
|
|
|
|
|
|
|
|
// act
|
|
|
|
markActiveColumns.markActiveColumn(2);
|
|
|
|
|
|
|
|
// assert
|
|
|
|
deepEqual(colIndex, 2,
|
|
|
|
'expected column index passed to onBeforeActiveColumn');
|
|
|
|
});
|
|
|
|
|
2017-04-23 10:22:34 +02:00
|
|
|
test('Can trigger onAfterActiveColumn callback', function() {
|
2017-04-22 21:17:42 +02:00
|
|
|
// setup
|
|
|
|
var colIndex;
|
|
|
|
markActiveColumns.onAfterActiveColumn = function(feature, colIdx) {
|
|
|
|
colIndex = colIdx;
|
|
|
|
};
|
|
|
|
|
|
|
|
// act
|
|
|
|
markActiveColumns.markActiveColumn(3);
|
|
|
|
|
|
|
|
// assert
|
|
|
|
deepEqual(colIndex, 3,
|
|
|
|
'expected column index passed to onAfterActiveColumn');
|
|
|
|
});
|
|
|
|
|
2017-04-23 10:22:34 +02:00
|
|
|
module('mark_active_columns as configuration object');
|
|
|
|
test('Sanity checks', function() {
|
|
|
|
tf.destroy();
|
|
|
|
var hit = 0;
|
|
|
|
tf = new TableFilter('demo', {
|
|
|
|
base_path: '../dist/tablefilter/',
|
|
|
|
mark_active_columns: {
|
|
|
|
header_css_class: 'myCssClass',
|
|
|
|
on_before_active_column: function(feature, colIndex) {
|
|
|
|
hit = colIndex;
|
|
|
|
},
|
|
|
|
on_after_active_column: function(feature, colIndex) {
|
|
|
|
hit = colIndex;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
tf.init();
|
|
|
|
var markActiveColumns = tf.feature('markActiveColumns');
|
|
|
|
|
|
|
|
deepEqual(tf instanceof TableFilter, true, 'TableFilter instanciated');
|
|
|
|
notEqual(markActiveColumns, null, 'markActiveColumns instanciated');
|
|
|
|
deepEqual(tf.markActiveColumns, true, 'markActiveColumns property');
|
|
|
|
|
|
|
|
test('Custom header CSS class', function() {
|
|
|
|
// setup
|
|
|
|
tf.setFilterValue(1, 'Bri');
|
|
|
|
tf.setFilterValue(3, '>2');
|
|
|
|
var header1 = tf.getHeaderElement(1);
|
|
|
|
var header3 = tf.getHeaderElement(3);
|
|
|
|
|
|
|
|
// act
|
|
|
|
tf.filter();
|
|
|
|
|
|
|
|
// assert
|
|
|
|
deepEqual(
|
|
|
|
header1.className.indexOf('myCssClass') !== -1,
|
|
|
|
true,
|
|
|
|
'Active filter indicator');
|
|
|
|
deepEqual(
|
|
|
|
header3.className.indexOf('myCssClass') !== -1,
|
|
|
|
true,
|
|
|
|
'Active filter indicator');
|
|
|
|
});
|
|
|
|
|
|
|
|
test('on_before_active_column callback', function() {
|
|
|
|
// setup
|
|
|
|
tf.clearFilters();
|
|
|
|
tf.setFilterValue(1, 'Bri');
|
|
|
|
|
|
|
|
// act
|
|
|
|
tf.filter();
|
|
|
|
|
|
|
|
// assert
|
|
|
|
deepEqual(hit, 1,
|
|
|
|
'expected column index passed to on_before_active_column');
|
|
|
|
});
|
|
|
|
|
|
|
|
test('on_after_active_column callback', function() {
|
|
|
|
// setup
|
|
|
|
tf.clearFilters();
|
|
|
|
tf.setFilterValue(3, '>2');
|
|
|
|
|
|
|
|
// act
|
|
|
|
tf.filter();
|
|
|
|
|
|
|
|
// assert
|
|
|
|
deepEqual(hit, 3,
|
|
|
|
'expected column index passed to on_after_active_column');
|
|
|
|
});
|
|
|
|
|
|
|
|
module('Tear-down');
|
|
|
|
test('can destroy', function() {
|
|
|
|
tf.destroy();
|
|
|
|
deepEqual(tf.isInitialized(), false, 'Filters removed');
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
2015-05-31 13:48:29 +02:00
|
|
|
})(window, TableFilter);
|