Подтвердить что ты не робот

Обработка и сортировка столбцов JQuery Datatables

Я работаю с datatable, который включает столбец timestamps mysql в формате YYYY-MM-DD HH:MM:SS. Моя таблица будет первоначально сортироваться по этому столбцу. Datatables правильно автоопределяет формат временных меток и сортирует его соответствующим образом.

Теперь я пытаюсь изменить внешний вид этого столбца, чтобы он был более удобным для пользователя, но не влиял на то, как он сортируется. Итак, я использую следующие функции columns.render:

{
        "data":"created_at",
        "name":"date",
        "visible":true,
        "title":"Date Created",
        "render": function(data, type, full, meta){
                var date = new Date(data);
                var options = {year: "numeric", month: "long", day: "numeric"};

                return date.toLocaleDateString('en-US', options);
        }
}

Как только я это сделаю, сортировка перестанет работать корректно. У меня создалось впечатление, что функция render должна влиять только на отображение данных, но ее следует сортировать в соответствии с базовыми данными этого объекта данных строки. Это документы, которые я пытаюсь использовать (http://datatables.net/reference/option/columns.render).

Кто-нибудь знает, как я могу сортировать на основе фактической метки времени, но показывать более удобную для пользователя дату?

4b9b3361

Ответ 1

Я думаю, что понял. Мне просто нужно было сказать, что функция рендеринга работает только с типами "отображения":

{
        "data":"created_at",
        "name":"date",
        "visible":true,
        "title":"Date Created",
        "render": function(data, type, full, meta){
                if(type == "display"){
                        var date = new Date(data);
                        var options = {year: "numeric", month: "long", day: "numeric"};

                        return date.toLocaleDateString('en-US', options);
                }

                return data;
        }
},

Ответ 2

Хорошо, если это серверный тип данных, что вы можете сделать, это отредактировать json непосредственно перед его передачей как в начале ssp.class.php в новых данных (скажите, используете ли вы старый)
ПРИМЕЧАНИЕ. В новых типах данных это встроенная функция, называемая formatter, которая делает то же самое, но вы можете использовать пользовательскую функцию, подобную этой

if ($j == 6) {
  if ($data[$i][$columns[$j]['db']] == 1) {
      $data[$i][$columns[$j]['db']] = '<label class="btn-danger disabled btn">Stopped</label>';
  } else {
      $data[$i][$columns[$j]['db']] = '<label class="btn-success disabled btn">Running</label>';
  }

здесь я просто редактирую 0 и 1 в своем db для остановки и запуска ярлыка вы можете сделать что-то вроде parse_date и сохранить переформатированный файл