From 5a72404bd6860b26909c6c4b7b266ceeeab14ce9 Mon Sep 17 00:00:00 2001 From: Max Guglielmi Date: Sat, 22 Nov 2014 19:06:08 +1100 Subject: [PATCH] Converted event.js module to es6 --- Gruntfile.js | 5 - TODO | 3 + dist/filtergrid.css | 2 +- src-es6/event.js | 50 ++++++ src/core.js | 304 ++++++++++++++++----------------- src/event.js | 101 +++++------ src/event.js.map | 1 + src/modules/rowsCounter.js.map | 2 +- 8 files changed, 255 insertions(+), 213 deletions(-) create mode 100644 TODO create mode 100644 src-es6/event.js create mode 100644 src/event.js.map diff --git a/Gruntfile.js b/Gruntfile.js index e3514f7a..14ead752 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -112,11 +112,6 @@ module.exports = function (grunt) { sourceMap: true, modules: 'amd' }, - // dist: { - // files: { - // 'es6/modules/*.js': '<%= source_folder %>modules/' - // } - // } build:{ files: [{ expand: true, diff --git a/TODO b/TODO new file mode 100644 index 00000000..87085af0 --- /dev/null +++ b/TODO @@ -0,0 +1,3 @@ + +- Initialise TableFilter object with a table DOM element +- Use DOM event listeners for DOM events \ No newline at end of file diff --git a/dist/filtergrid.css b/dist/filtergrid.css index cc178a38..4b0ab400 100644 --- a/dist/filtergrid.css +++ b/dist/filtergrid.css @@ -1,6 +1,6 @@ /*------------------------------------------------------------------------ - TableFilter stylesheet by Max Guglielmi - - (build date: Sun Nov 16 2014 12:22:04) + - (build date: Sat Nov 22 2014 16:50:14) - Edit below for your projects' needs ------------------------------------------------------------------------*/ diff --git a/src-es6/event.js b/src-es6/event.js new file mode 100644 index 00000000..7153de7e --- /dev/null +++ b/src-es6/event.js @@ -0,0 +1,50 @@ +/** + * DOM event utilities + */ + +var Event = { + add: function(obj, type, func, capture){ + if(obj.attachEvent){ + obj.attachEvent('on'+type, func); + } + else if(obj.addEventListener){ + obj.addEventListener(type, func, + (capture===undefined ? false : capture)); + } else{ + obj['on'+type] = func; + } + }, + remove: function(obj, type, func, capture){ + if(obj.detachEvent){ + obj.detachEvent('on'+type,func); + } + else if(obj.removeEventListener){ + obj.removeEventListener(type, func, + (capture===undefined ? false : capture)); + } else { + obj['on'+type] = null; + } + }, + stop: function(evt){ + if(!evt){ + evt = window.event; + } + if(evt.stopPropagation){ + evt.stopPropagation(); + } else { + evt.cancelBubble = true; + } + }, + cancel: function(evt){ + if(!evt){ + evt = window.event; + } + if(evt.preventDefault) { + evt.preventDefault(); + } else { + evt.returnValue = false; + } + } +}; + +exports.Event = Event; diff --git a/src/core.js b/src/core.js index f768b050..f05c1bd6 100644 --- a/src/core.js +++ b/src/core.js @@ -12,7 +12,7 @@ define(function (require) { var global = this, - evt = require('event'), + evt = require('event').Event, dom = require('dom').Dom, str = require('string').Str, cookie = require('cookie').Cookie, @@ -1003,9 +1003,9 @@ TableFilter.prototype = { if(this.popUpFilters){ this.headersRow++; } - if(this.fixedHeaders){ - this.SetFixedHeaders(); - } + // if(this.fixedHeaders){ + // this.SetFixedHeaders(); + // } fltrow.className = this.fltsRowCssClass; //Disable for grid_layout @@ -1213,9 +1213,9 @@ TableFilter.prototype = { if(this.statusBar){ this.SetStatusBar(); } - if(this.fixedHeaders && !this.isFirstLoad){ - this.SetFixedHeaders(); - } + // if(this.fixedHeaders && !this.isFirstLoad){ + // this.SetFixedHeaders(); + // } if(this.paging){ this.SetPaging(); } @@ -1370,55 +1370,55 @@ TableFilter.prototype = { this.IncludeFile(module.name, module.path, module.init); }, - LoadExtensions : function(){ - if(!this.Ext){ - /*** TF extensions ***/ - var o = this; - this.Ext = { - list: {}, - add: function(extName, extDesc, extPath, extCallBack){ - var file = extPath.split('/')[extPath.split('/').length-1], - re = new RegExp(file), - path = extPath.replace(re,''); - o.Ext.list[extName] = { - name: extName, - description: extDesc, - file: file, - path: path, - callback: extCallBack - }; - } - }; - } - this.EvtManager(this.Evt.name.loadextensions); - }, + // LoadExtensions : function(){ + // if(!this.Ext){ + // /*** TF extensions ***/ + // var o = this; + // this.Ext = { + // list: {}, + // add: function(extName, extDesc, extPath, extCallBack){ + // var file = extPath.split('/')[extPath.split('/').length-1], + // re = new RegExp(file), + // path = extPath.replace(re,''); + // o.Ext.list[extName] = { + // name: extName, + // description: extDesc, + // file: file, + // path: path, + // callback: extCallBack + // }; + // } + // }; + // } + // this.EvtManager(this.Evt.name.loadextensions); + // }, /*==================================================== - loads TF extensions =====================================================*/ - _LoadExtensions : function(){ - if(!this.hasExtensions || !types.isArray(this.extensions.name) || - !types.isArray(this.extensions.src)){ - return; - } - var ext = this.extensions; - for(var e=0; e= ' + - 'offsetParent.offsetHeight ? ' + - '0 - parentNode.parentNode.offsetHeight + '+ - 'offsetParent.offsetHeight + offsetParent.scrollTop : 0);'; - } - } - }, + // //css below emulates fixed footer on IE<=6 + // for(var j=0; j= ' + + // 'offsetParent.offsetHeight ? ' + + // '0 - parentNode.parentNode.offsetHeight + '+ + // 'offsetParent.offsetHeight + offsetParent.scrollTop : 0);'; + // } + // } + // }, /*==================================================== - Removes fixed headers =====================================================*/ - RemoveFixedHeaders: function(){ - if(!this.hasGrid || !this.fixedHeaders ){ - return; - } + // RemoveFixedHeaders: function(){ + // if(!this.hasGrid || !this.fixedHeaders ){ + // return; + // } - if(this.contDiv){ - this.contDiv.parentNode.insertBefore(this.tbl, this.contDiv); - this.contDiv.parentNode.removeChild( this.contDiv ); - this.contDiv = null; - var thead = dom.tag(this.tbl,'thead'); - if(thead.length===0){ - return; - } - var theadTr = dom.tag(thead[0],'tr'); - if(theadTr.length===0){ - return; - } - for(var i=0; i0) ? 1 : 0);\r\n var paging_end_row = (paging_start_row+tf.pagingLength)-1 <=\r\n tf.nbVisibleRows ? paging_start_row+tf.pagingLength-1 :\r\n tf.nbVisibleRows;\r\n totTxt = paging_start_row + this.fromToTextSeparator +\r\n paging_end_row + this.overText + tf.nbVisibleRows;\r\n }\r\n this.rowsCounterSpan.innerHTML = totTxt;\r\n if(this.onAfterRefreshCounter){\r\n this.onAfterRefreshCounter.call(\r\n null, tf, this.rowsCounterSpan, totTxt);\r\n }\r\n }\r\n\r\n destroy(){\r\n var tf = this.tf;\r\n if(!tf.hasGrid){\r\n return;\r\n }\r\n if(!this.rowsCounterSpan){\r\n return;\r\n }\r\n\r\n if(!this.rowsCounterTgtId && this.rowsCounterDiv){\r\n //IE only: clears all for sure\r\n if(Helpers.isIE()){\r\n this.rowsCounterDiv.outerHTML = '';\r\n } else {\r\n this.rowsCounterDiv.parentNode.removeChild(this.rowsCounterDiv);\r\n }\r\n } else {\r\n Dom.id( this.rowsCounterTgtId ).innerHTML = '';\r\n }\r\n this.rowsCounterSpan = null;\r\n this.rowsCounterDiv = null;\r\n }\r\n}"]} \ No newline at end of file +{"version":3,"sources":["src-es6/modules/rowsCounter.js"],"names":[],"mappings":"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","file":"src-es6/modules/rowsCounter.js","sourcesContent":["import {Dom} from '../dom';\r\nimport {Types} from '../types';\r\nimport {Helpers} from '../helpers';\r\n\r\nexport class RowsCounter{\r\n\r\n /**\r\n * Rows counter\r\n * @param {Object} tf TableFilter instance\r\n */\r\n constructor(tf){\r\n // TableFilter configuration\r\n var f = tf.fObj;\r\n\r\n //id of custom container element\r\n this.rowsCounterTgtId = f.rows_counter_target_id || null;\r\n //element containing tot nb rows\r\n this.rowsCounterDiv = null;\r\n //element containing tot nb rows label\r\n this.rowsCounterSpan = null;\r\n //defines rows counter text\r\n this.rowsCounterText = f.rows_counter_text || 'Rows: ';\r\n this.fromToTextSeparator = f.from_to_text_separator || '-';\r\n this.overText = f.over_text || ' / ';\r\n //defines css class rows counter\r\n this.totRowsCssClass = f.tot_rows_css_class || 'tot';\r\n //callback raised before counter is refreshed\r\n this.onBeforeRefreshCounter = Types.isFn(f.on_before_refresh_counter) ?\r\n f.on_before_refresh_counter : null;\r\n //callback raised after counter is refreshed\r\n this.onAfterRefreshCounter = Types.isFn(f.on_after_refresh_counter) ?\r\n f.on_after_refresh_counter : null;\r\n\r\n this.tf = tf;\r\n }\r\n\r\n init(){\r\n var tf = this.tf;\r\n\r\n if((!tf.hasGrid && !tf.isFirstLoad) || this.rowsCounterSpan){\r\n return;\r\n }\r\n\r\n //rows counter container\r\n var countDiv = Dom.create('div', ['id', tf.prfxCounter+tf.id]);\r\n countDiv.className = this.totRowsCssClass;\r\n //rows counter label\r\n var countSpan = Dom.create('span', ['id', tf.prfxTotRows+tf.id]);\r\n var countText = Dom.create('span', ['id', tf.prfxTotRowsTxt+tf.id]);\r\n countText.appendChild(Dom.text(this.rowsCounterText));\r\n\r\n // counter is added to defined element\r\n if(!this.rowsCounterTgtId){\r\n tf.SetTopDiv();\r\n }\r\n var targetEl = !this.rowsCounterTgtId ?\r\n tf.lDiv : Dom.id( this.rowsCounterTgtId );\r\n\r\n //IE only: clears all for sure\r\n if(this.rowsCounterDiv && Helpers.isIE()){\r\n this.rowsCounterDiv.outerHTML = '';\r\n }\r\n //default container: 'lDiv'\r\n if(!this.rowsCounterTgtId){\r\n countDiv.appendChild(countText);\r\n countDiv.appendChild(countSpan);\r\n targetEl.appendChild(countDiv);\r\n }\r\n else{\r\n //custom container, no need to append statusDiv\r\n targetEl.appendChild(countText);\r\n targetEl.appendChild(countSpan);\r\n }\r\n this.rowsCounterDiv = countDiv;\r\n this.rowsCounterSpan = countSpan;\r\n\r\n this.refresh();\r\n }\r\n\r\n refresh(p){\r\n if(!this.rowsCounterSpan){\r\n return;\r\n }\r\n\r\n var tf = this.tf;\r\n\r\n if(this.onBeforeRefreshCounter){\r\n this.onBeforeRefreshCounter.call(null, tf, this.rowsCounterSpan);\r\n }\r\n\r\n var totTxt;\r\n if(!tf.paging){\r\n if(p && p !== ''){\r\n totTxt = p;\r\n } else{\r\n totTxt = tf.nbFilterableRows - tf.nbHiddenRows -\r\n (tf.hasVisibleRows ? tf.visibleRows.length : 0);\r\n }\r\n } else {\r\n //paging start row\r\n var paging_start_row = parseInt(tf.startPagingRow, 10) +\r\n ((tf.nbVisibleRows>0) ? 1 : 0);\r\n var paging_end_row = (paging_start_row+tf.pagingLength)-1 <=\r\n tf.nbVisibleRows ? paging_start_row+tf.pagingLength-1 :\r\n tf.nbVisibleRows;\r\n totTxt = paging_start_row + this.fromToTextSeparator +\r\n paging_end_row + this.overText + tf.nbVisibleRows;\r\n }\r\n this.rowsCounterSpan.innerHTML = totTxt;\r\n if(this.onAfterRefreshCounter){\r\n this.onAfterRefreshCounter.call(\r\n null, tf, this.rowsCounterSpan, totTxt);\r\n }\r\n }\r\n\r\n destroy(){\r\n var tf = this.tf;\r\n if(!tf.hasGrid){\r\n return;\r\n }\r\n if(!this.rowsCounterSpan){\r\n return;\r\n }\r\n\r\n if(!this.rowsCounterTgtId && this.rowsCounterDiv){\r\n //IE only: clears all for sure\r\n if(Helpers.isIE()){\r\n this.rowsCounterDiv.outerHTML = '';\r\n } else {\r\n this.rowsCounterDiv.parentNode.removeChild(this.rowsCounterDiv);\r\n }\r\n } else {\r\n Dom.id( this.rowsCounterTgtId ).innerHTML = '';\r\n }\r\n this.rowsCounterSpan = null;\r\n this.rowsCounterDiv = null;\r\n }\r\n}"]} \ No newline at end of file