@@ -2,23 +2,19 @@ module AwesomeSort
2
2
module AwesomeSortHelper
3
3
def column_sort ( args = { } )
4
4
args [ :extra ] ||= { }
5
+ defaults = AwesomeSort . defaults
6
+
5
7
# Should pass it column_name, link_name, controller_name and
6
8
# optionally width, html_options and header_classes
7
- args . reverse_merge! (
8
- header_classes : [ ] ,
9
- html_options : { }
10
- )
9
+ args . reverse_merge! ( header_classes : [ ] , html_options : { } )
10
+ sort_order = args [ :sort_order ] || defaults [ :sort_order ]
11
+
11
12
c_method = args [ :controller_name ] + "_path"
12
13
klass = [ "orderable" ]
13
- klass << "order-#{ params [ : sort_order] } " if params [ :sort_by ] == args [ :column_name ]
14
+ klass << "order-#{ sort_order } " if args [ :sort_by ] == args [ :column_name ]
14
15
klass << args [ :header_classes ]
15
16
klass . flatten
16
- sort_order =
17
- if params [ :sort_by ] == args [ :column_name ] && params [ :sort_order ] == "asc"
18
- "desc"
19
- else
20
- "asc"
21
- end
17
+
22
18
content_tag ( :th , width : args [ :width ] , class : klass , data : { order_term : args [ :column_name ] } ) do
23
19
link_to (
24
20
args [ :link_name ] ,
@@ -30,6 +26,7 @@ def column_sort(args = {})
30
26
31
27
def sort ( scope , sort_by , sort_order )
32
28
klass = scope . model . name . tableize . to_sym
29
+ defaults = AwesomeSort . defaults
33
30
34
31
if sort_by
35
32
if sorter = AwesomeSort . sorters [ klass ] [ sort_by . to_sym ]
@@ -38,11 +35,13 @@ def sort(scope, sort_by, sort_order)
38
35
scope . order ( sort_by => sort_order )
39
36
end
40
37
else
41
- if default_sorter = AwesomeSort . defaults [ klass ]
38
+ own_defaults = defaults [ klass ]
39
+
40
+ if ( default_sorter = own_defaults ? own_defaults [ :sort_by ] : defaults [ :sort_by ] )
42
41
if default_sorter . respond_to? ( :call )
43
42
default_sorter . call ( scope )
44
43
else
45
- scope . order ( default_sorter => 'asc' )
44
+ scope . order ( default_sorter => ( own_defaults ? defaults [ klass ] [ :sort_order ] : defaults [ :sort_order ] ) )
46
45
end
47
46
else
48
47
scope
0 commit comments