diff --git a/js/parsers/parser-date-iso8601.js b/js/parsers/parser-date-iso8601.js index 90a01db5..fe384179 100644 --- a/js/parsers/parser-date-iso8601.js +++ b/js/parsers/parser-date-iso8601.js @@ -18,17 +18,17 @@ var result = s.match(iso8601date); if (result) { var date = new Date(result[1], 0, 1); - if (result[3]) {date.setMonth(result[3] - 1);} - if (result[5]) {date.setDate(result[5]);} - if (result[7]) {date.setHours(result[7]);} - if (result[8]) {date.setMinutes(result[8]);} - if (result[10]) {date.setSeconds(result[10]);} - if (result[12]) {date.setMilliseconds(Number('0.' + result[12]) * 1000);} + if (result[3]) { date.setMonth(result[3] - 1); } + if (result[5]) { date.setDate(result[5]); } + if (result[7]) { date.setHours(result[7]); } + if (result[8]) { date.setMinutes(result[8]); } + if (result[10]) { date.setSeconds(result[10]); } + if (result[12]) { date.setMilliseconds(Number('0.' + result[12]) * 1000); } return date; } return 0; }, - type : 'numeric' + type : 'numeric' }); })(jQuery); diff --git a/js/parsers/parser-date-month.js b/js/parsers/parser-date-month.js index 8445631c..68689fc2 100644 --- a/js/parsers/parser-date-month.js +++ b/js/parsers/parser-date-month.js @@ -5,13 +5,14 @@ ;(function($){ "use strict"; - $.tablesorter.dates = $.extend({}, $.tablesorter.dates, { + var ts = $.tablesorter; + ts.dates = $.extend({}, ts.dates, { // *** modify this array to change match the language *** monthCased : [ 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec' ] }); - $.tablesorter.dates.monthLower = $.tablesorter.dates.monthCased.join(',').toLocaleLowerCase().split(','); + ts.dates.monthLower = ts.dates.monthCased.join(',').toLocaleLowerCase().split(','); - $.tablesorter.addParser({ + ts.addParser({ id: "month", is: function(){ return false; @@ -19,7 +20,7 @@ format: function(s, table) { var j = -1, c = table.config; s = c.ignoreCase ? s.toLocaleLowerCase() : s; - $.each($.tablesorter.dates[ 'month' + (c.ignoreCase ? 'Lower' : 'Cased') ], function(i,v){ + $.each(ts.dates[ 'month' + (c.ignoreCase ? 'Lower' : 'Cased') ], function(i,v){ if (j < 0 && s.match(v)) { j = i; } }); // return s (original string) if there isn't a match diff --git a/js/parsers/parser-date-two-digit-year.js b/js/parsers/parser-date-two-digit-year.js index 91d30bf3..95fe8e49 100644 --- a/js/parsers/parser-date-two-digit-year.js +++ b/js/parsers/parser-date-two-digit-year.js @@ -5,22 +5,27 @@ ;(function($){ "use strict"; + var ts = $.tablesorter, + // Make the date be within +/- range of the 2 digit year // so if the current year is 2020, and the 2 digit year is 80 (2080 - 2020 > 50), it becomes 1980 // if the 2 digit year is 50 (2050 - 2020 < 50), then it becomes 2050. - var range = 50, + range = 50; - // ************ - regxxxxyy = /(\d{1,2})[\/\s](\d{1,2})[\/\s](\d{2})/, - regyyxxxx = /(\d{2})[\/\s](\d{1,2})[\/\s](\d{1,2})/, - formatDate = function(s, regex, format){ + ts.dates = $.extend({}, ts.dates, { + regxxxxyy: /(\d{1,2})[\/\s](\d{1,2})[\/\s](\d{2})/, + regyyxxxx: /(\d{2})[\/\s](\d{1,2})[\/\s](\d{1,2})/ + }); + + ts.formatDate = function(s, regex, format){ s = s - // replace separators - .replace(/\s+/g," ").replace(/[-.,]/g, "/") - // reformat xx/xx/xx to mm/dd/19yy; - .replace(regex, format); - var d = new Date(s), y = d.getFullYear(), - now = new Date().getFullYear(); + // replace separators + .replace(/\s+/g," ").replace(/[-.,]/g, "/") + // reformat xx/xx/xx to mm/dd/19yy; + .replace(regex, format); + var d = new Date(s), + y = d.getFullYear(), + now = new Date().getFullYear(); // if date > 50 years old (set range), add 100 years // this will work when people start using "50" and mean "2050" while (now - y > range) { @@ -36,7 +41,7 @@ }, format: function(s) { // reformat dd/mm/yy to mm/dd/19yy; - return formatDate(s, regxxxxyy, "$2/$1/19$3"); + return ts.formatDate(s, ts.dates.regxxxxyy, "$2/$1/19$3"); }, type: "numeric" }); @@ -48,7 +53,7 @@ }, format: function(s) { // reformat mm/dd/yy to mm/dd/19yy - return formatDate(s, regxxxxyy, "$1/$2/19$3"); + return ts.formatDate(s, ts.dates.regxxxxyy, "$1/$2/19$3"); }, type: "numeric" }); @@ -60,7 +65,7 @@ }, format: function(s) { // reformat yy/mm/dd to mm/dd/19yy - return formatDate(s, regyyxxxx, "$2/$3/19$1"); + return ts.formatDate(s, ts.dates.regyyxxxx, "$2/$3/19$1"); }, type: "numeric" }); diff --git a/js/parsers/parser-date-weekday.js b/js/parsers/parser-date-weekday.js index c32ebf5e..62f4504e 100644 --- a/js/parsers/parser-date-weekday.js +++ b/js/parsers/parser-date-weekday.js @@ -5,13 +5,14 @@ ;(function($){ "use strict"; - $.tablesorter.dates = $.extend({}, $.tablesorter.dates, { + var ts = $.tablesorter; + ts.dates = $.extend({}, ts.dates, { // *** modify this array to change match the language *** weekdayCased : [ 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat' ] }); - $.tablesorter.dates.weekdayLower = $.tablesorter.dates.weekdayCased.join(',').toLocaleLowerCase().split(','); + ts.dates.weekdayLower = ts.dates.weekdayCased.join(',').toLocaleLowerCase().split(','); - $.tablesorter.addParser({ + ts.addParser({ id: "weekday", is: function(){ return false; @@ -19,7 +20,7 @@ format: function(s, table) { var j = -1, c = table.config; s = c.ignoreCase ? s.toLocaleLowerCase() : s; - $.each($.tablesorter.dates[ 'weekday' + (c.ignoreCase ? 'Lower' : 'Cased') ], function(i,v){ + $.each(ts.dates[ 'weekday' + (c.ignoreCase ? 'Lower' : 'Cased') ], function(i,v){ if (j < 0 && s.match(v)) { j = i; } }); // return s (original string) if there isn't a match diff --git a/js/parsers/parser-date.js b/js/parsers/parser-date.js index d447f9cb..52ece6c9 100644 --- a/js/parsers/parser-date.js +++ b/js/parsers/parser-date.js @@ -14,7 +14,7 @@ return false; }, format: function(s) { - return Date.create ? Date.create(s).getTime() || s : s; + return Date.create ? Date.create(s).getTime() || s : new Date(s).getTime() || s; }, type: "numeric" }); diff --git a/js/parsers/parser-feet-inch-fraction.js b/js/parsers/parser-feet-inch-fraction.js index a88e5ff0..79fdea83 100644 --- a/js/parsers/parser-feet-inch-fraction.js +++ b/js/parsers/parser-feet-inch-fraction.js @@ -1,20 +1,21 @@ /*! Distance parser - * This parser will parser numbers like 5'10" (5 foot 10 inches) - * and 31½ into sortable values. - * Demo: http://jsfiddle.net/Mottie/abkNM/154/ - */ +* This parser will parser numbers like 5'10" (5 foot 10 inches) +* and 31½ into sortable values. +* Demo: http://jsfiddle.net/Mottie/abkNM/154/ +*/ /*global jQuery: false */ ;(function($){ "use strict"; - var symbolRegex = /[\u215b\u215c\u215d\u215e\u00bc\u00bd\u00be]/g, - processFractions = function(n, table){ + var ts = $.tablesorter; + ts.symbolRegex = /[\u215b\u215c\u215d\u215e\u00bc\u00bd\u00be]/g; + ts.processFractions = function(n, table) { if (n) { var t, p = 0; n = $.trim(n.replace(/\"/,'')); // look for a space in the first part of the number: "10 3/4" and save the "10" if (/\s/.test(n)) { - p = $.tablesorter.formatFloat(n.split(' ')[0], table); + p = ts.formatFloat(n.split(' ')[0], table); // remove stuff to the left of the space n = $.trim(n.substring(n.indexOf(' '), n.length)); } @@ -24,8 +25,8 @@ // turn 3/4 into .75; make sure we don't divide by zero n = p + parseInt(t[0], 10) / parseInt(t[1] || 1, 10); // look for fraction symbols - } else if (symbolRegex.test(n)) { - n = p + n.replace(symbolRegex, function(m){ + } else if (ts.symbolRegex.test(n)) { + n = p + n.replace(ts.symbolRegex, function(m){ return { '\u215b' : '.125', // 1/8 '\u215c' : '.375', // 3/8 @@ -49,12 +50,11 @@ }, format: function(s, table) { if (s === '') { return ''; } - // look for feet symbol = ' // very generic test to catch 1.1', 1 1/2' and 1½' var d = (/^\s*\S*(\s+\S+)?\s*\'/.test(s)) ? s.split("'") : [0,s], - f = processFractions(d[0], table), // feet - i = processFractions(d[1], table); // inches + f = ts.processFractions(d[0], table), // feet + i = ts.processFractions(d[1], table); // inches return (/[\'\"]/).test(s) ? parseFloat(f) + (parseFloat(i)/12 || 0) : parseFloat(f) + parseFloat(i); }, type: 'numeric' diff --git a/js/parsers/parser-metric.js b/js/parsers/parser-metric.js index edddd27f..db1f85ad 100644 --- a/js/parsers/parser-metric.js +++ b/js/parsers/parser-metric.js @@ -47,7 +47,7 @@ b, t, // process number here to get a numerical format (us or eu) n = $.tablesorter.formatFloat(s.replace(/[^\w,. \-()]/g, ""), table), - $t = $(table).find('thead').children().children('[data-column="' + cellIndex + '"]'), + $t = table.config.$headers.filter('[data-column="' + cellIndex + '"]'), m = $t.data('metric'); if (!m) { // stored values