App.TableSortable = getCellValue: (row, index) -> $(row).children('td').eq(index).text() comparer: (index) -> (a, b) -> valA = App.TableSortable.getCellValue(a, index) valB = App.TableSortable.getCellValue(b, index) return if $.isNumeric(valA) and $.isNumeric(valB) then valA - valB else valA.localeCompare(valB) initialize: -> $('table.sortable th').click -> table = $(this).parents('table').eq(0) rows = table.find('tr:gt(0)').not('tfoot tr').toArray().sort(App.TableSortable.comparer($(this).index())) @asc = !@asc if !@asc rows = rows.reverse() i = 0 while i < rows.length table.append rows[i] i++ return