简体   繁体   中英

Datatables sorting time column

I'm using jQuery DataTables and I have a problem when I'm sorting my time column with this format mm:ss . For example when I sort this 00:08 the sort does something but this is not good. I have in my column:

00:08
00:15
00:01
01:20
00:16
02:11

So the sort doesn't work. Do you know how can I sort my time column?

Here is my code :

$('#table').DataTable({
    dom: "t<'col-sm-5'i><'col-sm-7'p>",
    autoWidth: false,
    serverSide: true,
    aaSorting: [[0, 'desc']],
    rowId: 'id',
    lengthChange: false,
    ajax: {
        url: 'index',
        method: 'POST'
    }
    columns: [
        {data: "id", width: '5%'},
        {data: "name", width: '10%', orderData: [ 1, 0 ]},
        {data: "user_name", width: '10%', orderData: [ 2, 0 ]},
        {data: "email", width: '35%', orderData: [ 3, 0 ]},
        {data: "duration", render: duration_time, width: '10%', type: "time",orderData: [ 4, 0 ]},
        {data: "incomplete", render: incomplete, width: '30%', orderData: [ 5, 0 ]}
    ]
});

Here is the function for the render parameter :

function duration_time(data, type, dataToSet){
    var start =  dataToSet.date_start;
    var end =  dataToSet.date_end;
    var time = moment.utc(moment(end, "YYYY-MM-DD HH:mm:ss").diff(moment(start, "YYYY-MM-DD HH:mm:ss"))).format("mm:ss");

    return time;
}

function incomplete(data, type, dataToSet){
    return dataToSet.incomplete == 0 ? 'Complete' : 'Incomplete';
}

You have to use Sorting plug-ins .

It allows you to sort the columns based on type and not only on data.

Your code will be like this:

<script type="text/javascript" src="jquery.dataTables.js"></script>
<script type="text/javascript" src="dataTables.numericComma.js"></script>
<script type="text/javascript">
    $(document).ready(function() {
        $('#example').dataTable( {
            "columnDefs": [
                { "type": "time", targets: 3 }
            ]
        } );
    } );
</script>

I had the same issue today and found the solution. Here is the code.

 <script type="text/javascript" src="//cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js"></script>
 <script type="text/javascript" src="//cdn.datatables.net/plug-ins/1.10.19/sorting/time.js"></script>

    <script type="text/javascript">
        $(document).ready(function() {
            $('#example').dataTable( {
                columnDefs: [
                         { type: 'time-uni', targets: 7 }
                    ]
            } );
        } );
    </script>

You can also check other sorting plugins here: https://cdn.datatables.net/plug-ins/1.10.19/sorting/

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM