Пользовательский анализатор даты в jQuery Tablesorter - PullRequest
0 голосов
/ 06 июня 2018

Я искал по форумам и не мог найти ситуацию, похожую на мою, поэтому я подумал, может ли кто-нибудь здесь помочь.

У меня есть динамически генерируемая таблица, которая содержит столбец с «датами выпуска», которые я хотел бы отсортировать по дате.Проблема в том, что значениям даты в этом столбце предшествует количество выпусков в скобках.

Возможными значениями в этом столбце будут полная отметка даты и времени с обозначением AM / PM и с предшествующим номером или выпусками или словом «Нет».Например, это некоторые фактические значения из таблицы данных:

None
[1] 1/24/2008 5:53:35 PM    
[1] 7/31/2012 11:32:50 AM   
[10] 3/29/2013 2:59:04 PM   
[3] 12/17/2014 2:43:27 PM   
[1] 1/9/2015 6:48:31 PM
[4] 1/9/2015 7:02:09 PM 
[4] 1/30/2015 11:25:20 AM   
[2] 12/27/2016 12:32:02 PM  
[2] 11/16/2017 11:04:22 AM

Из-за дополнительных символов, предшествующих дате, встроенная сортировка работает неправильно.Я добавил следующий параметр в свой код, чтобы назначить пользовательский синтаксический анализатор для столбца, который является третьим из перечисленных в таблице:

headers: 2: { sorter: 'DateParser' }

И вот код для моего синтаксического анализатора, чтобы удалить первые символыоставляя только дату и время:

$.tablesorter.addParser({
    id: 'DateParser',
    is: function(s) {
        return false;
    },
    format: function(s) {
        var datesort;
        if (s != "None") {
            var livereleasedate = s.split(']');
            var datetime = livereleasedate[1].trim();
            console.log(datetime);
            datesort = datetime;
        }
        else {
            datesort = s;
        }
        return datesort;
    },
    type: 'text'
});

К сожалению, это все еще не совсем правильно.Похоже, что значения месяца и дня сортируются в правильном порядке, а остальная часть строки - нет.Когда я нажимаю на заголовок столбца, чтобы отсортировать значения, я получаю следующее:

[1] 1/9/2015 6:48:31 PM
[4] 1/9/2015 7:02:09 PM
[1] 1/24/2008 5:53:35 PM
[4] 1/30/2015 11:25:20 AM
[10] 3/29/2013 2:59:04 PM
[1] 7/31/2012 11:32:50 AM
[2] 11/16/2017 11:04:22 AM
[3] 12/17/2014 2:43:27 PM
[2] 12/27/2016 12:32:02 PM
None

Есть предложения, как это решить?

Заранее спасибо.

1 Ответ

0 голосов
/ 08 июня 2018

Попробуйте синтаксический анализатор extractMMDDYYYY, доступный в файле parser-date-extract.js, который является частью моего форка таблиц сортировки .Этот синтаксический анализатор должен работать с оригинальным сортировщиком таблиц ... demo

$(function() {
  $('table').tablesorter({
    theme: 'blue',
    headers: {
      0: { sorter: "extractMMDDYYYY" }
    }
  });
});
...