Таблицы данных - игнорировать значения даты 01/01/0001 при сортировке - PullRequest
0 голосов
/ 08 мая 2020

У меня есть столбец активности за последний день в таблице данных. Если строка таблицы содержит значение даты по умолчанию, например 01/01/0001 , в столбце даты я просто заменяю текст no activity . Проблема в том, что при сортировке дата последнего столбца даты активности не сортируется. Как я могу отсортировать столбец таблицы данных, если в столбце даты есть текст по сравнению со значением даты по умолчанию.

Я использую этот код, он отлично работает с нулевыми датами. Пожалуйста помоги. Заранее спасибо!

          (function (factory) {
            if (typeof define === "function" && define.amd) {
                define(["jquery", "moment", "datatables.net"], factory);
            } else {
                factory(jQuery, moment);
            }
            }
            (function ($, moment) {

            $.fn.dataTable.moment = function (format, locale, reverseEmpties) {
                var types = $.fn.dataTable.ext.type;

                // Add type detection
                types.detect.unshift(function (d) {
                    if (d) {
                        // Strip HTML tags and newline characters if possible
                        if (d.replace) {
                            d = d.replace(/(<.*?>)|(\r?\n|\r)/g, '');
                            //d = d.replace('No Activity', '');
                        }

                        // Strip out surrounding white space
                        d = $.trim(d);
                    }

                    // Null and empty values are acceptable
                    if (d === '' || d === null) {
                        debugger
                        return 'moment-' + format;
                    }

                    return moment(d, format, locale, true).isValid() ?
                        'moment-' + format :
                        null;
                });

                // Add sorting method - use an integer for the sorting
                types.order['moment-' + format + '-pre'] = function (d) {
                    if (d) {
                        // Strip HTML tags and newline characters if possible
                        if (d.replace) {
                            d = d.replace(/(<.*?>)|(\r?\n|\r)/g, '');
                        }

                        // Strip out surrounding white space
                        d = $.trim(d);
                    }

                    return !moment(d, format, locale, true).isValid() ?
                        (reverseEmpties ? -Infinity : Infinity) :
                        parseInt(moment(d, format, locale, true).format('x'), 10);
                };
            };

        }));
...