SortLink PORO: Make `field` an ivar, rename things
This commit is contained in:
parent
846b1687ec
commit
cc10b3a825
|
@ -48,10 +48,8 @@ module Ransack
|
||||||
unless Search === search
|
unless Search === search
|
||||||
raise TypeError, 'First argument must be a Ransack::Search!'
|
raise TypeError, 'First argument must be a Ransack::Search!'
|
||||||
end
|
end
|
||||||
s = SortLinkParser.new(search, attribute, args, params)
|
s = SortLink.new(search, attribute, args, params)
|
||||||
link_to(
|
link_to(s.name, url(routing_proxy, s.url_options), s.html_options(args))
|
||||||
s.name, url(routing_proxy, s.options_for_url), s.html_options(args)
|
|
||||||
)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
@ -72,14 +70,14 @@ module Ransack
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
class SortLinkParser
|
class SortLink
|
||||||
def initialize(search, attribute, args, params)
|
def initialize(search, attribute, args, params)
|
||||||
@search = search
|
@search = search
|
||||||
@params = params
|
@params = params
|
||||||
field = attribute.to_s
|
@field = attribute.to_s
|
||||||
sort_fields = extract_sort_fields_and_mutate_args!(field, args).compact
|
sort_fields = extract_sort_fields_and_mutate_args!(args).compact
|
||||||
@current_dir = existing_sort_direction(field)
|
@current_dir = existing_sort_direction
|
||||||
@label_text = extract_label_and_mutate_args!(field, args)
|
@label_text = extract_label_and_mutate_args!(args)
|
||||||
@options = extract_options_and_mutate_args!(args)
|
@options = extract_options_and_mutate_args!(args)
|
||||||
@hide_indicator = @options.delete :hide_indicator
|
@hide_indicator = @options.delete :hide_indicator
|
||||||
@default_order = @options.delete :default_order
|
@default_order = @options.delete :default_order
|
||||||
|
@ -94,7 +92,7 @@ module Ransack
|
||||||
.html_safe
|
.html_safe
|
||||||
end
|
end
|
||||||
|
|
||||||
def options_for_url
|
def url_options
|
||||||
@params.merge(
|
@params.merge(
|
||||||
@options.merge(
|
@options.merge(
|
||||||
@search.context.search_key => search_and_sort_params))
|
@search.context.search_key => search_and_sort_params))
|
||||||
|
@ -110,19 +108,19 @@ module Ransack
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def extract_sort_fields_and_mutate_args!(field, args)
|
def extract_sort_fields_and_mutate_args!(args)
|
||||||
if args.first.is_a? Array
|
if args.first.is_a? Array
|
||||||
args.shift
|
args.shift
|
||||||
else
|
else
|
||||||
[field]
|
[@field]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def extract_label_and_mutate_args!(field, args)
|
def extract_label_and_mutate_args!(args)
|
||||||
if args.first.is_a? String
|
if args.first.is_a? String
|
||||||
args.shift
|
args.shift
|
||||||
else
|
else
|
||||||
Translate.attribute(field, :context => @search.context)
|
Translate.attribute(@field, :context => @search.context)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -164,7 +162,7 @@ module Ransack
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def existing_sort_direction(attr_name)
|
def existing_sort_direction(attr_name = @field)
|
||||||
if sort = @search.sorts.detect { |s| s && s.name == attr_name }
|
if sort = @search.sorts.detect { |s| s && s.name == attr_name }
|
||||||
sort.dir
|
sort.dir
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue