mambax7/alumni-26x

View on GitHub
media/jquery/tablesorter-master/js/parsers/parser-date-two-digit-year.js

Summary

Maintainability
B
6 hrs
Test Coverage
/*! Parser: two digit year - updated 11/26/2016 (v2.28.0) */
/* Demo: http://mottie.github.io/tablesorter/docs/example-parsers-dates.html */
/*jshint jquery:true */
;(function($){
    'use strict';

    // 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,

    // no need to change any of the code below
    ts = $.tablesorter,
    now = new Date().getFullYear();

    // add dateRange to defaults for validator; value must be falsy
    ts.defaults.dataRange = '';

    if ( !ts.dates ) { ts.dates = {}; }
    ts.dates.regxxxxyy = /(\d{1,2})[\/\s](\d{1,2})[\/\s](\d{2})/;
    ts.dates.regyyxxxx = /(\d{2})[\/\s](\d{1,2})[\/\s](\d{1,2})/;

    ts.formatDate = function(s, regex, format, table){
        if (s) {
            var y, rng,
                n = s
                    // replace separators
                    .replace(/\s+/g, ' ').replace(/[-.,]/g, '/')
                    // reformat xx/xx/xx to mm/dd/19yy;
                    .replace(regex, format),
                d = new Date(n);
            if ( d instanceof Date && isFinite(d) ) {
                y = d.getFullYear();
                rng = table && table.config.dateRange || range;
                // if date > 50 years old (set range), add 100 years
                // this will work when people start using '50' and mean '2050'
                while (now - y > rng) {
                    y += 100;
                }
                return d.setFullYear(y);
            }
        }
        return s;
    };

    $.tablesorter.addParser({
        id: 'ddmmyy',
        is: function() {
            return false;
        },
        format: function(s, table) {
            // reformat dd/mm/yy to mm/dd/19yy;
            return ts.formatDate(s, ts.dates.regxxxxyy, '$2/$1/19$3', table);
        },
        type: 'numeric'
    });

    $.tablesorter.addParser({
        id: 'mmddyy',
        is: function() {
            return false;
        },
        format: function(s, table) {
            // reformat mm/dd/yy to mm/dd/19yy
            return ts.formatDate(s, ts.dates.regxxxxyy, '$1/$2/19$3', table);
        },
        type: 'numeric'
    });

    $.tablesorter.addParser({
        id: 'yymmdd',
        is: function() {
            return false;
        },
        format: function(s, table) {
            // reformat yy/mm/dd to mm/dd/19yy
            return ts.formatDate(s, ts.dates.regyyxxxx, '$2/$3/19$1', table);
        },
        type: 'numeric'
    });

})(jQuery);