Пользовательская дата Tablesorter с возможными другими значениями - PullRequest
0 голосов
/ 24 февраля 2011

Я использую последнюю версию плагина tablesorter, и мне нужно отсортировать столбец особым образом.

Значения могут быть такими:

Values can be like this

Мне нужно упорядочить по дате, поэтому такие значения, как Q4 (31-12-2010) должны отображаться как первые

Формат даты: дд-мм-гггг

Это вообще возможно?

Ответы [ 2 ]

1 голос
/ 11 марта 2011

Я переделал это, используя их собственные парсеры

http://jsfiddle.net/rTrqz/2/

Кажется, работа работает для ваших целей.

Важные части здесь:

$.tablesorter.addParser({
    id: 'quarters',
    is: function (s) {
        return false;
    },
    format: function (s) {
        s = s.toLowerCase().replace(/q[0-9]/,'').replace(/\(/,'').replace(/\)/,'');            
        match = s.match(/(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20\d\d)/);
        return match[3] + match[2] + match[1]; 
    },
    type: 'text'
});
1 голос
/ 24 февраля 2011

Вот пример того, как я бы это сделал:

     $.tablesorter.addParser({
        id: 'quarters',
        is: function (s) {
            return false;
        },
        format: function (s) {
            var match = s.match(/(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20\d\d)/);
            if (match)
            {
               return match[3] * 1000 - match[2] * 100 - match[1] * 10;                
            }
            else return 0;
        },
        type: 'text'
    });

    $(document).ready(function () {
        $("table").tablesorter({
            headers: {
                0: {
                    sorter: 'quarters'
                }
            }
        });
    });                  

Вы можете отрегулировать возврат для части с недействительной датой на любое целое число, которое вы хотите (0 означает, что оно наступило раньше самой ранней даты.)

...