Есть массив строк в формате:
[{
row: {
cellName: {
value: ""
}
}
}]
Каждая ячейка шапки содержит ключ, который равен ключу ячейки в row.
Алгоритм пересортировки выглядит так:
resort = (array) ->
return array.sort (a, b) ->
if typeof a.row[that.currentSort.value].value == 'number' && typeof b.row[that.currentSort.value].value == 'number'
modifier = 1
if that.currentSort.dir == 'desc'
modifier = -1
if a.row[that.currentSort.value].value < b.row[that.currentSort.value].value
return -1 * modifier
if a.row[that.currentSort.value].value > b.row[that.currentSort.value].value
return 1 * modifier
return 0
else
console.log("sort like strings: ", a.row[that.currentSort.value].value, b.row[that.currentSort.value].value)
modifier = 1
if that.currentSort.dir == 'desc'
modifier = -1
if a.row[that.currentSort.value].value.toLowerCase() < b.row[that.currentSort.value].value.toLowerCase()
console.log('return: ', -1 * modifier)
return -1 * modifier
if a.row[that.currentSort.value].value.toLowerCase() > b.row[that.currentSort.value].value.toLowerCase()
console.log('return: ', 1 * modifier)
return 1 * modifier
console.log('return 0')
return 0
В таблицах есть пагинация, которая активируется путём добавления ключа hideByPagi в объект массива, если длина массива больше числа строк в одной странице пагинации.
Сортировка работает правильно, но при попытке сдружить его с пагинацией вызывает баги. Я не могу понять почему
Я пытался:
return array.sort (a, b) ->
if a.hideByPagi && b.hideByPagi
return 0
if a.hideByPagi && !b.hideByPagi
return 1
if b.hideByPagi && !a.hideByPagi
return -1
...
В разных комбинациях. Ни одна не дала корректный результат.