DataTables момент сортировки по пользовательскому формату - PullRequest
0 голосов
/ 27 сентября 2018

Я использую DataTables и момент и у меня есть собственный формат даты на моей таблице.Как я могу отсортировать столбец по моментам?Здесь вы можете видеть, что сортировка не работает корректно в столбце updated_at.Я использую Datatable момент.Формат Update_at уже изменен Carbon на модели.Here you can see column

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.19/css/jquery.dataTables.css">


<div class="table-responsive">
  <table id="tickets-table" class="table table-bordered">
    <thead>
      <tr>
        <th>Name</th>
        <th>User name</th>
        <th>Last update</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td>saddsfdsafdfsafsa</td>
        <td>Sqe Begush</td>
        <td>1 hour ago</td>
      </tr>
      <tr>
        <td>testing</td>
        <td>User name</td>
        <td>8 hours ago</td>
      </tr>
      <tr>
        <td>another</td>
        <td>another user</td>
        <td>4 days ago</td>
      </tr>
      <tr>
        <td>another testing</td>
        <td>user user</td>
        <td>1 week ago</td>
      </tr>
      <tr>
        <td>another testingsss</td>
        <td>user user11</td>
        <td>1 year ago</td>
      </tr>
      <tr>
        <td>another test</td>
        <td>user userqww11</td>
        <td>4 months ago</td>
      </tr>
    </tbody>
  </table>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.8.4/moment.min.js"></script>
<script src="https://cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js">
</script>
<script src="https://cdn.datatables.net/1.10.19/js/dataTables.bootstrap4.min.js"></script>
<script src="//cdn.datatables.net/plug-ins/1.10.12/sorting/datetime-moment.js"></script>
<script>
  $(document).ready(function() {
    //$.fn.dataTable.moment("YYYY/MM/DD");
    $('.table').DataTable();
  });
</script>

Ответы [ 2 ]

0 голосов
/ 27 сентября 2018

Происхождение дат неясно.Если вы передаете moment().fromNow() самостоятельно, просто прекратите делать это, когда тип display равен sort (см. Ниже).Если вы уже получили отформатированные данные из источника, вы можете использовать библиотеку типа chrono , которая может анализировать «человеческие даты» в «системные даты»:

var table = $('#tickets-table').DataTable({
  columnDefs: [
    { targets: 2,
      render: function(data, type) {
        if (type == 'sort') {
          var date = chrono.parseDate(data)
          return new Date(date).valueOf()
        } 
        return data
      }
    }
  ]
})  

демо с <table> выше -> http://jsfiddle.net/mw0c3f91/

0 голосов
/ 27 сентября 2018

Вы должны преобразовать даты столбцов в требуемый формат, а затем отсортировать таблицу.

момент (столбец [0]). FromNow ();

...