Здесь сортировка по дате окончания в порядке сортировки по дню / месяцу, а не по году. Для сортировки я использовал date-eu.js.Здесь я упоминаю код для этого:
$.extend($.fn.dataTableExt.oSort, {
"date-eu-asc": function (a, b) {
console.log("inisde..js");
if (a == '-') return 1;
else if (b == '-') return -1;
else {
var aDay = a.split('/')[0]
var aMonth = a.split('/')[1]
var aYear = a.split('/')[2]
var a = new Date(aMonth + "/" + aDay + "/" + aYear).getTime();
console.log("inisde..js a1"+a);
var bDay = b.split('/')[0]
var bMonth = b.split('/')[1]
var bYear = b.split('/')[2]
var b = new Date(bMonth + "/" + bDay + "/" + bYear).getTime();
console.log("inisde..js b1"+b);
return ((a < b) ? -1 : ((a > b) ? 1 : 0));
}
},
"date-eu-desc": function (a, b) {
if (a == '-') return 1;
else if (b == '-') return -1;
else {
var aDay = a.split('/')[0]
var aMonth = a.split('/')[1]
var aYear = a.split('/')[2]
var a = new Date(aMonth + "/" + aDay + "/" + aYear).getTime();
console.log("inisde..js a2"+a);
var bDay = b.split('/')[0]
var bMonth = b.split('/')[1]
var bYear = b.split('/')[2]
var b = new Date(bMonth + "/" + bDay + "/" + bYear).getTime();
console.log("inisde..js b2"+b);
return ((a < b) ? 1 : ((a > b) ? -1 : 0));
}
}
});
dataTable code:
self.dataTable = function() {
var table = $('#projectList').DataTable({
"ordering" : true,
"order": [[ 3, "asc" ]],
"columnDefs" : [{"targets":3, "type":"date-eu"}],
"ajax": {
"url": PROJECTS_URL,
"dataSrc": function ( jsonArry ) {
projectsData = jsonArry;
var arrData = jsonArry;
for(var a=0; a<arrData.length;a++){
var obj = arrData[a];
for(var key in obj){
if(key == "licenceStart"){
obj[key] = dateUtils.getFormattedDate(obj[key]);
}else if(key == "licenceEnd")
{
obj[key] = dateUtils.getFormattedDate(obj[key]);
/*if(obj[key] == today){
obj[key] = "<b style='color:red!important'>"+obj[key]+"</b>";
}*/
}
if(key == "isEnabled"){
if(obj[key] == true){
obj[key] = enabledString;
}else{
obj[key] = disabledString;
}
}
if(key == "apiProjectGuid"){
obj["actions"] = "<button id='btn-edit' class='btn button-small btn-edit'><span>Edit</span></button>"
+"<button id='btn-del' class='btn button-small btn-del'><span>Delete</span></button>"
;
}
}
}
console.log(arrData);
return arrData;
}
},
columns: [
{ "data": "projectName" },
{ "data": "projectAdminEmail" },
{ "data": "projectStatus" },
{ "data": "licenceStart" },
{ "data": "licenceEnd" },
{ "data": "isEnabled" },
{ "data": "actions" }
],
"createdRow": function ( row, data, index ) {
if ( data['licenceEnd'] <= today) {
$('td', row).addClass('expiredProject');
}else if((data['projectStatus'] == 'EXPIRED_TRIAL') || (data['projectStatus'] == 'SUSPENDED') || (data['projectStatus'] == 'COMMERCIAL_EXPIRED')){
$('td', row).addClass('expiredProject');
}
},
});
$('#projectList tbody').on('click', 'tr', function (event) {
$(this).toggleClass('selected');
return;
});
$('#projectList tbody').on( 'click', 'button#btn-access ', function (event) {
var data = table.row( $(this).parents('tr') ).data();
doToggleProjectAccess(data.apiProjectGuid,data.projectAdminEmail);
$('#projectList').DataTable().ajax.reload(null,false);
} );
$('#projectList tbody').on( 'click', 'button#btn-edit ', function (event) {
var data = table.row( $(this).parents('tr') ).data();
doEdit({
guid:data.apiProjectGuid,
projectName : data.projectName,
projectAdmin :data.projectAdminEmail,
projectStatus :data.projectStatus,
projectStart:data.licenceStart,
projectEnd:data.licenceEnd
});
$("#editModal").modal();
} );
$('#projectList tbody').on( 'click', 'button#btn-del ', function (event) {
var data = table.row( $(this).parents('tr') ).data();
permenantDeleteProject(data.apiProjectGuid);
} );
return table;
}
извлечение даты со стороны конца в длинном и отформатированное во внешнем интерфейсе применение сортировки, но не работает в течение года