mirror of
https://github.com/koalyptus/TableFilter.git
synced 2024-05-09 18:06:53 +02:00
Fixed Qunit test + custom grunt task for Qunit tests
This commit is contained in:
parent
eef326e6b0
commit
cdca67a70e
|
@ -11,14 +11,14 @@
|
|||
// Reserved words
|
||||
"-W024": true,
|
||||
"curly": true,
|
||||
//"indent": 4,
|
||||
"indent": 4,
|
||||
//"eqeqeq": true,
|
||||
"es3": true,
|
||||
"esnext": true,
|
||||
"unused": true,
|
||||
|
||||
//"maxlen" : 80,
|
||||
"globals": {
|
||||
"System": true,
|
||||
"Object": true,
|
||||
"module": true,
|
||||
"require": true,
|
||||
|
|
100
Gruntfile.js
100
Gruntfile.js
|
@ -2,8 +2,12 @@ module.exports = function (grunt) {
|
|||
|
||||
var webpack = require('webpack');
|
||||
var webpackConfig = require('./webpack.config.js');
|
||||
var pkg = grunt.file.readJSON('package.json');
|
||||
var version = pkg.version;
|
||||
var fs = require('fs');
|
||||
var path = require('path');
|
||||
// var pkg = grunt.file.readJSON('package.json');
|
||||
// var version = pkg.version;
|
||||
var testDir = 'test';
|
||||
var testHost = 'http://localhost:8080/';
|
||||
|
||||
grunt.initConfig({
|
||||
|
||||
|
@ -18,7 +22,18 @@ module.exports = function (grunt) {
|
|||
},
|
||||
|
||||
qunit: {
|
||||
files: ['test/**/*.html']
|
||||
// files: ['test/**/*.html'],
|
||||
// urls: ['http://localhost:9000/test/test.html']
|
||||
all: {
|
||||
options: {
|
||||
urls: getTestFiles(testDir, testHost)
|
||||
}
|
||||
},
|
||||
only: {
|
||||
options: {
|
||||
urls: []
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
copy: {
|
||||
|
@ -39,7 +54,7 @@ module.exports = function (grunt) {
|
|||
'webpack-dev-server': {
|
||||
options: {
|
||||
webpack: webpack.dev,
|
||||
publicPath: '/dev/'
|
||||
publicPath: '/build/'
|
||||
},
|
||||
start: {
|
||||
keepAlive: true,
|
||||
|
@ -96,7 +111,7 @@ module.exports = function (grunt) {
|
|||
expand: true,
|
||||
cwd: 'src-es6',
|
||||
src: ['**/*.js'],
|
||||
dest: 'dev/tablefilter'
|
||||
dest: 'build/tablefilter'
|
||||
}]
|
||||
}
|
||||
}
|
||||
|
@ -110,21 +125,86 @@ module.exports = function (grunt) {
|
|||
grunt.loadNpmTasks('grunt-babel');
|
||||
|
||||
// The development server (the recommended option for development)
|
||||
grunt.registerTask('dev-server', ['webpack-dev-server:start']);
|
||||
grunt.registerTask('server', ['webpack-dev-server:start']);
|
||||
|
||||
// Build and watch cycle (another option for development)
|
||||
// Advantage: No server required, can run app from filesystem
|
||||
// Disadvantage: Requests are not blocked until bundle is available,
|
||||
// can serve an old app on too fast refresh
|
||||
grunt.registerTask('dev', ['jshint', 'webpack:build', 'copy:build'/*, 'watch:app'*/]);
|
||||
grunt.registerTask('dev', ['jshint', 'webpack:build', 'copy:build']);
|
||||
|
||||
// Production build
|
||||
grunt.registerTask('dist', ['jshint', 'webpack:dist', 'copy:dist']);
|
||||
|
||||
// Tests
|
||||
grunt.registerTask('test', ['qunit']);
|
||||
|
||||
// Transpile with Babel
|
||||
grunt.registerTask('transpile', ['babel']);
|
||||
|
||||
// Tests
|
||||
grunt.registerTask('test', ['qunit:all']);
|
||||
|
||||
// Custom task running QUnit tests for specified files.
|
||||
// Usage: grunt test-only:test.html,test-help.html
|
||||
grunt.registerTask('test-only',
|
||||
'A task that runs only specified tests.',
|
||||
function(tests) {
|
||||
if(!tests) {
|
||||
return;
|
||||
}
|
||||
tests = tests.split(',');
|
||||
var res = [];
|
||||
|
||||
tests.forEach(function(itm) {
|
||||
var filePath = path.resolve(testDir, itm);
|
||||
var parts = filePath.split(path.sep);
|
||||
res.push(buildTestUrl(testHost, testDir, parts));
|
||||
});
|
||||
|
||||
grunt.config('qunit.only.options.urls', res);
|
||||
grunt.task.run('qunit:only');
|
||||
});
|
||||
|
||||
function isTestFile(pth) {
|
||||
var allowedExts = ['.html', '.htm'];
|
||||
for(var i=0, len=allowedExts.length; i<len; i++){
|
||||
var ext = allowedExts[i];
|
||||
if(pth.indexOf(ext) !== -1){
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
function buildTestUrl(host, testDir, parts) {
|
||||
var idx = parts.indexOf(testDir);
|
||||
var fileIdx = parts.length;
|
||||
var relParts = parts.slice(idx, fileIdx);
|
||||
return host.concat(relParts.join('/'));
|
||||
}
|
||||
|
||||
// Returns the list of test files from the test folder for QUnit
|
||||
function getTestFiles(testDir, host) {
|
||||
|
||||
var getFiles = function(dir, host) {
|
||||
var res = [];
|
||||
var items = fs.readdirSync(dir);
|
||||
|
||||
items.forEach(function(itm){
|
||||
var fileOrDir = path.resolve(dir, itm);
|
||||
if(isTestFile(fileOrDir)) {
|
||||
var parts = fileOrDir.split(path.sep);
|
||||
res.push(buildTestUrl(host, testDir, parts));
|
||||
} else {
|
||||
if(fs.lstatSync(fileOrDir).isDirectory()) {
|
||||
res = res.concat(getFiles(fileOrDir, host));
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
return res;
|
||||
};
|
||||
|
||||
return getFiles(testDir, host);
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
|
|
2
dist/tablefilter/1.js
vendored
2
dist/tablefilter/1.js
vendored
File diff suppressed because one or more lines are too long
10
dist/tablefilter/tablefilter.js
vendored
10
dist/tablefilter/tablefilter.js
vendored
File diff suppressed because one or more lines are too long
|
@ -2,7 +2,6 @@
|
|||
<html lang="en">
|
||||
<head>
|
||||
<title>HTML Table Filter Generator</title>
|
||||
<link href="../dev/filtergrid.css" rel="stylesheet" type="text/css">
|
||||
<script type="text/javascript">
|
||||
var tf;
|
||||
</script>
|
||||
|
@ -93,14 +92,13 @@
|
|||
|
||||
<script src="../libs/requirejs/require.js"></script>
|
||||
<script>
|
||||
requirejs(['../dev/tablefilter'], function(mod){
|
||||
// Your logic here
|
||||
requirejs(['../build/tablefilter/tablefilter'], function(mod){
|
||||
var TableFilter = mod.TableFilter;
|
||||
tf = new TableFilter("demo", {
|
||||
col_0: 'select',
|
||||
col_2: 'multiple',
|
||||
col_3: 'checklist',
|
||||
base_path: '../build/tablefilter',
|
||||
base_path: '../build/tablefilter/',
|
||||
loader: false,
|
||||
rows_counter: true,
|
||||
enable_default_theme: false,
|
||||
|
@ -141,7 +139,7 @@
|
|||
extensions: [{
|
||||
/*** Columns Visibility Manager extension load ***/
|
||||
name: 'colsVisibility',
|
||||
path: '../build/extensions/colsVisibility',
|
||||
// path: './extensions/colsVisibility',
|
||||
description: 'Columns visibility manager',/*
|
||||
initialize: function(o){o.SetColsVisibility();}*/
|
||||
// manager: true,
|
||||
|
@ -180,6 +178,6 @@
|
|||
tf.init();
|
||||
});
|
||||
</script>
|
||||
<button onclick="javascript:tf.ExtRegistry.ColsVisibility.toggleCol(2);">Toggle col 2</button>
|
||||
<button onclick="javascript:tf.ExtRegistry.colsVisibility.toggleCol(2);">Toggle col 2</button>
|
||||
</body>
|
||||
</html>
|
|
@ -133,8 +133,7 @@ export default class ColsVisibility{
|
|||
this.tf = tf;
|
||||
}
|
||||
|
||||
toggle(evt){
|
||||
var tf = this.tf;
|
||||
toggle(){
|
||||
var contDisplay = this.contEl.style.display;
|
||||
var onBeforeOpen = this.onBeforeOpen;
|
||||
var onBeforeClose = this.onBeforeClose;
|
||||
|
@ -277,7 +276,7 @@ export default class ColsVisibility{
|
|||
ul.appendChild(li);
|
||||
li.check.checked = !this.tickToHide;
|
||||
|
||||
Event.add(li.check, 'click', (evt)=> {
|
||||
Event.add(li.check, 'click', ()=> {
|
||||
for(var h = 0; h < headerRow.cells.length; h++){
|
||||
var itm = Dom.id('col_'+h+'_'+tf.id);
|
||||
if(itm && li.check.checked !== itm.checked){
|
||||
|
@ -351,7 +350,6 @@ export default class ColsVisibility{
|
|||
setHidden(colIndex, hide){
|
||||
var tf = this.tf;
|
||||
var tbl = tf.tbl;
|
||||
var col = Dom.tag(tbl, 'col')[colIndex];
|
||||
|
||||
if(this.onBeforeColHidden && hide){
|
||||
this.onBeforeColHidden.call(null, this, colIndex);
|
||||
|
|
|
@ -205,7 +205,6 @@ export default class AdapterSortableTable{
|
|||
}
|
||||
stt.headersRow = tf.headersRow;
|
||||
var cells = stt.tHead.rows[stt.headersRow].cells;
|
||||
var doc = stt.tHead.ownerDocument || stt.tHead.document;
|
||||
stt.sortTypes = oSortTypes || [];
|
||||
var l = cells.length;
|
||||
var img, c;
|
||||
|
|
|
@ -23,7 +23,6 @@ export class AlternateRows{
|
|||
if(!this.tf.hasGrid() && !this.tf.isFirstLoad){
|
||||
return;
|
||||
}
|
||||
var rows = this.tf.tbl.rows;
|
||||
var noValidRowsIndex = this.tf.validRowsIndex===null;
|
||||
//1st index
|
||||
var beginIndex = noValidRowsIndex ? this.tf.refRow : 0;
|
||||
|
@ -80,7 +79,6 @@ export class AlternateRows{
|
|||
if(!this.tf.hasGrid()){
|
||||
return;
|
||||
}
|
||||
var row = this.tf.tbl.rows;
|
||||
for(var i=this.tf.refRow; i<this.tf.nbRows; i++){
|
||||
this.removeRowBg(i);
|
||||
}
|
||||
|
|
|
@ -232,12 +232,11 @@ export class CheckList{
|
|||
* Add checklist options
|
||||
* @param {Number} colIndex Column index
|
||||
* @param {Object} ul Ul element
|
||||
* @param {String} separator Data separator
|
||||
*/
|
||||
addChecks(colIndex, ul, separator){
|
||||
addChecks(colIndex, ul){
|
||||
var tf = this.tf;
|
||||
var chkCt = this.addTChecks(colIndex, ul);
|
||||
var flts_values = [], fltArr = []; //remember grid values
|
||||
var fltArr = []; //remember grid values
|
||||
var store = tf.Cpt.store;
|
||||
var tmpVal = store ?
|
||||
store.getFilterValues(tf.fltsValuesCookie)[colIndex] : null;
|
||||
|
|
|
@ -75,8 +75,7 @@ export class Dropdown{
|
|||
}
|
||||
var slc = !isExternal ? Dom.id(slcId) : Dom.id(extSlcId),
|
||||
rows = tf.tbl.rows,
|
||||
matchCase = tf.matchCase,
|
||||
fillMethod = Str.lower(this.slcFillingMethod);
|
||||
matchCase = tf.matchCase;
|
||||
|
||||
//custom select test
|
||||
this.isCustom = (tf.hasCustomSlcOptions &&
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
import {Dom} from '../dom';
|
||||
import {Types} from '../types';
|
||||
import {Helpers} from '../helpers';
|
||||
import {Event} from '../event';
|
||||
|
||||
export class GridLayout{
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
import {Dom} from '../dom';
|
||||
import {Types} from '../types';
|
||||
import {Str} from '../string';
|
||||
import {Helpers} from '../helpers';
|
||||
import {Event} from '../event';
|
||||
|
||||
export class Paging{
|
||||
|
|
|
@ -198,7 +198,6 @@ export class PopupFilter{
|
|||
* @param {Boolean} active Apply active state
|
||||
*/
|
||||
buildIcon(colIndex, active){
|
||||
var activeImg = Types.isUndef(active) ? true : active;
|
||||
if(this.popUpFltImgs[colIndex]){
|
||||
this.popUpFltImgs[colIndex].src = active ?
|
||||
this.popUpImgFltActive : this.popUpImgFlt;
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
import {Dom} from '../dom';
|
||||
import {Event} from '../event';
|
||||
import {Types} from '../types';
|
||||
import {Helpers} from '../helpers';
|
||||
|
||||
|
|
|
@ -16,9 +16,7 @@ import {Str as str} from './string';
|
|||
import {Cookie as cookie} from './cookie';
|
||||
import {Types as types} from './types';
|
||||
import {Arr as array} from './array';
|
||||
import {Helpers as hlp} from './helpers';
|
||||
import {DateHelper as dateHelper} from './date';
|
||||
import {Sort} from './sort';
|
||||
|
||||
// Modules
|
||||
import {Store} from './modules/store';
|
||||
|
@ -41,8 +39,6 @@ var global = window,
|
|||
formatDate = dateHelper.format,
|
||||
doc = global.document;
|
||||
|
||||
// export {Paging, GridLayout};
|
||||
|
||||
export class TableFilter{
|
||||
|
||||
/**
|
||||
|
@ -75,7 +71,7 @@ export class TableFilter{
|
|||
'HTML table not found.');
|
||||
}
|
||||
|
||||
if(arguments.length>1){
|
||||
if(arguments.length > 1){
|
||||
for(var i=0; i<arguments.length; i++){
|
||||
var arg = arguments[i];
|
||||
var argtype = typeof arg;
|
||||
|
@ -99,7 +95,7 @@ export class TableFilter{
|
|||
catch(e){ this.nbCells = this.getCellsNb(0); }
|
||||
|
||||
//default script base path
|
||||
this.basePath = f.base_path!==undefined ? f.base_path : 'tablefilter/';
|
||||
this.basePath = f.base_path || 'tablefilter/';
|
||||
this.extensionsPath = f.extensions_path || this.basePath+'extensions/';
|
||||
|
||||
/*** filter types ***/
|
||||
|
@ -385,31 +381,18 @@ export class TableFilter{
|
|||
//indicates if sort is set (used in tfAdapter.sortabletable.js)
|
||||
this.isSortEnabled = false;
|
||||
this.sortConfig = f.sort_config || {};
|
||||
this.sortConfig.name = this.sortConfig['name']!==undefined ?
|
||||
f.sort_config.name : 'sortabletable';
|
||||
this.sortConfig.src = this.sortConfig['src']!==undefined ?
|
||||
f.sort_config.src : this.extensionsPath+'sort/' +
|
||||
'sortabletable.js';
|
||||
this.sortConfig.adapterSrc =
|
||||
this.sortConfig['adapter_src']!==undefined ?
|
||||
f.sort_config.adapter_src :
|
||||
this.extensionsPath+'sort/adapterSortabletable.js';
|
||||
this.sortConfig.initialize =
|
||||
this.sortConfig['initialize']!==undefined ?
|
||||
f.sort_config.initialize :
|
||||
function(o){
|
||||
// if(o.SetSortTable){ o.SetSortTable(); }
|
||||
};
|
||||
this.sortConfig.sortTypes =
|
||||
types.isArray(this.sortConfig['sort_types']) ?
|
||||
f.sort_config.sort_types : [];
|
||||
this.sortConfig.sortCol = this.sortConfig['sort_col']!==undefined ?
|
||||
f.sort_config.sort_col : null;
|
||||
this.sortConfig.asyncSort =
|
||||
this.sortConfig['async_sort']===true ? true : false;
|
||||
this.sortConfig.name = this.sortConfig.name || 'sort';
|
||||
// this.sortConfig.src = this.sortConfig.src || this.extensionsPath +
|
||||
// 'sort/sortabletable.js';
|
||||
this.sortConfig.path = this.sortConfig.path || null;
|
||||
this.sortConfig.sortTypes = types.isArray(this.sortConfig.sort_types) ?
|
||||
this.sortConfig.sort_types : [];
|
||||
this.sortConfig.sortCol = this.sortConfig.sort_col || null;
|
||||
this.sortConfig.asyncSort = this.sortConfig.async_sort===true ?
|
||||
true : false;
|
||||
this.sortConfig.triggerIds =
|
||||
types.isArray(this.sortConfig['sort_trigger_ids']) ?
|
||||
f.sort_config.sort_trigger_ids : [];
|
||||
types.isArray(this.sortConfig.sort_trigger_ids) ?
|
||||
this.sortConfig.sort_trigger_ids : [];
|
||||
|
||||
/*** ezEditTable extension ***/
|
||||
//enables/disables table selection feature
|
||||
|
@ -651,14 +634,14 @@ export class TableFilter{
|
|||
/*====================================================
|
||||
- onkeydown event for input filters
|
||||
=====================================================*/
|
||||
onKeyDown: function(e) {
|
||||
onKeyDown: function() {
|
||||
if(!o.onKeyUp) { return; }
|
||||
o.isUserTyping = true;
|
||||
},
|
||||
/*====================================================
|
||||
- onblur event for input filters
|
||||
=====================================================*/
|
||||
onInpBlur: function(e) {
|
||||
onInpBlur: function() {
|
||||
if(o.onKeyUp){
|
||||
o.isUserTyping = false;
|
||||
global.clearInterval(o.onKeyUpTimer);
|
||||
|
@ -714,7 +697,7 @@ export class TableFilter{
|
|||
=====================================================*/
|
||||
onSlcChange: function(e) {
|
||||
if(!o.activeFlt){ return; }
|
||||
var colIndex = o.activeFlt.getAttribute('colIndex');
|
||||
// var colIndex = o.activeFlt.getAttribute('colIndex');
|
||||
//Checks filter is a checklist and caller is not null
|
||||
// if(o.activeFlt && colIndex &&
|
||||
// o['col'+colIndex]===o.fltTypeCheckList &&
|
||||
|
@ -741,7 +724,7 @@ export class TableFilter{
|
|||
/*====================================================
|
||||
- onclick event for checklist filter container
|
||||
=====================================================*/
|
||||
onCheckListFocus: function(e) {
|
||||
onCheckListFocus: function() {
|
||||
o.activeFilterId = this.firstChild.getAttribute('id');
|
||||
o.activeFlt = dom.id(o.activeFilterId);
|
||||
},
|
||||
|
@ -1550,8 +1533,9 @@ export class TableFilter{
|
|||
// });
|
||||
|
||||
this.loadExtension({
|
||||
name: 'sort'/*,
|
||||
path: './extensions/sort/sort.js'*/
|
||||
name: this.sortConfig.name,
|
||||
path: this.sortConfig.path
|
||||
// path: './extensions/sort/sort.js'
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -1770,7 +1754,7 @@ export class TableFilter{
|
|||
|
||||
//Page navigation has to be enforced whenever selected row is out of
|
||||
//the current page range
|
||||
var onBeforeSelection = function(et, selectedElm, e){
|
||||
var onBeforeSelection = function(et, selectedElm){
|
||||
var row = et.defaultSelection !== 'row' ?
|
||||
selectedElm.parentNode : selectedElm;
|
||||
if(o.paging){
|
||||
|
@ -1807,7 +1791,7 @@ export class TableFilter{
|
|||
|
||||
//Selected row needs to be visible when paging is activated
|
||||
if(o.paging){
|
||||
o.onAfterChangePage = function(tf, i){
|
||||
o.onAfterChangePage = function(tf){
|
||||
var et = tf.ExtRegistry.ezEditTable;
|
||||
var slc = et.Selection;
|
||||
var row = slc.GetActiveRow();
|
||||
|
@ -2152,8 +2136,8 @@ export class TableFilter{
|
|||
re_eq = new RegExp(this.eqOperator),
|
||||
re_st = new RegExp(this.stOperator),
|
||||
re_en = new RegExp(this.enOperator),
|
||||
re_an = new RegExp(this.anOperator),
|
||||
re_cr = new RegExp(this.curExp),
|
||||
// re_an = new RegExp(this.anOperator),
|
||||
// re_cr = new RegExp(this.curExp),
|
||||
re_em = this.emOperator,
|
||||
re_nm = this.nmOperator,
|
||||
re_re = new RegExp(str.rgxEsc(this.rgxOperator));
|
||||
|
@ -2188,7 +2172,7 @@ export class TableFilter{
|
|||
hasDF = re_d.test(sA),
|
||||
hasEQ = re_eq.test(sA),
|
||||
hasLK = re_lk.test(sA),
|
||||
hasAN = re_an.test(sA),
|
||||
// hasAN = re_an.test(sA),
|
||||
hasST = re_st.test(sA),
|
||||
hasEN = re_en.test(sA),
|
||||
hasEM = (re_em === sA),
|
||||
|
@ -2644,7 +2628,7 @@ export class TableFilter{
|
|||
if(!this.fltGrid){
|
||||
return;
|
||||
}
|
||||
return this.fltIds[i];
|
||||
return this.fltIds[index];
|
||||
}
|
||||
|
||||
/*====================================================
|
||||
|
@ -2862,13 +2846,13 @@ export class TableFilter{
|
|||
selects: executes filtering when multiple
|
||||
select populated... IE only!
|
||||
=====================================================*/
|
||||
setFilterValue(index, searcharg, doFilter){
|
||||
setFilterValue(index, searcharg/*, doFilter*/){
|
||||
if((!this.fltGrid && !this.isFirstLoad) ||
|
||||
!this.getFilterElement(index)){
|
||||
return;
|
||||
}
|
||||
var slc = this.getFilterElement(index),
|
||||
execFilter = doFilter===undefined ? true : doFilter,
|
||||
// execFilter = doFilter===undefined ? true : doFilter,
|
||||
fltColType = this['col'+index];
|
||||
searcharg = searcharg===undefined ? '' : searcharg;
|
||||
|
||||
|
@ -2878,8 +2862,8 @@ export class TableFilter{
|
|||
}
|
||||
//multiple selects
|
||||
else if(fltColType === this.fltTypeMulti){
|
||||
var s = searcharg.split(' '+this.orOperator+' '),
|
||||
ct = 0; //keywords counter
|
||||
var s = searcharg.split(' '+this.orOperator+' ');
|
||||
// var ct = 0; //keywords counter
|
||||
for(var j=0; j<slc.options.length; j++){
|
||||
if(s==='' || s[0]===''){
|
||||
slc.options[j].selected = false;
|
||||
|
@ -2907,9 +2891,11 @@ export class TableFilter{
|
|||
//checklist
|
||||
else if(fltColType === this.fltTypeCheckList){
|
||||
searcharg = str.matchCase(searcharg, this.matchCase);
|
||||
var sarg = searcharg.split(' '+this.orOperator+' '),
|
||||
fltValue = slc.setAttribute('value',''),
|
||||
fltIndex = slc.setAttribute('indexes','');
|
||||
var sarg = searcharg.split(' '+this.orOperator+' ');
|
||||
|
||||
slc.setAttribute('value','');
|
||||
slc.setAttribute('indexes','');
|
||||
|
||||
for(var k=0; k<dom.tag(slc,'li').length; k++){
|
||||
var li = dom.tag(slc,'li')[k],
|
||||
lbl = dom.tag(li,'label')[0],
|
||||
|
@ -3384,8 +3370,21 @@ export class TableFilter{
|
|||
}
|
||||
}
|
||||
|
||||
TableFilter.Paging = Paging;
|
||||
TableFilter.Cookie = cookie;
|
||||
TableFilter.Store = Store;
|
||||
TableFilter.GridLayout = GridLayout;
|
||||
TableFilter.Loader = Loader;
|
||||
TableFilter.HighlightKeyword = HighlightKeyword;
|
||||
TableFilter.PopupFilter = PopupFilter;
|
||||
TableFilter.Dropdown = Dropdown;
|
||||
TableFilter.CheckList = CheckList;
|
||||
TableFilter.RowsCounter = RowsCounter;
|
||||
TableFilter.StatusBar = StatusBar;
|
||||
TableFilter.Paging = Paging;
|
||||
TableFilter.ClearButton = ClearButton;
|
||||
TableFilter.Help = Help;
|
||||
TableFilter.AlternateRows = AlternateRows;
|
||||
TableFilter.ColOps = ColOps;
|
||||
|
||||
function removeNbFormat(data, format){
|
||||
if(!data){
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
|
||||
var tf = new TableFilter('demo', {
|
||||
base_path: '../dist/tablefilter/',
|
||||
alternate_rows: true
|
||||
});
|
||||
tf.init();
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
|
||||
var id = function (id){ return document.getElementById(id); };
|
||||
var tf = new TableFilter('demo', {
|
||||
base_path: '../dist/tablefilter/',
|
||||
col_3: 'checklist',
|
||||
fill_slc_on_demand: false
|
||||
});
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
|
||||
var tf = new TableFilter('demo', {
|
||||
base_path: '../dist/tablefilter/',
|
||||
btn_reset: true
|
||||
});
|
||||
tf.init();
|
||||
|
|
|
@ -4,6 +4,7 @@ var table = document.getElementById('demo');
|
|||
var totRowIndex = table.getElementsByTagName('tr').length;
|
||||
|
||||
var tf = new TableFilter('demo', {
|
||||
base_path: '../dist/tablefilter/',
|
||||
rows_always_visible: [totRowIndex],
|
||||
col_operation: {
|
||||
id: ['sum1', 'sum2'],
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
|
||||
var id = function (id){ return document.getElementById(id); };
|
||||
var tf = new TableFilter('demo', {
|
||||
base_path: '../dist/tablefilter/',
|
||||
col_2: 'multiple',
|
||||
col_3: 'select',
|
||||
fill_slc_on_demand: false
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
|
||||
var tf = new TableFilter('demo', {
|
||||
base_path: '../dist/tablefilter/',
|
||||
grid_layout: true,
|
||||
sort: false
|
||||
});
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
|
||||
var tf = new TableFilter('demo', {
|
||||
base_path: '../dist/tablefilter/',
|
||||
help_instructions: true
|
||||
});
|
||||
tf.init();
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
|
||||
var tf = new TableFilter('demo', {
|
||||
base_path: '../dist/tablefilter/',
|
||||
highlight_keywords: true
|
||||
});
|
||||
tf.init();
|
||||
|
|
|
@ -9,7 +9,6 @@ module('Sanity checks');
|
|||
test('Loader component', function() {
|
||||
var loader = tf.Cpt.loader;
|
||||
notEqual(loader, null, 'Loader instanciated');
|
||||
console.log(document.getElementById(loader.prfxLoader+tf.id));
|
||||
notEqual(
|
||||
document.getElementById(loader.prfxLoader+tf.id),
|
||||
null,
|
||||
|
|
|
@ -4,13 +4,7 @@
|
|||
<meta charset="utf-8">
|
||||
<title>TableFilter column sort with grid layout mode</title>
|
||||
<link rel="stylesheet" href="libs/qunit/qunit.css">
|
||||
<link rel="stylesheet" href="../src/filtergrid.css">
|
||||
<script src="libs/qunit/qunit.js"></script>
|
||||
<script>
|
||||
// Defer Qunit so RequireJS can work its magic and resolve all modules.
|
||||
QUnit.config.autostart = false;
|
||||
QUnit.config.autoload = false;
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<table id="demo" cellpadding="0" cellspacing="0">
|
||||
|
@ -139,7 +133,8 @@
|
|||
</tbody>
|
||||
</table>
|
||||
|
||||
<script data-main="test-sort-grid-layout" src="../libs/requirejs/require.js"></script>
|
||||
<script src="../dist/tablefilter/tablefilter.js"></script>
|
||||
<script src="test-sort-grid-layout.js"></script>
|
||||
|
||||
<div id="qunit"></div>
|
||||
<div id="qunit-fixture"></div>
|
||||
|
|
|
@ -1,97 +1,89 @@
|
|||
requirejs(['test-config', '../src/tablefilter'], function(config, TableFilter){
|
||||
|
||||
var types = require('types').Types,
|
||||
dom = require('dom').Dom;
|
||||
|
||||
var tf = new TableFilter('demo', {
|
||||
base_path: '../src/',
|
||||
sort: true,
|
||||
sort_config: {
|
||||
sort_types: ['string','string','number','number','number']
|
||||
},
|
||||
grid_layout: true,
|
||||
on_sort_loaded: startSimple
|
||||
});
|
||||
tf.init();
|
||||
|
||||
var tf1 = new TableFilter('demo2', {
|
||||
base_path: '../src/',
|
||||
paging: true,
|
||||
sort: true,
|
||||
sort_config: {
|
||||
sort_types: ['string','string','number','number','number']
|
||||
},
|
||||
grid_layout: true,
|
||||
on_sort_loaded: startPaging
|
||||
});
|
||||
tf1.init();
|
||||
|
||||
QUnit.start();
|
||||
|
||||
function startSimple(tf){
|
||||
var sort = tf.ExtRegistry.sort;
|
||||
|
||||
module('Sanity checks');
|
||||
test('Sort extension', function() {
|
||||
notEqual(sort, null, 'Sort instanciated');
|
||||
deepEqual(sort.stt instanceof SortableTable, true, 'Sort type');
|
||||
deepEqual(sort.sorted, false, 'Table not sorted');
|
||||
});
|
||||
|
||||
test('Sort behaviour', function() {
|
||||
var th = tf.getHeaderElement(0);
|
||||
sort.sortByColumnIndex(0);
|
||||
|
||||
deepEqual(sort.sorted, true, 'Table column sorted');
|
||||
deepEqual(sort.isPaged, false, 'Table is not paged');
|
||||
});
|
||||
|
||||
module('Destroy and re-init');
|
||||
test('Remove sort', function() {
|
||||
sort.destroy();
|
||||
var th = tf.getHeaderElement(0),
|
||||
indicator = dom.tag(th, 'img');
|
||||
deepEqual(tf.sort, false, 'Sort is removed');
|
||||
deepEqual(indicator.length, 0, 'Sort indicator is removed');
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
function startPaging(tf){
|
||||
var sort = tf.ExtRegistry.sort;
|
||||
|
||||
module('Sanity checks');
|
||||
test('Sort extension', function() {
|
||||
notEqual(sort, null, 'Sort instanciated');
|
||||
deepEqual(sort.stt instanceof SortableTable, true, 'Sort type');
|
||||
deepEqual(sort.sorted, false, 'Table not sorted');
|
||||
});
|
||||
|
||||
module('UI elements');
|
||||
test('Sort UI elements', function() {
|
||||
var th = tf.getHeaderElement(0),
|
||||
indicator = dom.tag(th, 'img');
|
||||
|
||||
deepEqual(indicator.length, 1, 'Sort indicator in header element');
|
||||
});
|
||||
|
||||
test('Sort behaviour', function() {
|
||||
var th = tf.getHeaderElement(0);
|
||||
sort.sortByColumnIndex(0);
|
||||
|
||||
deepEqual(sort.sorted, true, 'Table column sorted');
|
||||
deepEqual(tf.paging, true, 'Table is paged');
|
||||
});
|
||||
|
||||
module('Destroy and re-init');
|
||||
test('Remove sort', function() {
|
||||
sort.destroy();
|
||||
var th = tf.getHeaderElement(0),
|
||||
indicator = dom.tag(th, 'img');
|
||||
deepEqual(tf.sort, false, 'Sort is removed');
|
||||
deepEqual(indicator.length, 0, 'Sort indicator is removed');
|
||||
});
|
||||
|
||||
}
|
||||
var tag = function (elm, tag){ return elm.getElementsByTagName(tag); };
|
||||
|
||||
var tf = new TableFilter('demo', {
|
||||
base_path: '../dist/tablefilter/',
|
||||
sort: true,
|
||||
sort_config: {
|
||||
sort_types: ['string','string','number','number','number']
|
||||
},
|
||||
grid_layout: true,
|
||||
on_sort_loaded: startSimple
|
||||
});
|
||||
tf.init();
|
||||
|
||||
var tf1 = new TableFilter('demo2', {
|
||||
base_path: '../dist/tablefilter/',
|
||||
paging: true,
|
||||
sort: true,
|
||||
sort_config: {
|
||||
sort_types: ['string','string','number','number','number']
|
||||
},
|
||||
grid_layout: true,
|
||||
on_sort_loaded: startPaging
|
||||
});
|
||||
tf1.init();
|
||||
|
||||
function startSimple(tf, sort){
|
||||
module('Sanity checks');
|
||||
test('Sort extension', function() {
|
||||
notEqual(sort, null, 'Sort instanciated');
|
||||
deepEqual(sort.stt instanceof SortableTable, true, 'Sort type');
|
||||
deepEqual(sort.sorted, false, 'Table not sorted');
|
||||
});
|
||||
|
||||
test('Sort behaviour', function() {
|
||||
var th = tf.getHeaderElement(0);
|
||||
sort.sortByColumnIndex(0);
|
||||
|
||||
deepEqual(sort.sorted, true, 'Table column sorted');
|
||||
deepEqual(sort.isPaged, false, 'Table is not paged');
|
||||
});
|
||||
|
||||
module('Destroy and re-init');
|
||||
test('Remove sort', function() {
|
||||
sort.destroy();
|
||||
var th = tf.getHeaderElement(0),
|
||||
indicator = tag(th, 'img');
|
||||
deepEqual(tf.sort, false, 'Sort is removed');
|
||||
deepEqual(indicator.length, 0, 'Sort indicator is removed');
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
function startPaging(tf, sort){
|
||||
// var sort = tf.ExtRegistry.sort;
|
||||
|
||||
module('Sanity checks');
|
||||
test('Sort extension', function() {
|
||||
notEqual(sort, null, 'Sort instanciated');
|
||||
deepEqual(sort.stt instanceof SortableTable, true, 'Sort type');
|
||||
deepEqual(sort.sorted, false, 'Table not sorted');
|
||||
});
|
||||
|
||||
module('UI elements');
|
||||
test('Sort UI elements', function() {
|
||||
var th = tf.getHeaderElement(0),
|
||||
indicator = tag(th, 'img');
|
||||
|
||||
deepEqual(indicator.length, 1, 'Sort indicator in header element');
|
||||
});
|
||||
|
||||
test('Sort behaviour', function() {
|
||||
var th = tf.getHeaderElement(0);
|
||||
sort.sortByColumnIndex(0);
|
||||
|
||||
deepEqual(sort.sorted, true, 'Table column sorted');
|
||||
deepEqual(tf.paging, true, 'Table is paged');
|
||||
});
|
||||
|
||||
module('Destroy and re-init');
|
||||
test('Remove sort', function() {
|
||||
sort.destroy();
|
||||
var th = tf.getHeaderElement(0),
|
||||
indicator = tag(th, 'img');
|
||||
deepEqual(tf.sort, false, 'Sort is removed');
|
||||
deepEqual(indicator.length, 0, 'Sort indicator is removed');
|
||||
});
|
||||
|
||||
}
|
||||
|
|
|
@ -4,13 +4,7 @@
|
|||
<meta charset="utf-8">
|
||||
<title>TableFilter sort by key</title>
|
||||
<link rel="stylesheet" href="libs/qunit/qunit.css">
|
||||
<link rel="stylesheet" href="../dist/filtergrid.css">
|
||||
<script src="libs/qunit/qunit.js"></script>
|
||||
<script>
|
||||
// Defer Qunit so RequireJS can work its magic and resolve all modules.
|
||||
QUnit.config.autostart = false;
|
||||
QUnit.config.autoload = false;
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<table id="demo" cellpadding="0" cellspacing="0">
|
||||
|
@ -240,7 +234,8 @@
|
|||
</tbody>
|
||||
</table>
|
||||
|
||||
<script data-main="test-sort-key" src="../libs/requirejs/require.js"></script>
|
||||
<script src="../dist/tablefilter/tablefilter.js"></script>
|
||||
<script src="test-sort-key.js"></script>
|
||||
|
||||
<div id="qunit"></div>
|
||||
<div id="qunit-fixture"></div>
|
||||
|
|
|
@ -1,74 +1,67 @@
|
|||
requirejs(['test-config', '../src/tablefilter'], function(config, TableFilter){
|
||||
|
||||
var types = require('types').Types,
|
||||
dom = require('dom').Dom;
|
||||
|
||||
var tf = new TableFilter('demo', {
|
||||
base_path: '../src/',
|
||||
sort: true,
|
||||
sort_config: {
|
||||
sort_types:[
|
||||
'String',
|
||||
'Number',
|
||||
'String',
|
||||
'String',
|
||||
'EU',
|
||||
'US',
|
||||
'String',
|
||||
'dmydate',
|
||||
'mdydate'
|
||||
]
|
||||
},
|
||||
on_sort_loaded: start
|
||||
});
|
||||
tf.init();
|
||||
|
||||
QUnit.start();
|
||||
|
||||
function start(tf){
|
||||
var sort = tf.ExtRegistry.sort;
|
||||
|
||||
module('Sanity checks');
|
||||
test('Sort extension', function() {
|
||||
notEqual(sort, null, 'Sort instanciated');
|
||||
deepEqual(sort.stt instanceof SortableTable, true, 'Sort type');
|
||||
deepEqual(sort.sorted, false, 'Table not sorted');
|
||||
});
|
||||
|
||||
module('UI elements');
|
||||
test('Sort UI elements', function() {
|
||||
var th = tf.getHeaderElement(0),
|
||||
indicator = dom.tag(th, 'img'),
|
||||
validRows = tf.getValidRowsIndex(true);
|
||||
|
||||
deepEqual(indicator.length, 1, 'Sort indicator in header element');
|
||||
deepEqual(
|
||||
dom.getText(tf.tbl.rows[validRows[0]].cells[1]),
|
||||
'AUY78',
|
||||
'First custom key cell text before sorting');
|
||||
});
|
||||
|
||||
test('Sort behaviour', function() {
|
||||
var th = tf.getHeaderElement(1),
|
||||
validRows = tf.getValidRowsIndex();
|
||||
sort.sortByColumnIndex(1);
|
||||
|
||||
deepEqual(sort.sorted, true, 'Table column sorted');
|
||||
deepEqual(
|
||||
dom.getText(tf.tbl.rows[validRows[0]].cells[1]),
|
||||
'QT1',
|
||||
'First custom key cell text after sorting');
|
||||
});
|
||||
|
||||
module('Destroy and re-init');
|
||||
test('Remove sort', function() {
|
||||
sort.destroy();
|
||||
var th = tf.getHeaderElement(0),
|
||||
indicator = dom.tag(th, 'img');
|
||||
deepEqual(tf.sort, false, 'Sort is removed');
|
||||
deepEqual(indicator.length, 0, 'Sort indicator is removed');
|
||||
});
|
||||
|
||||
}
|
||||
var tag = function (elm, tag){ return elm.getElementsByTagName(tag); };
|
||||
|
||||
var tf = new TableFilter('demo', {
|
||||
base_path: '../dist/tablefilter/',
|
||||
sort: true,
|
||||
sort_config: {
|
||||
sort_types:[
|
||||
'String',
|
||||
'Number',
|
||||
'String',
|
||||
'String',
|
||||
'EU',
|
||||
'US',
|
||||
'String',
|
||||
'dmydate',
|
||||
'mdydate'
|
||||
]
|
||||
},
|
||||
on_sort_loaded: start
|
||||
});
|
||||
tf.init();
|
||||
|
||||
function start(tf, sort){
|
||||
|
||||
module('Sanity checks');
|
||||
test('Sort extension', function() {
|
||||
notEqual(sort, null, 'Sort instanciated');
|
||||
deepEqual(sort.stt instanceof SortableTable, true, 'Sort type');
|
||||
deepEqual(sort.sorted, false, 'Table not sorted');
|
||||
});
|
||||
|
||||
module('UI elements');
|
||||
test('Sort UI elements', function() {
|
||||
var th = tf.getHeaderElement(0),
|
||||
indicator = tag(th, 'img'),
|
||||
validRows = tf.getValidRowsIndex(true);
|
||||
|
||||
deepEqual(indicator.length, 1, 'Sort indicator in header element');
|
||||
deepEqual(
|
||||
(tf.tbl.rows[validRows[0]].cells[1]).innerHTML,
|
||||
'AUY78',
|
||||
'First custom key cell text before sorting');
|
||||
});
|
||||
|
||||
test('Sort behaviour', function() {
|
||||
var th = tf.getHeaderElement(1),
|
||||
validRows = tf.getValidRowsIndex();
|
||||
sort.sortByColumnIndex(1);
|
||||
|
||||
deepEqual(sort.sorted, true, 'Table column sorted');
|
||||
deepEqual(
|
||||
(tf.tbl.rows[validRows[0]].cells[1]).innerHTML,
|
||||
'QT1',
|
||||
'First custom key cell text after sorting');
|
||||
});
|
||||
|
||||
module('Destroy and re-init');
|
||||
test('Remove sort', function() {
|
||||
sort.destroy();
|
||||
var th = tf.getHeaderElement(0),
|
||||
indicator = tag(th, 'img');
|
||||
deepEqual(tf.sort, false, 'Sort is removed');
|
||||
deepEqual(indicator.length, 0, 'Sort indicator is removed');
|
||||
});
|
||||
|
||||
}
|
||||
|
|
|
@ -4,13 +4,7 @@
|
|||
<meta charset="utf-8">
|
||||
<title>TableFilter column sort</title>
|
||||
<link rel="stylesheet" href="libs/qunit/qunit.css">
|
||||
<link rel="stylesheet" href="../src/filtergrid.css">
|
||||
<script src="libs/qunit/qunit.js"></script>
|
||||
<script>
|
||||
// Defer Qunit so RequireJS can work its magic and resolve all modules.
|
||||
QUnit.config.autostart = false;
|
||||
QUnit.config.autoload = false;
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<table id="demo" cellpadding="0" cellspacing="0">
|
||||
|
@ -139,7 +133,8 @@
|
|||
</tbody>
|
||||
</table>
|
||||
|
||||
<script data-main="test-sort" src="../libs/requirejs/require.js"></script>
|
||||
<script src="../dist/tablefilter/tablefilter.js"></script>
|
||||
<script src="test-sort.js"></script>
|
||||
|
||||
<div id="qunit"></div>
|
||||
<div id="qunit-fixture"></div>
|
||||
|
|
|
@ -1,103 +1,97 @@
|
|||
requirejs(['test-config', '../src/tablefilter'], function(config, TableFilter){
|
||||
|
||||
var types = require('types').Types,
|
||||
dom = require('dom').Dom;
|
||||
|
||||
var tf = new TableFilter('demo', {
|
||||
base_path: '../src/',
|
||||
sort: true,
|
||||
sort_config: {
|
||||
sort_types: ['string','string','number','number','number']
|
||||
},
|
||||
on_sort_loaded: startSimple
|
||||
});
|
||||
tf.init();
|
||||
|
||||
var tf1 = new TableFilter('demo2', {
|
||||
base_path: '../src/',
|
||||
paging: true,
|
||||
sort: true,
|
||||
sort_config: {
|
||||
sort_types: ['string','string','number','number','number']
|
||||
},
|
||||
on_sort_loaded: startPaging
|
||||
});
|
||||
tf1.init();
|
||||
|
||||
QUnit.start();
|
||||
|
||||
function startSimple(tf){
|
||||
var sort = tf.ExtRegistry.sort;
|
||||
|
||||
module('Sanity checks');
|
||||
test('Sort extension', function() {
|
||||
notEqual(sort, null, 'Sort instanciated');
|
||||
deepEqual(sort.stt instanceof SortableTable, true, 'Sort type');
|
||||
deepEqual(sort.sorted, false, 'Table not sorted');
|
||||
});
|
||||
|
||||
module('UI elements');
|
||||
test('Sort UI elements', function() {
|
||||
var th = tf.getHeaderElement(0),
|
||||
indicator = dom.tag(th, 'img');
|
||||
|
||||
deepEqual(indicator.length, 1, 'Sort indicator in header element');
|
||||
});
|
||||
|
||||
test('Sort behaviour', function() {
|
||||
var th = tf.getHeaderElement(0);
|
||||
sort.sortByColumnIndex(0);
|
||||
|
||||
deepEqual(sort.sorted, true, 'Table column sorted');
|
||||
deepEqual(sort.isPaged, false, 'Table is not paged');
|
||||
});
|
||||
|
||||
module('Destroy and re-init');
|
||||
test('Remove sort', function() {
|
||||
sort.destroy();
|
||||
var th = tf.getHeaderElement(0),
|
||||
indicator = dom.tag(th, 'img');
|
||||
deepEqual(tf.sort, false, 'Sort is removed');
|
||||
deepEqual(indicator.length, 0, 'Sort indicator is removed');
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
function startPaging(tf){
|
||||
var sort = tf.ExtRegistry.sort;
|
||||
|
||||
module('Sanity checks');
|
||||
test('Sort extension', function() {
|
||||
notEqual(sort, null, 'Sort instanciated');
|
||||
deepEqual(sort.stt instanceof SortableTable, true, 'Sort type');
|
||||
deepEqual(sort.sorted, false, 'Table not sorted');
|
||||
});
|
||||
|
||||
module('UI elements');
|
||||
test('Sort UI elements', function() {
|
||||
var th = tf.getHeaderElement(0),
|
||||
indicator = dom.tag(th, 'img');
|
||||
|
||||
deepEqual(indicator.length, 1, 'Sort indicator in header element');
|
||||
});
|
||||
|
||||
test('Sort behaviour', function() {
|
||||
var th = tf.getHeaderElement(0);
|
||||
sort.sortByColumnIndex(0);
|
||||
|
||||
deepEqual(sort.sorted, true, 'Table column sorted');
|
||||
deepEqual(tf.paging, true, 'Table is paged');
|
||||
});
|
||||
|
||||
module('Destroy and re-init');
|
||||
test('Remove sort', function() {
|
||||
sort.destroy();
|
||||
var th = tf.getHeaderElement(0),
|
||||
indicator = dom.tag(th, 'img');
|
||||
deepEqual(tf.sort, false, 'Sort is removed');
|
||||
deepEqual(indicator.length, 0, 'Sort indicator is removed');
|
||||
});
|
||||
|
||||
}
|
||||
var tag = function (elm, tag){ return elm.getElementsByTagName(tag); };
|
||||
|
||||
var tf = new TableFilter('demo', {
|
||||
base_path: '../dist/tablefilter/',
|
||||
sort: true,
|
||||
sort_config: {
|
||||
sort_types: ['string','string','number','number','number']
|
||||
},
|
||||
on_sort_loaded: startSimple
|
||||
});
|
||||
tf.init();
|
||||
|
||||
var tf1 = new TableFilter('demo2', {
|
||||
base_path: '../dist/tablefilter/',
|
||||
paging: true,
|
||||
sort: true,
|
||||
sort_config: {
|
||||
sort_types: ['string','string','number','number','number']
|
||||
},
|
||||
on_sort_loaded: startPaging
|
||||
});
|
||||
tf1.init();
|
||||
|
||||
function startSimple(tf, sort){
|
||||
// var sort = tf.ExtRegistry.sort;
|
||||
|
||||
module('Sanity checks');
|
||||
test('Sort extension', function() {
|
||||
notEqual(sort, null, 'Sort instanciated');
|
||||
deepEqual(sort.stt instanceof SortableTable, true, 'Sort type');
|
||||
deepEqual(sort.sorted, false, 'Table not sorted');
|
||||
});
|
||||
|
||||
module('UI elements');
|
||||
test('Sort UI elements', function() {
|
||||
var th = tf.getHeaderElement(0),
|
||||
indicator = tag(th, 'img');
|
||||
|
||||
deepEqual(indicator.length, 1, 'Sort indicator in header element');
|
||||
});
|
||||
|
||||
test('Sort behaviour', function() {
|
||||
var th = tf.getHeaderElement(0);
|
||||
sort.sortByColumnIndex(0);
|
||||
|
||||
deepEqual(sort.sorted, true, 'Table column sorted');
|
||||
deepEqual(sort.isPaged, false, 'Table is not paged');
|
||||
});
|
||||
|
||||
module('Destroy and re-init');
|
||||
test('Remove sort', function() {
|
||||
sort.destroy();
|
||||
var th = tf.getHeaderElement(0),
|
||||
indicator = tag(th, 'img');
|
||||
deepEqual(tf.sort, false, 'Sort is removed');
|
||||
deepEqual(indicator.length, 0, 'Sort indicator is removed');
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
function startPaging(tf, sort){
|
||||
// var sort = tf.ExtRegistry.sort;
|
||||
|
||||
module('Sanity checks');
|
||||
test('Sort extension', function() {
|
||||
notEqual(sort, null, 'Sort instanciated');
|
||||
deepEqual(sort.stt instanceof SortableTable, true, 'Sort type');
|
||||
deepEqual(sort.sorted, false, 'Table not sorted');
|
||||
});
|
||||
|
||||
module('UI elements');
|
||||
test('Sort UI elements', function() {
|
||||
var th = tf.getHeaderElement(0),
|
||||
indicator = tag(th, 'img');
|
||||
|
||||
deepEqual(indicator.length, 1, 'Sort indicator in header element');
|
||||
});
|
||||
|
||||
test('Sort behaviour', function() {
|
||||
var th = tf.getHeaderElement(0);
|
||||
sort.sortByColumnIndex(0);
|
||||
|
||||
deepEqual(sort.sorted, true, 'Table column sorted');
|
||||
deepEqual(tf.paging, true, 'Table is paged');
|
||||
});
|
||||
|
||||
module('Destroy and re-init');
|
||||
test('Remove sort', function() {
|
||||
sort.destroy();
|
||||
var th = tf.getHeaderElement(0),
|
||||
indicator = tag(th, 'img');
|
||||
deepEqual(tf.sort, false, 'Sort is removed');
|
||||
deepEqual(indicator.length, 0, 'Sort indicator is removed');
|
||||
});
|
||||
|
||||
}
|
||||
|
|
|
@ -1,47 +1,42 @@
|
|||
requirejs(['test-config', '../src/tablefilter'], function(config, TableFilter){
|
||||
|
||||
QUnit.start();
|
||||
|
||||
var StatusBar = require('modules/statusBar').StatusBar,
|
||||
types = require('types').Types,
|
||||
dom = require('dom').Dom;
|
||||
|
||||
var tf = new TableFilter('demo', {
|
||||
status_bar: true
|
||||
});
|
||||
tf.init();
|
||||
|
||||
var statusBar = tf.Cpt.statusBar;
|
||||
module('Sanity checks');
|
||||
test('Status bar component', function() {
|
||||
deepEqual(statusBar instanceof StatusBar, true, 'StatusBar type');
|
||||
notEqual(statusBar.statusBarDiv, null, 'statusBarDiv property');
|
||||
});
|
||||
|
||||
module('UI elements');
|
||||
test('Status bar UI elements', function() {
|
||||
var container = statusBar.statusBarDiv,
|
||||
label = statusBar.statusBarSpanText;
|
||||
deepEqual(container.nodeName, 'DIV', 'Status bar container');
|
||||
deepEqual(label.nodeName, 'SPAN', 'Status bar label');
|
||||
});
|
||||
|
||||
module('Destroy');
|
||||
test('Remove UI', function() {
|
||||
statusBar.destroy();
|
||||
var container = statusBar.statusBarDiv,
|
||||
label = statusBar.statusBarSpanText;
|
||||
deepEqual(container, null, 'Status bar container removed');
|
||||
deepEqual(label, null, 'Status bar button removed');
|
||||
});
|
||||
|
||||
test('Re-set UI', function() {
|
||||
statusBar.statusBarText = '→←';
|
||||
statusBar.init();
|
||||
|
||||
var label = statusBar.statusBarSpanText;
|
||||
notEqual(
|
||||
dom.getText(label).indexOf('→←'), -1, 'Status bar text');
|
||||
});
|
||||
var StatusBar = TableFilter.StatusBar;
|
||||
|
||||
var tf = new TableFilter('demo', {
|
||||
base_path: '../dist/tablefilter/',
|
||||
status_bar: true
|
||||
});
|
||||
tf.init();
|
||||
|
||||
var statusBar = tf.Cpt.statusBar;
|
||||
module('Sanity checks');
|
||||
test('Status bar component', function() {
|
||||
deepEqual(statusBar instanceof StatusBar, true, 'StatusBar type');
|
||||
notEqual(statusBar.statusBarDiv, null, 'statusBarDiv property');
|
||||
});
|
||||
|
||||
module('UI elements');
|
||||
test('Status bar UI elements', function() {
|
||||
var container = statusBar.statusBarDiv,
|
||||
label = statusBar.statusBarSpanText;
|
||||
deepEqual(container.nodeName, 'DIV', 'Status bar container');
|
||||
deepEqual(label.nodeName, 'SPAN', 'Status bar label');
|
||||
});
|
||||
|
||||
module('Destroy');
|
||||
test('Remove UI', function() {
|
||||
statusBar.destroy();
|
||||
var container = statusBar.statusBarDiv,
|
||||
label = statusBar.statusBarSpanText;
|
||||
deepEqual(container, null, 'Status bar container removed');
|
||||
deepEqual(label, null, 'Status bar button removed');
|
||||
});
|
||||
|
||||
test('Re-set UI', function() {
|
||||
statusBar.statusBarText = '→←';
|
||||
statusBar.init();
|
||||
|
||||
var label = statusBar.statusBarSpanText;
|
||||
notEqual(
|
||||
label.innerHTML.indexOf('→←'), -1, 'Status bar text');
|
||||
});
|
||||
|
||||
|
|
|
@ -1,65 +1,62 @@
|
|||
requirejs(['test-config', '../src/tablefilter'], function(config, TableFilter){
|
||||
|
||||
QUnit.start();
|
||||
|
||||
var Store = require('modules/store').Store;
|
||||
var Cookie = require('cookie').Cookie;
|
||||
|
||||
var tf = new TableFilter('demo', {
|
||||
paging: true,
|
||||
paging_length: 2,
|
||||
results_per_page: ['Results per page', [2,4,6]],
|
||||
remember_grid_values: true,
|
||||
remember_page_number: true,
|
||||
remember_page_length: true
|
||||
});
|
||||
|
||||
Cookie.remove(tf.fltsValuesCookie);
|
||||
Cookie.remove(tf.pgNbCookie);
|
||||
Cookie.remove(tf.pgLenCookie);
|
||||
|
||||
tf.init();
|
||||
tf._clearFilters();
|
||||
|
||||
module('Sanity checks');
|
||||
test('Store module', function() {
|
||||
deepEqual(tf.Cpt.store instanceof Store, true, 'Store type');
|
||||
notEqual(tf.Cpt.store, null, 'Store instanciated');
|
||||
deepEqual(tf.Cpt.store.duration, 100000, 'Store duration');
|
||||
});
|
||||
|
||||
module('Check page number persistence');
|
||||
test('Page number value', function() {
|
||||
tf._clearFilters();
|
||||
tf._filter();
|
||||
tf.Cpt.paging._changePage(1);
|
||||
var cookieName = tf.pgNbCookie;
|
||||
deepEqual(tf.Cpt.store.getPageNb(cookieName), '2', 'Page number value');
|
||||
tf._clearFilters();
|
||||
tf._filter();
|
||||
});
|
||||
|
||||
module('Check page length persistence');
|
||||
test('Page length value', function() {
|
||||
var paging = tf.Cpt.paging;
|
||||
paging.resultsPerPageSlc.options[2].selected = true;
|
||||
paging._changeResultsPerPage();
|
||||
var cookieName = tf.pgLenCookie;
|
||||
deepEqual(tf.Cpt.store.getPageLength(cookieName), '2', 'Page length value');
|
||||
tf._clearFilters();
|
||||
tf._filter();
|
||||
});
|
||||
|
||||
module('Check filters persistence');
|
||||
test('Filters value', function() {
|
||||
tf.setFilterValue(0, 'Sydney');
|
||||
tf.setFilterValue(3, '1.5');
|
||||
tf._filter();
|
||||
var cookieName = tf.fltsValuesCookie;
|
||||
deepEqual(tf.Cpt.store.getFilterValues(cookieName)[0], 'Sydney', 'Filter 0 value');
|
||||
deepEqual(tf.Cpt.store.getFilterValues(cookieName)[3], '1.5', 'Filter 3 value');
|
||||
tf._clearFilters();
|
||||
tf._filter();
|
||||
});
|
||||
var Store = TableFilter.Store;
|
||||
var Cookie = TableFilter.Cookie;
|
||||
|
||||
var tf = new TableFilter('demo', {
|
||||
base_path: '../dist/tablefilter/',
|
||||
paging: true,
|
||||
paging_length: 2,
|
||||
results_per_page: ['Results per page', [2,4,6]],
|
||||
remember_grid_values: true,
|
||||
remember_page_number: true,
|
||||
remember_page_length: true
|
||||
});
|
||||
|
||||
Cookie.remove(tf.fltsValuesCookie);
|
||||
Cookie.remove(tf.pgNbCookie);
|
||||
Cookie.remove(tf.pgLenCookie);
|
||||
|
||||
tf.init();
|
||||
tf._clearFilters();
|
||||
|
||||
module('Sanity checks');
|
||||
test('Store module', function() {
|
||||
deepEqual(tf.Cpt.store instanceof Store, true, 'Store type');
|
||||
notEqual(tf.Cpt.store, null, 'Store instanciated');
|
||||
deepEqual(tf.Cpt.store.duration, 100000, 'Store duration');
|
||||
});
|
||||
|
||||
module('Check page number persistence');
|
||||
test('Page number value', function() {
|
||||
tf._clearFilters();
|
||||
tf._filter();
|
||||
tf.Cpt.paging._changePage(1);
|
||||
var cookieName = tf.pgNbCookie;
|
||||
deepEqual(tf.Cpt.store.getPageNb(cookieName), '2', 'Page number value');
|
||||
tf._clearFilters();
|
||||
tf._filter();
|
||||
});
|
||||
|
||||
module('Check page length persistence');
|
||||
test('Page length value', function() {
|
||||
var paging = tf.Cpt.paging;
|
||||
paging.resultsPerPageSlc.options[2].selected = true;
|
||||
paging._changeResultsPerPage();
|
||||
var cookieName = tf.pgLenCookie;
|
||||
deepEqual(tf.Cpt.store.getPageLength(cookieName), '2', 'Page length value');
|
||||
tf._clearFilters();
|
||||
tf._filter();
|
||||
});
|
||||
|
||||
module('Check filters persistence');
|
||||
test('Filters value', function() {
|
||||
tf.setFilterValue(0, 'Sydney');
|
||||
tf.setFilterValue(3, '1.5');
|
||||
tf._filter();
|
||||
var cookieName = tf.fltsValuesCookie;
|
||||
deepEqual(tf.Cpt.store.getFilterValues(cookieName)[0], 'Sydney', 'Filter 0 value');
|
||||
deepEqual(tf.Cpt.store.getFilterValues(cookieName)[3], '1.5', 'Filter 3 value');
|
||||
tf._clearFilters();
|
||||
tf._filter();
|
||||
});
|
||||
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
(function(win, TableFilter) {
|
||||
|
||||
var tf = new TableFilter('demo');
|
||||
var tf = new TableFilter('demo', {
|
||||
base_path: '../dist/tablefilter/'
|
||||
});
|
||||
tf.init();
|
||||
|
||||
module("Sanity checks");
|
||||
|
|
Loading…
Reference in a new issue