Здравствуйте!!! Возникла следующая проблема.
Реализовал custom sort в DataTable по последнему столбцу. В браузере InternetExplore сортируется всё корректно. В chrome, yandex, firefox кастомная сортировка не работает. При уменьшении количества строк на 5 сортировка работает корректно. Подскажите пожалуйста, может возможно решить этот вопрос?
http://webix.com/snippet/e5abd552
Извиняюсь, вот корректный пример http://webix.com/snippet/cffd3fad
Вот пример с корректно работающей сортировкой: http://webix.com/snippet/c8604f5a
Ещё раз извиняюсь))) На текст под таблицей внимания прошу не обращать) Поздно уже, внимательности не осталось(( Заранее большое спасибо!
В Safari сортировка также работает корректно.
Здравствуйте!
При сортировке в Webix используется нативный Javascript метод sort, а разные браузеры применяют разные алгоритмы для сортировки.
В Chrome и Firefox пары значений, для которых возвращается 0, становятся взаимозаменяемы для следующих сравнений, поэтому алгоритм даже не доходит для сравнения нужных нам элементов массива.
К тому же, он может менять местами равные элементы массива как угодно.
Решение - нужно сортировать данные по какому-либо параметру в любом случае. Пусть это будет id (у каждого элемента данных есть id, заданная или автоматически сгенерированная). То есть, элементы, у которых нет fileSize, сортируются по id.
function sortBySize(a, b){
if(!a.isDir && !b.isDir )
return a.fileSize - b.fileSize;
else
return a.id*1 - b.id;
}
Здравствуйте! Большое спасибо за ответ!
К сожалению предложенный Вами метод сортировки работает тоже некорректно.
У меня была задумка сделать что-то на подобие файлового менеджера TotalCommander. В нём при сортировке по полю размера файла, сортировка каталогов не производится. Их нужно оставлять на своём месте. А сортировать только файлы. При Вашем решении каталоги всё равно продолжают сортироваться…
в вашем случае надо перехватить направление сортировки и, при убывающей в случае isDir, умножать на -1
что-то в этом роде http://webix.com/snippet/e4d775d2
intregal, спасибо большое за помощь!!! На первый взгляд всё работает! Завтра попробую и обязательно отпишусь! Ещё раз большое спасибо!
Здравствуйте! Потестировал сортировку в разных браузерах - всё работает просто замечательно! Большое спасибо за помощь!