diff --git a/dist/tablefilter/tablefilter.js b/dist/tablefilter/tablefilter.js index 33327157..2ec333d6 100644 --- a/dist/tablefilter/tablefilter.js +++ b/dist/tablefilter/tablefilter.js @@ -1982,6 +1982,10 @@ return /******/ (function(modules) { // webpackBootstrap sA = (0, _string.matchCase)(sA, this.caseSensitive); var occurence = false; + var dateType = this.Mod.dateType; + var isValidDate = dateType.isValid.bind(dateType); + var parseDate = dateType.parse.bind(dateType); + var locale = dateType.getOptions(colIdx).locale || this.locale; //Search arg operator tests var hasLO = re_l.test(sA), @@ -1999,14 +2003,10 @@ return /******/ (function(modules) { // webpackBootstrap hasNM = re_nm === sA, hasRE = re_re.test(sA); - // Check for dates - if (this.hasType(colIdx, [_const.DATE])) { + // Check for dates or resolve date type + if (this.hasType(colIdx, [_const.DATE]) || isValidDate(cellData, locale)) { var dte1 = void 0, dte2 = void 0; - var dateType = this.Mod.dateType; - var isValidDate = dateType.isValid.bind(dateType); - var parseDate = dateType.parse.bind(dateType); - var locale = dateType.getOptions(colIdx).locale || this.locale; // Search arg dates tests var isLDate = hasLO && isValidDate(sA.replace(re_l, ''), locale); @@ -2017,6 +2017,7 @@ return /******/ (function(modules) { // webpackBootstrap var isEQDate = hasEQ && isValidDate(sA.replace(re_eq, ''), locale); dte1 = parseDate(cellData, locale); + // lower date if (isLDate) { dte2 = parseDate(sA.replace(re_l, ''), locale); @@ -2051,13 +2052,11 @@ return /******/ (function(modules) { // webpackBootstrap else if (re_lk.test(sA)) { // like date occurence = (0, _string.contains)(sA.replace(re_lk, ''), cellData, false, this.caseSensitive); - } else if (isValidDate(sA) - /*isValidDate(sA, dtType)*/) { - // dte2 = formatDate(sA, dtType); - dte2 = parseDate(sA, locale); - occurence = dte1.toString() === dte2.toString(); - } - //empty + } else if (isValidDate(sA)) { + dte2 = parseDate(sA, locale); + occurence = dte1.toString() === dte2.toString(); + } + //empty else if (hasEM) { occurence = (0, _string.isEmpty)(cellData); } @@ -10320,7 +10319,7 @@ return /******/ (function(modules) { // webpackBootstrap if (!this.initialized) { return; } - this.datetime.removeLocale(this.locale); + // TODO: remove added formats this.initialized = false; diff --git a/src/modules/dateType.js b/src/modules/dateType.js index 7a3a0768..60d2d388 100644 --- a/src/modules/dateType.js +++ b/src/modules/dateType.js @@ -123,7 +123,7 @@ export class DateType extends Feature { if (!this.initialized) { return; } - this.datetime.removeLocale(this.locale); + // TODO: remove added formats this.initialized = false; diff --git a/src/tablefilter.js b/src/tablefilter.js index 2a66dca9..f9009395 100644 --- a/src/tablefilter.js +++ b/src/tablefilter.js @@ -1784,6 +1784,10 @@ export class TableFilter { sA = matchCase(sA, this.caseSensitive); let occurence = false; + let dateType = this.Mod.dateType; + let isValidDate = dateType.isValid.bind(dateType); + let parseDate = dateType.parse.bind(dateType); + let locale = dateType.getOptions(colIdx).locale || this.locale; //Search arg operator tests let hasLO = re_l.test(sA), @@ -1800,13 +1804,9 @@ export class TableFilter { hasNM = (re_nm === sA), hasRE = re_re.test(sA); - // Check for dates - if (this.hasType(colIdx, [DATE])) { + // Check for dates or resolve date type + if (this.hasType(colIdx, [DATE]) || isValidDate(cellData, locale)) { let dte1, dte2; - let dateType = this.Mod.dateType; - let isValidDate = dateType.isValid.bind(dateType); - let parseDate = dateType.parse.bind(dateType); - let locale = dateType.getOptions(colIdx).locale || this.locale; // Search arg dates tests let isLDate = hasLO && @@ -1823,6 +1823,7 @@ export class TableFilter { isValidDate(sA.replace(re_eq, ''), locale); dte1 = parseDate(cellData, locale); + // lower date if (isLDate) { dte2 = parseDate(sA.replace(re_l, ''), locale); @@ -1858,9 +1859,7 @@ export class TableFilter { occurence = contains(sA.replace(re_lk, ''), cellData, false, this.caseSensitive); } - else if (isValidDate(sA) - /*isValidDate(sA, dtType)*/) { - // dte2 = formatDate(sA, dtType); + else if (isValidDate(sA)) { dte2 = parseDate(sA, locale); occurence = dte1.toString() === dte2.toString(); } diff --git a/test/test-data-types.js b/test/test-data-types.js index 0e1297fb..755ff4b3 100644 --- a/test/test-data-types.js +++ b/test/test-data-types.js @@ -4,15 +4,12 @@ base_path: '../dist/tablefilter/', col_types: [ null, null, null, - 'formatted-number-eu', 'formatted-number', null, - null, null, null, + { type: 'formatted-number', decimal: ',', thousands: ','}, + 'formatted-number', null, + { type: 'date', locale: 'fr', }, + { type: 'date', locale: 'en', format: '{dd}-{MM}-{yyyy|yy}' }, + { type: 'date', locale: 'en', format: ['{dd}-{months}-{yyyy|yy}'] }, 'IpAddress' - ], - col_date_type: [ - null, null, null, - null, null, null, - 'dmy', 'mdy', 'ddmmmyyyy', - null ] }); tf.init(); @@ -22,11 +19,16 @@ test('Data types', function() { deepEqual(tf instanceof TableFilter, true, 'TableFilter instanciated'); deepEqual( - tf.hasType(3, ['formatted-number-eu', 'formatted-number']) && - tf.hasType(4, ['formatted-number-eu', 'formatted-number']), + tf.hasType(3, ['formatted-number']) && + tf.hasType(4, ['formatted-number']), true, 'Has number column types' ); - deepEqual(tf.hasColDateType, true, 'Has date column tyoes'); + deepEqual( + tf.hasType(6, ['date']) && + tf.hasType(7, ['date']) && + tf.hasType(8, ['date']), + true, 'Has date column types' + ); }); module('Data types filtering'); diff --git a/test/test-filtering.js b/test/test-filtering.js index 117c2d70..081fe5af 100644 --- a/test/test-filtering.js +++ b/test/test-filtering.js @@ -1,11 +1,13 @@ var tf = new TableFilter('demo', { base_path: '../dist/tablefilter/', - col_date_type: [ - null, null, 'ddmmmyyyy', - null, null, null - ], + // col_date_type: [ + // null, null, 'ddmmmyyyy', + // null, null, null + // ], col_types: [ - null, null, null, + null, + null, + { type: 'date', format: ['{dd}.{MM}.{yyyy|yy}'] }, null, null, 'formatted-number' ] }); @@ -103,8 +105,8 @@ test('Should return no results for an unmatched term (6)', function(){ deepEqual(tf.getValidRows().length, 0, 'No matches'); }); -module('Tear-down'); -test('can destroy TableFilter DOM elements', function() { - tf.destroy(); - deepEqual(tf.isInitialized(), false, 'Filters removed'); -}); +// module('Tear-down'); +// test('can destroy TableFilter DOM elements', function() { +// tf.destroy(); +// deepEqual(tf.isInitialized(), false, 'Filters removed'); +// });