Added linked filters test

This commit is contained in:
Max Guglielmi 2015-06-10 20:53:20 +10:00
parent 132214c026
commit c4f90f0bc2
7 changed files with 243 additions and 129 deletions

View File

@ -10,10 +10,10 @@ webpackJsonp([1],[
"./cookie.js": 5,
"./date": 8,
"./date.js": 8,
"./dom": 3,
"./dom.js": 3,
"./event": 2,
"./event.js": 2,
"./dom": 2,
"./dom.js": 2,
"./event": 3,
"./event.js": 3,
"./extensions/advancedGrid/adapterEzEditTable": 24,
"./extensions/advancedGrid/adapterEzEditTable.js": 24,
"./extensions/advancedGrid/advancedGrid": 25,
@ -115,7 +115,7 @@ webpackJsonp([1],[
value: true
});
var _Dom = __webpack_require__(3);
var _Dom = __webpack_require__(2);
var _Dom2 = _interopRequireDefault(_Dom);
@ -534,7 +534,7 @@ webpackJsonp([1],[
value: true
});
var _Dom = __webpack_require__(3);
var _Dom = __webpack_require__(2);
var _Dom2 = _interopRequireDefault(_Dom);
@ -868,7 +868,7 @@ webpackJsonp([1],[
value: true
});
var _Dom = __webpack_require__(3);
var _Dom = __webpack_require__(2);
var _Dom2 = _interopRequireDefault(_Dom);
@ -876,7 +876,7 @@ webpackJsonp([1],[
var _Types2 = _interopRequireDefault(_Types);
var _Event = __webpack_require__(2);
var _Event = __webpack_require__(3);
var _Event2 = _interopRequireDefault(_Event);
@ -1469,7 +1469,7 @@ webpackJsonp([1],[
value: true
});
var _Dom = __webpack_require__(3);
var _Dom = __webpack_require__(2);
var _Dom2 = _interopRequireDefault(_Dom);
@ -1477,7 +1477,7 @@ webpackJsonp([1],[
var _Types2 = _interopRequireDefault(_Types);
var _Event = __webpack_require__(2);
var _Event = __webpack_require__(3);
var _Event2 = _interopRequireDefault(_Event);
@ -1694,7 +1694,7 @@ webpackJsonp([1],[
var _Types2 = _interopRequireDefault(_Types);
var _Dom = __webpack_require__(3);
var _Dom = __webpack_require__(2);
var _Dom2 = _interopRequireDefault(_Dom);
@ -1702,7 +1702,7 @@ webpackJsonp([1],[
var _Arr2 = _interopRequireDefault(_Arr);
var _Event = __webpack_require__(2);
var _Event = __webpack_require__(3);
var _Event2 = _interopRequireDefault(_Event);
@ -2237,4 +2237,4 @@ webpackJsonp([1],[
/***/ }
]);
//# sourceMappingURL=1-d59e614953f2afdbdeca.js.map
//# sourceMappingURL=1-7e7f7c02333b80894c94.js.map

View File

@ -83,7 +83,7 @@ return /******/ (function(modules) { // webpackBootstrap
/******/ script.charset = 'utf-8';
/******/ script.async = true;
/******/
/******/ script.src = __webpack_require__.p + "" + ({}[chunkId]||chunkId) + "-" + {"1":"d59e614953f2afdbdeca"}[chunkId] + ".js";
/******/ script.src = __webpack_require__.p + "" + ({}[chunkId]||chunkId) + "-" + {"1":"7e7f7c02333b80894c94"}[chunkId] + ".js";
/******/ head.appendChild(script);
/******/ }
/******/ };
@ -117,11 +117,11 @@ return /******/ (function(modules) { // webpackBootstrap
value: true
});
var _Event = __webpack_require__(2);
var _Event = __webpack_require__(3);
var _Event2 = _interopRequireDefault(_Event);
var _Dom = __webpack_require__(3);
var _Dom = __webpack_require__(2);
var _Dom2 = _interopRequireDefault(_Dom);
@ -1142,7 +1142,7 @@ return /******/ (function(modules) { // webpackBootstrap
}
}
if (!this.loader && !this.statusBar) {
if (!this.loader && !this.statusBar && !this.linkedFilters) {
efx.call(this);
} else {
if (this.loader) {
@ -3140,67 +3140,6 @@ return /******/ (function(modules) { // webpackBootstrap
'use strict';
Object.defineProperty(exports, '__esModule', {
value: true
});
/**
* DOM event utilities
*/
exports['default'] = {
add: function add(obj, type, func, capture) {
if (obj.addEventListener) {
obj.addEventListener(type, func, capture);
} else if (obj.attachEvent) {
obj.attachEvent('on' + type, func);
} else {
obj['on' + type] = func;
}
},
remove: function remove(obj, type, func, capture) {
if (obj.detachEvent) {
obj.detachEvent('on' + type, func);
} else if (obj.removeEventListener) {
obj.removeEventListener(type, func, capture);
} else {
obj['on' + type] = null;
}
},
stop: function stop(evt) {
if (!evt) {
evt = window.event;
}
if (evt.stopPropagation) {
evt.stopPropagation();
} else {
evt.cancelBubble = true;
}
},
cancel: function cancel(evt) {
if (!evt) {
evt = window.event;
}
if (evt.preventDefault) {
evt.preventDefault();
} else {
evt.returnValue = false;
}
},
target: function target(evt) {
return evt && evt.target || window.event && window.event.srcElement;
},
keyCode: function keyCode(evt) {
return evt.charCode ? evt.charCode : evt.keyCode ? evt.keyCode : evt.which ? evt.which : 0;
}
};
module.exports = exports['default'];
/***/ },
/* 3 */
/***/ function(module, exports, __webpack_require__) {
'use strict';
Object.defineProperty(exports, '__esModule', {
value: true
});
@ -3372,6 +3311,67 @@ return /******/ (function(modules) { // webpackBootstrap
}
module.exports = exports['default'];
/***/ },
/* 3 */
/***/ function(module, exports, __webpack_require__) {
'use strict';
Object.defineProperty(exports, '__esModule', {
value: true
});
/**
* DOM event utilities
*/
exports['default'] = {
add: function add(obj, type, func, capture) {
if (obj.addEventListener) {
obj.addEventListener(type, func, capture);
} else if (obj.attachEvent) {
obj.attachEvent('on' + type, func);
} else {
obj['on' + type] = func;
}
},
remove: function remove(obj, type, func, capture) {
if (obj.detachEvent) {
obj.detachEvent('on' + type, func);
} else if (obj.removeEventListener) {
obj.removeEventListener(type, func, capture);
} else {
obj['on' + type] = null;
}
},
stop: function stop(evt) {
if (!evt) {
evt = window.event;
}
if (evt.stopPropagation) {
evt.stopPropagation();
} else {
evt.cancelBubble = true;
}
},
cancel: function cancel(evt) {
if (!evt) {
evt = window.event;
}
if (evt.preventDefault) {
evt.preventDefault();
} else {
evt.returnValue = false;
}
},
target: function target(evt) {
return evt && evt.target || window.event && window.event.srcElement;
},
keyCode: function keyCode(evt) {
return evt.charCode ? evt.charCode : evt.keyCode ? evt.keyCode : evt.which ? evt.which : 0;
}
};
module.exports = exports['default'];
/***/ },
/* 4 */
/***/ function(module, exports, __webpack_require__) {
@ -3966,7 +3966,7 @@ return /******/ (function(modules) { // webpackBootstrap
value: true
});
var _Dom = __webpack_require__(3);
var _Dom = __webpack_require__(2);
var _Dom2 = _interopRequireDefault(_Dom);
@ -3974,7 +3974,7 @@ return /******/ (function(modules) { // webpackBootstrap
var _Types2 = _interopRequireDefault(_Types);
var _Event = __webpack_require__(2);
var _Event = __webpack_require__(3);
var _Event2 = _interopRequireDefault(_Event);
@ -4349,7 +4349,7 @@ return /******/ (function(modules) { // webpackBootstrap
value: true
});
var _Dom = __webpack_require__(3);
var _Dom = __webpack_require__(2);
var _Dom2 = _interopRequireDefault(_Dom);
@ -4467,7 +4467,7 @@ return /******/ (function(modules) { // webpackBootstrap
value: true
});
var _Dom = __webpack_require__(3);
var _Dom = __webpack_require__(2);
var _Dom2 = _interopRequireDefault(_Dom);
@ -4617,11 +4617,11 @@ return /******/ (function(modules) { // webpackBootstrap
var _Types2 = _interopRequireDefault(_Types);
var _Dom = __webpack_require__(3);
var _Dom = __webpack_require__(2);
var _Dom2 = _interopRequireDefault(_Dom);
var _Event = __webpack_require__(2);
var _Event = __webpack_require__(3);
var _Event2 = _interopRequireDefault(_Event);
@ -4888,7 +4888,7 @@ return /******/ (function(modules) { // webpackBootstrap
value: true
});
var _Dom = __webpack_require__(3);
var _Dom = __webpack_require__(2);
var _Dom2 = _interopRequireDefault(_Dom);
@ -4941,15 +4941,15 @@ return /******/ (function(modules) { // webpackBootstrap
/**
* Build drop-down filter UI asynchronously
* @param {Number} colIndex Column index
* @param {Boolean} isRefreshed Enable linked refresh behaviour
* @param {Boolean} isLinked Enable linked refresh behaviour
* @param {Boolean} isExternal Render in external container
* @param {String} extSlcId External container id
*/
value: function build(colIndex, isRefreshed, isExternal, extSlcId) {
value: function build(colIndex, isLinked, isExternal, extSlcId) {
var tf = this.tf;
tf.EvtManager(tf.Evt.name.dropdown, {
slcIndex: colIndex,
slcRefreshed: isRefreshed,
slcRefreshed: isLinked,
slcExternal: isExternal,
slcId: extSlcId
});
@ -4960,12 +4960,12 @@ return /******/ (function(modules) { // webpackBootstrap
/**
* Build drop-down filter UI
* @param {Number} colIndex Column index
* @param {Boolean} isRefreshed Enable linked refresh behaviour
* @param {Boolean} isLinked Enable linked refresh behaviour
* @param {Boolean} isExternal Render in external container
* @param {String} extSlcId External container id
*/
value: function _build(colIndex) {
var isRefreshed = arguments[1] === undefined ? false : arguments[1];
var isLinked = arguments[1] === undefined ? false : arguments[1];
var isExternal = arguments[2] === undefined ? false : arguments[2];
var extSlcId = arguments[3] === undefined ? null : arguments[3];
@ -4989,7 +4989,7 @@ return /******/ (function(modules) { // webpackBootstrap
//custom selects text
var activeFlt;
if (isRefreshed && tf.activeFilterId) {
if (isLinked && tf.activeFilterId) {
activeFlt = tf.activeFilterId.split('_')[0];
activeFlt = activeFlt.split(tf.prfxFlt)[1];
}
@ -5010,7 +5010,7 @@ return /******/ (function(modules) { // webpackBootstrap
var excludedOpts = null,
filteredDataCol = null;
if (isRefreshed && tf.disableExcludedOptions) {
if (isLinked && tf.disableExcludedOptions) {
excludedOpts = [];
filteredDataCol = [];
}
@ -5032,7 +5032,7 @@ return /******/ (function(modules) { // webpackBootstrap
// this loop retrieves cell data
for (var j = 0; j < nchilds; j++) {
if (colIndex === j && (!isRefreshed || isRefreshed && tf.disableExcludedOptions) || colIndex == j && isRefreshed && (rows[k].style.display === '' && !tf.paging || tf.paging && (!tf.validRowsIndex || tf.validRowsIndex && _Arr2['default'].has(tf.validRowsIndex, k)) && (activeFlt === undefined || activeFlt == colIndex || activeFlt != colIndex && _Arr2['default'].has(tf.validRowsIndex, k)))) {
if (colIndex === j && (!isLinked || isLinked && tf.disableExcludedOptions) || colIndex == j && isLinked && (rows[k].style.display === '' && !tf.paging || tf.paging && (!tf.validRowsIndex || tf.validRowsIndex && _Arr2['default'].has(tf.validRowsIndex, k)) && (activeFlt === undefined || activeFlt == colIndex || activeFlt != colIndex && _Arr2['default'].has(tf.validRowsIndex, k)))) {
var cell_data = tf.getCellData(j, cell[j]),
//Vary Peter's patch
@ -5043,7 +5043,7 @@ return /******/ (function(modules) { // webpackBootstrap
this.opts.push(cell_data);
}
if (isRefreshed && tf.disableExcludedOptions) {
if (isLinked && tf.disableExcludedOptions) {
var filteredCol = filteredDataCol[j];
if (!filteredCol) {
filteredCol = this.GetFilteredDataCol(j);
@ -5119,7 +5119,7 @@ return /******/ (function(modules) { // webpackBootstrap
}
//populates drop-down
this.addOptions(colIndex, slc, isRefreshed, excludedOpts, fltsValues, fltArr);
this.addOptions(colIndex, slc, isLinked, excludedOpts, fltsValues, fltArr);
}
}, {
key: 'addOptions',
@ -5128,12 +5128,12 @@ return /******/ (function(modules) { // webpackBootstrap
* Add drop-down options
* @param {Number} colIndex Column index
* @param {Object} slc Select Dom element
* @param {Boolean} isRefreshed Enable linked refresh behaviour
* @param {Boolean} isLinked Enable linked refresh behaviour
* @param {Array} excludedOpts Array of excluded options
* @param {Array} fltsValues Collection of persisted filter values
* @param {Array} fltArr Collection of persisted filter values
*/
value: function addOptions(colIndex, slc, isRefreshed, excludedOpts, fltsValues, fltArr) {
value: function addOptions(colIndex, slc, isLinked, excludedOpts, fltsValues, fltArr) {
var tf = this.tf,
fillMethod = _Str2['default'].lower(this.slcFillingMethod),
slcValue = slc.value;
@ -5148,7 +5148,7 @@ return /******/ (function(modules) { // webpackBootstrap
var val = this.opts[y]; //option value
var lbl = this.isCustom ? this.optsTxt[y] : val; //option text
var isDisabled = false;
if (isRefreshed && this.disableExcludedOptions && _Arr2['default'].has(excludedOpts, _Str2['default'].matchCase(val, tf.matchCase), tf.matchCase)) {
if (isLinked && this.disableExcludedOptions && _Arr2['default'].has(excludedOpts, _Str2['default'].matchCase(val, tf.matchCase), tf.matchCase)) {
isDisabled = true;
}
@ -5235,7 +5235,7 @@ return /******/ (function(modules) { // webpackBootstrap
value: true
});
var _Dom = __webpack_require__(3);
var _Dom = __webpack_require__(2);
var _Dom2 = _interopRequireDefault(_Dom);
@ -5251,7 +5251,7 @@ return /******/ (function(modules) { // webpackBootstrap
var _Sort2 = _interopRequireDefault(_Sort);
var _Event = __webpack_require__(2);
var _Event = __webpack_require__(3);
var _Event2 = _interopRequireDefault(_Event);
@ -5677,7 +5677,7 @@ return /******/ (function(modules) { // webpackBootstrap
value: true
});
var _Dom = __webpack_require__(3);
var _Dom = __webpack_require__(2);
var _Dom2 = _interopRequireDefault(_Dom);
@ -5851,7 +5851,7 @@ return /******/ (function(modules) { // webpackBootstrap
value: true
});
var _Dom = __webpack_require__(3);
var _Dom = __webpack_require__(2);
var _Dom2 = _interopRequireDefault(_Dom);
@ -6012,7 +6012,7 @@ return /******/ (function(modules) { // webpackBootstrap
value: true
});
var _Dom = __webpack_require__(3);
var _Dom = __webpack_require__(2);
var _Dom2 = _interopRequireDefault(_Dom);
@ -6024,7 +6024,7 @@ return /******/ (function(modules) { // webpackBootstrap
var _Str2 = _interopRequireDefault(_Str);
var _Event = __webpack_require__(2);
var _Event = __webpack_require__(3);
var _Event2 = _interopRequireDefault(_Event);
@ -6800,11 +6800,11 @@ return /******/ (function(modules) { // webpackBootstrap
value: true
});
var _Dom = __webpack_require__(3);
var _Dom = __webpack_require__(2);
var _Dom2 = _interopRequireDefault(_Dom);
var _Event = __webpack_require__(2);
var _Event = __webpack_require__(3);
var _Event2 = _interopRequireDefault(_Event);
@ -6927,11 +6927,11 @@ return /******/ (function(modules) { // webpackBootstrap
value: true
});
var _Dom = __webpack_require__(3);
var _Dom = __webpack_require__(2);
var _Dom2 = _interopRequireDefault(_Dom);
var _Event = __webpack_require__(2);
var _Event = __webpack_require__(3);
var _Event2 = _interopRequireDefault(_Event);
@ -7108,7 +7108,7 @@ return /******/ (function(modules) { // webpackBootstrap
value: true
});
var _Dom = __webpack_require__(3);
var _Dom = __webpack_require__(2);
var _Dom2 = _interopRequireDefault(_Dom);

View File

@ -263,10 +263,9 @@ export class CheckList{
Dom.addClass(li, this.checkListItemDisabledCssClass);
li.check.disabled = true;
li.disabled = true;
} else{
} else {
Event.add(li.check, 'click',
(evt) => { this.optionClick(evt);
});
(evt) => { this.optionClick(evt); });
}
ul.appendChild(li);

View File

@ -37,17 +37,17 @@ export class Dropdown{
/**
* Build drop-down filter UI asynchronously
* @param {Number} colIndex Column index
* @param {Boolean} isRefreshed Enable linked refresh behaviour
* @param {Boolean} isLinked Enable linked refresh behaviour
* @param {Boolean} isExternal Render in external container
* @param {String} extSlcId External container id
*/
build(colIndex, isRefreshed, isExternal, extSlcId){
build(colIndex, isLinked, isExternal, extSlcId){
var tf = this.tf;
tf.EvtManager(
tf.Evt.name.dropdown,
{
slcIndex: colIndex,
slcRefreshed: isRefreshed,
slcRefreshed: isLinked,
slcExternal: isExternal,
slcId: extSlcId
}
@ -57,11 +57,11 @@ export class Dropdown{
/**
* Build drop-down filter UI
* @param {Number} colIndex Column index
* @param {Boolean} isRefreshed Enable linked refresh behaviour
* @param {Boolean} isLinked Enable linked refresh behaviour
* @param {Boolean} isExternal Render in external container
* @param {String} extSlcId External container id
*/
_build(colIndex, isRefreshed=false, isExternal=false, extSlcId=null){
_build(colIndex, isLinked=false, isExternal=false, extSlcId=null){
var tf = this.tf;
colIndex = parseInt(colIndex, 10);
@ -83,7 +83,7 @@ export class Dropdown{
//custom selects text
var activeFlt;
if(isRefreshed && tf.activeFilterId){
if(isLinked && tf.activeFilterId){
activeFlt = tf.activeFilterId.split('_')[0];
activeFlt = activeFlt.split(tf.prfxFlt)[1];
}
@ -104,7 +104,7 @@ export class Dropdown{
var excludedOpts = null,
filteredDataCol = null;
if(isRefreshed && tf.disableExcludedOptions){
if(isLinked && tf.disableExcludedOptions){
excludedOpts = [];
filteredDataCol = [];
}
@ -128,9 +128,9 @@ export class Dropdown{
// this loop retrieves cell data
for(var j=0; j<nchilds; j++){
if((colIndex===j &&
(!isRefreshed ||
(isRefreshed && tf.disableExcludedOptions))) ||
(colIndex==j && isRefreshed &&
(!isLinked ||
(isLinked && tf.disableExcludedOptions))) ||
(colIndex==j && isLinked &&
((rows[k].style.display === '' && !tf.paging) ||
(tf.paging && (!tf.validRowsIndex ||
(tf.validRowsIndex &&
@ -147,7 +147,7 @@ export class Dropdown{
this.opts.push(cell_data);
}
if(isRefreshed && tf.disableExcludedOptions){
if(isLinked && tf.disableExcludedOptions){
var filteredCol = filteredDataCol[j];
if(!filteredCol){
filteredCol = this.GetFilteredDataCol(j);
@ -225,19 +225,19 @@ export class Dropdown{
//populates drop-down
this.addOptions(
colIndex, slc, isRefreshed, excludedOpts, fltsValues, fltArr);
colIndex, slc, isLinked, excludedOpts, fltsValues, fltArr);
}
/**
* Add drop-down options
* @param {Number} colIndex Column index
* @param {Object} slc Select Dom element
* @param {Boolean} isRefreshed Enable linked refresh behaviour
* @param {Boolean} isLinked Enable linked refresh behaviour
* @param {Array} excludedOpts Array of excluded options
* @param {Array} fltsValues Collection of persisted filter values
* @param {Array} fltArr Collection of persisted filter values
*/
addOptions(colIndex, slc, isRefreshed, excludedOpts, fltsValues, fltArr){
addOptions(colIndex, slc, isLinked, excludedOpts, fltsValues, fltArr){
var tf = this.tf,
fillMethod = Str.lower(this.slcFillingMethod),
slcValue = slc.value;
@ -252,7 +252,7 @@ export class Dropdown{
var val = this.opts[y]; //option value
var lbl = this.isCustom ? this.optsTxt[y] : val; //option text
var isDisabled = false;
if(isRefreshed && this.disableExcludedOptions &&
if(isLinked && this.disableExcludedOptions &&
Arr.has(
excludedOpts,
Str.matchCase(val, tf.matchCase),

View File

@ -1021,7 +1021,7 @@ export class TableFilter{
}
}
if(!this.loader && !this.statusBar) {
if(!this.loader && !this.statusBar && !this.linkedFilters) {
efx.call(this);
} else {
if(this.loader){
@ -2546,7 +2546,7 @@ export class TableFilter{
this.Mod.dropdown._build(slcIndex[i], true);
}
this.setFilterValue(slcIndex[i],slcSelectedValue);
this.setFilterValue(slcIndex[i], slcSelectedValue);
}
}// for i
}

View File

@ -0,0 +1,80 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>TableFilter with linked filters tests</title>
<link rel="stylesheet" href="libs/qunit/qunit.css">
<script src="libs/qunit/qunit.js"></script>
<script src="libs/polyfill.js"></script>
</head>
<body>
<table id="demo">
<thead>
<tr>
<th>From</th>
<th>Destination</th>
<th>Road Distance (km)</th>
<th>By Air (hrs)</th>
<th>By Rail (hrs)</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Sydney</strong></td>
<td>Adelaide</td>
<td>1412</td>
<td>1.4</td>
<td>25.3</td>
</tr>
<tr>
<td><strong>Sydney</strong></td>
<td>Brisbane</td>
<td>982</td>
<td>1.5</td>
<td>16</td>
</tr>
<tr>
<td><strong>Sydney</strong></td>
<td>Canberra</td>
<td>286</td>
<td>.6</td>
<td>4.3</td>
</tr>
<tr>
<td><strong>Sydney</strong></td>
<td>Melbourne</td>
<td>872</td>
<td>1.1</td>
<td>10.5</td>
</tr>
<tr>
<td><strong>Adelaide</strong></td>
<td>Perth</td>
<td>2781</td>
<td>3.1</td>
<td>38</td>
</tr>
<tr>
<td><strong>Adelaide</strong></td>
<td>Alice Springs</td>
<td>1533</td>
<td>2</td>
<td>20.25</td>
</tr>
<tr>
<td><strong>Adelaide</strong></td>
<td>Brisbane</td>
<td>2045</td>
<td>2.15</td>
<td>40</td>
</tr>
</tbody>
</table>
<script src="../dist/tablefilter/tablefilter.js"></script>
<script src="test-linked-filters.js"></script>
<div id="qunit"></div>
<div id="qunit-fixture"></div>
</body>
</html>

View File

@ -0,0 +1,35 @@
(function(win, TableFilter){
var tf = new TableFilter('demo', {
base_path: '../dist/tablefilter/',
linked_filters: true,
col_0: 'multiple',
col_1: 'checklist',
on_after_filter: testLinked
});
tf.init();
module('Sanity checks');
test('Linked filters feature', function() {
deepEqual(tf instanceof TableFilter, true, 'TableFilter instanciated');
deepEqual(tf.linkedFilters, true, 'Linked filters enabled');
});
var option = document.getElementById('flt1_demo_1');
option.click();
function testLinked(tf) {
test('Check filters are linked', function() {
var filter0 = tf.getFilterElement(0);
deepEqual(tf.activeFilterId, 'flt1_demo_1', 'Active filter');
deepEqual(
filter0.options.length,
2,
'Linked filter expected options number'
);
});
tf.destroy();
}
})(window, TableFilter);