Сортировка даты (возрастание-убывание) в таблице данных по месяцу и дню, но не по годам. Так что я хочу найти решение для этого в javaScript - PullRequest
0 голосов
/ 21 сентября 2019

Здесь сортировка по дате окончания в порядке сортировки по дню / месяцу, а не по году. Для сортировки я использовал 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;
     }

извлечение даты со стороны конца в длинном и отформатированное во внешнем интерфейсе применение сортировки, но не работает в течение года

...