Я отлично инициализирую свою таблицу данных, и все работает, за исключением того, что сортировка некоторых столбцов занимает много времени (3–5 секунд). У меня всего около 350 строк, но около 25 столбцов (не все видны сразу).
Я делаю что-то вроде этого, чтобы сделать столбец видимым, а затем отсортировать.
Код: Выделить всё
$('#main_index').on('click', 'thead th', function() {
var idx = table.column(this).index();
selected_data = table.column(idx).dataSrc();
if (selected_data == 'diabetes_full') {
table.order([4, 'desc']);
table.columns('.col_rank').visible(false);
table.column(3).visible(true);
table.draw();
$(".rank").hide();
$("#diabetes_full_rank").show();
} else if (selected_data == 'pop_with_diabetes') {
table.order([6, 'desc']);
table.columns('.col_rank').visible(false);
table.column(5).visible(true);
table.draw();
$(".rank").hide();
$("#pop_with_diabetes_rank").show();
}
});
Как я уже сказал, это работает, но иногда немного медленно. Я не уверен, что смогу найти способ ускорить процесс (предложения приветствуются), но мне хотелось бы иметь возможность показывать сообщение о загрузке, когда сортировка все еще происходит, и скрывать его, когда сортировка завершена.
Я пробовал все, что работает с table.draw(), включая:
Код: Выделить всё
$.when(table.draw()).then(//function to hide loading message);
Я пробовал использовать drawCallback и некоторые другие. Я заметил, что отрисовка таблицы происходит практически мгновенно, но фактическое завершение сортировки происходит после этого. Однако я не знаю, как привязать событие к завершению сортировки или есть ли в таблицах данных способ справиться с этим. Есть предложения?