DataTables не сохраняет состояние поиска диапазона дат - PullRequest
0 голосов
/ 12 июня 2018

Я использую таблицы данных для отображения списка событий разных типов.Помимо глобального текстового поиска по умолчанию мне нужно: 1. отфильтровать список по типу события 2. отфильтровать список по диапазону дат (показать только сегодня -> бесконечность) 3. сохранить состояние таблицы для текущего сеанса.

Состояние сохраняется как ожидалось за исключением для поиска в диапазоне дат, который всегда сбрасывается.Я что-то упустил или пользовательские функции поиска выходят за рамки сохранения состояния?Вот соответствующий код в jQuery:

Кулак Я добавляю свою собственную функцию поиска с помощью предоставленного метода.Это работает, за исключением того, что его состояние не сохраняется

// Extend search() 
var threshold_timestamp = xxxxxxxxxxxx // set for beginning of today)
$.fn.dataTable.ext.search.push(
    function( settings, data, dataIndex) {
        var timestamp = parseInt(data[1]); // event date timestamp
        if (timestamp > threshold_timestamp) {
            return true;
        }
        return false;
    }
);

Затем я добавляю прослушиватели для select, используемого для переключения между параметрами типа события ('', 'Event', 'Sports', 'Dance'...) и пользователь кнопки для включения / выключения фильтра диапазона дат

$('#filter-by-type').on('change', function() {
    table.columns(0).search( $(this).val() ).draw();
}); 

$('#dt-history').on('click', function() {
    // Logic to toggle threshold_timestamp between 0 or value
    table.draw();
});

Затем я вызываю DataTables

var table = $('#example').DataTable( {
    ajax: "datasource.json",
    stateSave : true,
    stateDuration: -1,
    columns: [
        { data: "type"}, //str as 'Sport','Dance'  
        { data: "date"}  // int as 1528572000      
    ]
});

Мне удалось почесать голову в сторону и «сохранитьпоиск по дате "используя localalstorage, но это взломать.При загрузке страницы я запускаю нажатие кнопки, чтобы выполнить поиск, поэтому изначально таблицы кажутся пустыми, появляется сообщение «Нет данных в таблице», а затем отображаются отфильтрованные результаты.Как второй взлом я подавлю это сообщение, чтобы, когда действительно не будет данных ... не будет сообщения :(

...