1
0
Fork 0
mirror of https://github.com/koalyptus/TableFilter.git synced 2026-03-17 16:10:04 +01:00

Removed unused TableFilter properties, added eslint rule

This commit is contained in:
Max Guglielmi 2016-05-31 19:22:21 +10:00
commit 8e5aba04e2
21 changed files with 224 additions and 171 deletions

View file

@ -1,28 +1,32 @@
import {root} from './root';
/**
* Cookie utilities
*/
const doc = root.document;
export default {
write(name, value, hours){
write(name, value, hours) {
let expire = '';
if(hours){
if (hours) {
expire = new Date((new Date()).getTime() + hours * 3600000);
expire = '; expires=' + expire.toGMTString();
}
document.cookie = name + '=' + escape(value) + expire;
doc.cookie = name + '=' + escape(value) + expire;
},
read(name){
read(name) {
let cookieValue = '',
search = name + '=';
if(document.cookie.length > 0){
let cookie = document.cookie,
if (doc.cookie.length > 0) {
let cookie = doc.cookie,
offset = cookie.indexOf(search);
if(offset !== -1){
if (offset !== -1) {
offset += search.length;
let end = cookie.indexOf(';', offset);
if(end === -1){
if (end === -1) {
end = cookie.length;
}
cookieValue = unescape(cookie.substring(offset, end));
@ -31,12 +35,12 @@ export default {
return cookieValue;
},
remove(name){
remove(name) {
this.write(name, '', -1);
},
valueToArray(name, separator){
if(!separator){
valueToArray(name, separator) {
if (!separator) {
separator = ',';
}
//reads the cookie
@ -46,8 +50,8 @@ export default {
return arr;
},
getValueByIndex(name, index, separator){
if(!separator){
getValueByIndex(name, index, separator) {
if (!separator) {
separator = ',';
}
//reads the cookie

View file

@ -2,6 +2,9 @@
* Event emitter class
*/
export class Emitter {
/**
* Creates an instance of Emitter.
*/
constructor() {
/**
* Events object
@ -16,7 +19,7 @@ export class Emitter {
* @param {Function} fn Function invoked when event is emitted
*/
on(evts, fn) {
evts.forEach((evt)=> {
evts.forEach((evt) => {
this.events[evt] = this.events[evt] || [];
this.events[evt].push(fn);
});
@ -28,8 +31,8 @@ export class Emitter {
* @param {Function} fn Function invoked when event is emitted
*/
off(evts, fn) {
evts.forEach((evt)=> {
if(evt in this.events) {
evts.forEach((evt) => {
if (evt in this.events) {
this.events[evt].splice(this.events[evt].indexOf(fn), 1);
}
});
@ -41,8 +44,8 @@ export class Emitter {
* the invoked function
*/
emit(evt /*, args...*/) {
if(evt in this.events) {
for(let i = 0; i < this.events[evt].length; i++) {
if (evt in this.events) {
for (let i = 0; i < this.events[evt].length; i++) {
this.events[evt][i].apply(this, [].slice.call(arguments, 1));
}
}

View file

@ -5,51 +5,95 @@ import {root} from './root';
*/
export default {
add(obj, type, func, capture){
if(obj.addEventListener){
/**
* Add event handler for specified event on passed element
*
* @param {DOMElement} obj Element
* @param {String} type Event type
* @param {Function} Handler
* @param {Boolean} capture Specifiy whether the event should be executed in
* the capturing or in the bubbling phase
*/
add(obj, type, func, capture) {
if (obj.addEventListener) {
obj.addEventListener(type, func, capture);
}
else if(obj.attachEvent){
obj.attachEvent('on'+type, func);
else if (obj.attachEvent) {
obj.attachEvent('on' + type, func);
} else {
obj['on'+type] = func;
obj['on' + type] = func;
}
},
remove(obj, type, func, capture){
if(obj.detachEvent){
obj.detachEvent('on'+type,func);
/**
* Remove event handler for specified event on passed element
*
* @param {DOMElement} obj Element
* @param {String} type Event type
* @param {Function} Handler
* @param {Boolean} capture Specifiy whether the event should be executed in
* the capturing or in the bubbling phase
*/
remove(obj, type, func, capture) {
if (obj.detachEvent) {
obj.detachEvent('on' + type, func);
}
else if(obj.removeEventListener){
else if (obj.removeEventListener) {
obj.removeEventListener(type, func, capture);
} else {
obj['on'+type] = null;
obj['on' + type] = null;
}
},
stop(evt){
if(!evt){
/**
* Prevents further propagation of the current event in the bubbling phase
*
* @param {Event} evt Event on the DOM
*/
stop(evt) {
if (!evt) {
evt = root.event;
}
if(evt.stopPropagation){
if (evt.stopPropagation) {
evt.stopPropagation();
} else {
evt.cancelBubble = true;
}
},
cancel(evt){
if(!evt){
/**
* Cancels the event if it is cancelable, without stopping further
* propagation of the event.
*
* @param {Event} evt Event on the DOM
*/
cancel(evt) {
if (!evt) {
evt = root.event;
}
if(evt.preventDefault) {
if (evt.preventDefault) {
evt.preventDefault();
} else {
evt.returnValue = false;
}
},
target(evt){
return (evt && evt.target) || (root.event && root.event.srcElement);
/**
* Reference to the object that dispatched the event
*
* @param {Event} evt Event on the DOM
* @returns {DOMElement}
*/
target(evt) {
if (!evt) {
evt = root.event;
}
return evt.target || evt.srcElement;
},
keyCode(evt){
/**
* Returns the Unicode value of pressed key
*
* @param {Event} evt Event on the DOM
* @returns {Number}
*/
keyCode(evt) {
return evt.charCode ? evt.charCode :
(evt.keyCode ? evt.keyCode: (evt.which ? evt.which : 0));
(evt.keyCode ? evt.keyCode : (evt.which ? evt.which : 0));
}
};

View file

@ -1,7 +1,7 @@
import AdapterSortableTable from './adapterSortabletable';
import {root} from '../../root';
if(!root.SortableTable){
if (!root.SortableTable) {
require('script!sortabletable');
}

View file

@ -1,16 +1,20 @@
import {Feature} from '../feature';
import {addClass, removeClass} from '../dom';
/**
* Rows with alternating background color for improved readability
*/
export class AlternateRows extends Feature {
/**
* Alternating rows color
* Creates an instance of AlternateRows.
*
* @param {Object} tf TableFilter instance
*/
constructor(tf) {
super(tf, 'alternateRows');
var config = this.config;
let config = this.config;
//defines css class for even rows
this.evenCss = config.even_row_css_class || 'even';
//defines css class for odd rows
@ -36,24 +40,21 @@ export class AlternateRows extends Feature {
this.initialized = true;
}
/**
* Apply background to all valid rows
*/
processAll() {
if (!this.isEnabled()) {
return;
}
var tf = this.tf;
var validRowsIndex = tf.getValidRows(true);
var noValidRowsIndex = validRowsIndex.length === 0;
//1st index
var beginIndex = noValidRowsIndex ? tf.refRow : 0;
// nb indexes
var indexLen = noValidRowsIndex ?
tf.nbFilterableRows + beginIndex :
validRowsIndex.length;
var idx = 0;
let tf = this.tf;
let validRowsIndex = tf.getValidRows(true);
let indexLen = validRowsIndex.length;
let idx = 0;
//alternates bg color
for (var j = beginIndex; j < indexLen; j++) {
var rowIdx = noValidRowsIndex ? j : validRowsIndex[j];
for (let j = 0; j < indexLen; j++) {
let rowIdx = validRowsIndex[j];
this.setRowBg(rowIdx, idx);
idx++;
}
@ -83,8 +84,8 @@ export class AlternateRows extends Feature {
if (!this.isEnabled() || isNaN(rowIdx)) {
return;
}
var rows = this.tf.tbl.rows;
var i = isNaN(idx) ? rowIdx : idx;
let rows = this.tf.tbl.rows;
let i = isNaN(idx) ? rowIdx : idx;
this.removeRowBg(rowIdx);
addClass(rows[rowIdx], (i % 2) ? this.evenCss : this.oddCss);
@ -98,7 +99,7 @@ export class AlternateRows extends Feature {
if (isNaN(idx)) {
return;
}
var rows = this.tf.tbl.rows;
let rows = this.tf.tbl.rows;
removeClass(rows[idx], this.oddCss);
removeClass(rows[idx], this.evenCss);
}
@ -111,7 +112,7 @@ export class AlternateRows extends Feature {
return;
}
let nbRows = this.tf.getRowsNb(true);
for (var i = 0; i < nbRows; i++) {
for (let i = 0; i < nbRows; i++) {
this.removeRowBg(i);
}

View file

@ -4,16 +4,16 @@ import Event from '../event';
import {NONE} from '../const';
const WIKI_URL = 'https://github.com/koalyptus/TableFilter/wiki/' +
'4.-Filter-operators';
'4.-Filter-operators';
const WEBSITE_URL = 'http://koalyptus.github.io/TableFilter/';
export class Help extends Feature{
export class Help extends Feature {
/**
* Help UI component
* @param {Object} tf TableFilter instance
*/
constructor(tf){
constructor(tf) {
super(tf, 'help');
var f = this.config;
@ -31,7 +31,7 @@ export class Help extends Feature{
'operators: <br /><b>&lt;</b>, <b>&lt;=</b>, <b>&gt;</b>, ' +
'<b>&gt;=</b>, <b>=</b>, <b>*</b>, <b>!</b>, <b>{</b>, <b>}</b>, ' +
'<b>||</b>,<b>&amp;&amp;</b>, <b>[empty]</b>, <b>[nonempty]</b>, ' +
'<b>rgx:</b><br/><a href="'+ WIKI_URL +'" target="_blank">' +
'<b>rgx:</b><br/><a href="' + WIKI_URL + '" target="_blank">' +
'Learn more</a><hr/>';
//defines help innerHtml
this.instrHtml = f.help_instructions_html || null;
@ -46,12 +46,12 @@ export class Help extends Feature{
'helpCont';
//help button element
this.btn = null;
//help content div
//help content div
this.cont = null;
this.defaultHtml = '<div class="helpFooter"><h4>TableFilter ' +
'v'+ tf.version +'</h4>' +
'<a href="'+ WEBSITE_URL +'" target="_blank">'+ WEBSITE_URL +'</a>'+
'<br/><span>&copy;2015-'+ tf.year +' {AUTHOR}</span>' +
'v' + tf.version + '</h4>' + '<a href="' + WEBSITE_URL +
'" target="_blank">' + WEBSITE_URL + '</a>' +
'<br/><span>&copy;2015-' + tf.year + ' {AUTHOR}</span>' +
'<div align="center" style="margin-top:8px;">' +
'<a href="javascript:void(0);" class="close">Close</a></div></div>';
@ -60,21 +60,26 @@ export class Help extends Feature{
//id prefix for help elements
this.prfxHelpDiv = 'helpDiv_';
this.emitter.on(['init-help'], ()=> this.init());
this.emitter.on(['init-help'], () => this.init());
}
init(){
if(this.initialized){
/**
* Initialise Help instance
*
* @returns (description)
*/
init() {
if (this.initialized) {
return;
}
var tf = this.tf;
var helpspan = createElm('span', ['id', this.prfxHelpSpan+tf.id]);
var helpdiv = createElm('div', ['id', this.prfxHelpDiv+tf.id]);
var helpspan = createElm('span', ['id', this.prfxHelpSpan + tf.id]);
var helpdiv = createElm('div', ['id', this.prfxHelpDiv + tf.id]);
//help button is added to defined element
if(!this.tgtId){
if (!this.tgtId) {
tf.setToolbar();
}
var targetEl = !this.tgtId ? tf.rDiv : elm(this.tgtId);
@ -82,7 +87,7 @@ export class Help extends Feature{
var divContainer = !this.contTgtId ? helpspan : elm(this.contTgtId);
if(!this.btnHtml){
if (!this.btnHtml) {
divContainer.appendChild(helpdiv);
var helplink = createElm('a', ['href', 'javascript:void(0);']);
helplink.className = this.btnCssClass;
@ -96,16 +101,16 @@ export class Help extends Feature{
divContainer.appendChild(helpdiv);
}
if(!this.instrHtml){
if (!this.instrHtml) {
helpdiv.innerHTML = this.instrText;
helpdiv.className = this.contCssClass;
Event.add(helpdiv, 'dblclick', () => this.toggle());
} else {
if(this.contTgtId){
if (this.contTgtId) {
divContainer.appendChild(helpdiv);
}
helpdiv.innerHTML = this.instrHtml;
if(!this.contTgtId){
if (!this.contTgtId) {
helpdiv.className = this.contCssClass;
Event.add(helpdiv, 'dblclick', () => this.toggle());
}
@ -121,14 +126,14 @@ export class Help extends Feature{
/**
* Toggle help pop-up
*/
toggle(){
toggle() {
// check only if explicitily set to false as in this case undefined
// signifies the help feature is enabled by default
if(this.enabled === false){
if (this.enabled === false) {
return;
}
var divDisplay = this.cont.style.display;
if(divDisplay === '' || divDisplay === NONE){
if (divDisplay === '' || divDisplay === NONE) {
this.cont.style.display = 'inline';
} else {
this.cont.style.display = NONE;
@ -138,13 +143,13 @@ export class Help extends Feature{
/**
* Remove help UI
*/
destroy(){
if(!this.initialized){
destroy() {
if (!this.initialized) {
return;
}
removeElm(this.btn);
this.btn = null;
if(!this.cont){
if (!this.cont) {
return;
}
removeElm(this.cont);

View file

@ -109,12 +109,8 @@ export class TableFilter {
//stores filters ids
this.fltIds = [];
//stores filters DOM elements
this.fltElms = [];
//stores valid rows indexes (rows visible upon filtering)
this.validRowsIndex = [];
//stores filters row element
this.fltGridEl = null;
//container div for paging elements, reset btn etc.
this.infDiv = null;
//div for rows counter
@ -920,9 +916,9 @@ export class TableFilter {
if (!this.initialized) {
return;
}
let rows = this.tbl.rows,
Mod = this.Mod,
emitter = this.emitter;
let Mod = this.Mod;
let emitter = this.emitter;
if (this.isExternalFlt && !this.popupFilters) {
this.removeExternalFlts();
@ -943,7 +939,6 @@ export class TableFilter {
this.validateAllRows();
if (this.fltGrid && !this.gridLayout) {
this.fltGridEl = rows[this.filtersRowIndex];
this.tbl.deleteRow(this.filtersRowIndex);
}