2016-06-28 35 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添加一列,然後對其進行排序並隱藏該列 –