2016-06-28 70 views
0

我正在构建一个帮助台应用程序。我有一个名为TicketDetail的模型,它有一个使用数据表通过JSON获取数据的表。这是为了定期重新计算票证已打开的时间。所花费的时间由一个简单的助手格式化,所以格式为“dd:hh:mm”,但它应该按时间(存储为小数)和权重进行排序。这里的数据表定义以另一个值排序Rails DataTable列

var table = $('#ticket_details').DataTable({ 
order: [[ 8, "desc" ], [ 9, "desc" ], [ 2, "asc" ]], 
stateSave: true, 
deferRender: true, 
ajax: $('#ticket_details').data('source'), 
"columns": [ 
{ "data": "reference_number" }, 
{ "data": "location" }, 
{ "data": "title" }, 
{ "data": "parent", className: "hidden-md hidden-sm hidden-xs" }, 
{ "data": { _:"time_display.time", sort: "time_display.decimal_time"}}, 
{ "data": "created_by", className: "hidden-md hidden-sm hidden-xs" } 
] 
}); 

setInterval(function() { 
table.ajax.reload(null, false); }, 60000); 

这里有一个简化的样本记录,其中所述票已经开放3天,6小时后,用X2(即加权3.25 * 2 = 6.5:

{ 
data: [ 
    { 
    id: 140, 
    parent: null, 
    title: "[", 
    location: "<a href="/en-GB/stores/123">Bond St</a>", 
    ticket_sla: "16 Hours", 
    reference_number: "<a href="/en-GB/ticket_details/140/edit">1606210001</a>", 
    ticket_sla_weighting: 2, 
    time_display: { 
    time: "<span class = "label label-danger">03:06:00</span>", 
    decimal_time: 6.5 
    } 
] 
} 

的问题在于,如果我显示decimal_time,则数据表的排序正确,但只要将格式化的时间放入类中,它就按紧接着冒号的左边的天数排序(所以03:06:00和03:18:00不会正确排序)

回答

1

For Date/T IME在数据表中的排序,您需要使用它的排序插件

例如, 您需要包括这个js文件:

//cdnjs.cloudflare.com/ajax/libs/moment.js/2.8.4/moment.min.js 
//cdn.datatables.net/plug-ins/1.10.12/sorting/datetime-moment.js 

,然后,在你的jQuery以此为

$.fn.dataTable.moment('HH:mm MMM D, YY'); // Pass your date time format as param 

进行更深入的参考请查阅:

Sorting Plugins

Ultimate date/time sorting plugin

+0

谢谢,我会检查那些,但。我不想按日期时间排序。我想要一个格式化的html标签,按浮点排序。例如。 “03:06:00”按6.5排序。 – thenapking

+0

是的,您也可以这样做,请检查参考链接 –

+0

在这种情况下,您需要向dataTable添加一列,然后对其进行排序并隐藏该列 –