This is SUPER quick and dirty, but appears to be working

(btw: rather than hacking up the tablesorter.js file for sort rules,
it's 1000x better to add a parser....  that we if he releases a new
version, you don't have to re-hack up the code)



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://
www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml";>
<head>
    <title>Untitled Page</title>
        <script type="text/javascript" src="http://tablesorter.com/jquery-
latest.js"></script>
        <script type="text/javascript" src="http://tablesorter.com/
jquery.tablesorter.js"></script>

        <script type="text/javascript">
            $(document).ready(function() {
                var months = {};
                months["JAN"] = "01";
                months["FEB"] = "02";
                months["MAR"] = "03";
                months["APR"] = "04";
                months["MAY"] = "05";
                months["JUN"] = "06";
                months["JUL"] = "07";
                months["AUG"] = "08";
                months["SEP"] = "09";
                months["OCT"] = "10";
                months["NOV"] = "11";
                months["DEC"] = "12";

                $.tablesorter.addParser({
                    id: 'AlphaNum',
                    is: function(s) {
                        return false;
                    },
                    format: function(s) {
                        s = '' + s;
                        s = s.toUpperCase();
                        if (isNaN(s)) {
                            return 'ZZ' + s;
                        }
                        else {
                            return 'AA' + PadString(s, '00000000');
                        }
                    },
                    type: 'text'
                });

                $.tablesorter.addParser({
                    id: 'DD-MMM-YY',
                    is: function(s) {
                        return false;
                    },
                    format: function(s) {
                        s = '' + s; //Make sure it's a string
                        var hit = s.match(/(\d{2})-([A-Za-z]{3})-(\d{2})/);
                        if (hit && hit.length == 4) {
                            return hit[3] + months[hit[2].toUpperCase()] +
hit[1];
                        }
                        else {
                            return s;
                        }
                    },
                    type: 'text'
                });


                $("#myTable").tablesorter({
                    headers: {
                        0: {
                            sorter: 'AlphaNum'
                        },
                        6: {
                            sorter: 'DD-MMM-YY'
                        }
                    }
                });

            });
            function PadString(str, pad) {
                if (pad == undefined) { pad = "00"; }
                str = "" + pad + str;
                return Right(str, pad.length);
            }
            function Right(str, n) {
                if (n <= 0) {
                    return '';
                }
                else if (n > String(str).length) {
                    return str;
                }
                else {
                    var iLen = String(str).length;
                    return String(str).substring(iLen, iLen - n);
                }
            }
            </script>
        <style type="text/css">
        body {
            font-size: 10px; font-family: Verdana;
        }
        #myTable {
        }
        #myTable th {
            background-color: #c0c0c0;
        }
        </style>
</head>
<body>

<div>Tablesorter custom Sort: </div>
<div>
    <table id="myTable">
    <thead>
    <tr>
        <th>Column A</th>
        <th>Last Name</th>
        <th>First Name</th>
        <th>Email</th>
        <th>Due</th>
        <th>Web Site</th>
        <th>Date</th>
    </tr>
    </thead>
    <tbody>
    <tr>
        <td>1</td>
        <td>Smith</td>
        <td>John</td>
        <td>[EMAIL PROTECTED]</td>
        <td>$50.00</td>
        <td>http://www.jsmith.com</td>
        <td>04-SEP-08</td>
    </tr>
    <tr>
        <td>15</td>
        <td>Bach</td>
        <td>Frank</td>
        <td>[EMAIL PROTECTED]</td>
        <td>$50.00</td>
        <td>http://www.frank.com</td>
        <td>09-JUN-08</td>
    </tr>
    <tr>
        <td>8</td>
        <td>Doe</td>
        <td>Jason</td>
        <td>[EMAIL PROTECTED]</td>
        <td>$100.00</td>
        <td>http://www.jdoe.com</td>
        <td>22-OCT-07</td>
    </tr>
    <tr>
        <td>Smith</td>
        <td>Conway</td>
        <td>Tim</td>
        <td>[EMAIL PROTECTED]</td>
        <td>$50.00</td>
        <td>http://www.timconway.com</td>
        <td>01-APR-08</td>
    </tr>
    <tr>
        <td>Youk</td>
        <td>Jones</td>
        <td>Bob</td>
        <td>[EMAIL PROTECTED]</td>
        <td>$47.00</td>
        <td>http://www.espn.com</td>
        <td>11-MAR-07</td>
    </tr>
    </tbody>
    </table>
</div>


</body>
</html>

Reply via email to