Class: AdminBits::AdminResource
- Inherits:
-
Object
- Object
- AdminBits::AdminResource
show all
- Defined in:
- lib/admin_bits/admin_resource.rb
Defined Under Namespace
Classes: Paginator, PathHandler
Instance Attribute Summary collapse
Instance Method Summary
collapse
Constructor Details
#initialize(name, resource, options, action_name, request_params = {}) ⇒ AdminResource
Returns a new instance of AdminResource.
5
6
7
8
9
10
11
12
13
14
15
|
# File 'lib/admin_bits/admin_resource.rb', line 5
def initialize(name, resource, options, action_name, request_params = {})
@resource = resource
@options = options
@request_params = request_params
@action_name = action_name
@name = name
raise ":path must be provided" unless @options[:path]
sanitize_params
end
|
Instance Attribute Details
#action_name ⇒ Object
Returns the value of attribute action_name.
3
4
5
|
# File 'lib/admin_bits/admin_resource.rb', line 3
def action_name
@action_name
end
|
#name ⇒ Object
Returns the value of attribute name.
3
4
5
|
# File 'lib/admin_bits/admin_resource.rb', line 3
def name
@name
end
|
#options ⇒ Object
Returns the value of attribute options.
3
4
5
|
# File 'lib/admin_bits/admin_resource.rb', line 3
def options
@options
end
|
#request_params ⇒ Object
Returns the value of attribute request_params.
3
4
5
|
# File 'lib/admin_bits/admin_resource.rb', line 3
def request_params
@request_params
end
|
#resource ⇒ Object
Returns the value of attribute resource.
3
4
5
|
# File 'lib/admin_bits/admin_resource.rb', line 3
def resource
@resource
end
|
Instance Method Details
#convert_mapping(mapping) ⇒ Object
87
88
89
90
91
92
93
94
|
# File 'lib/admin_bits/admin_resource.rb', line 87
def convert_mapping(mapping)
raise "No order mapping specified for '#{order}'" if mapping.blank?
mapping = [mapping] if mapping.is_a?(String)
mapping.map {|m| "#{m} #{get_direction}"}.join(", ")
end
|
#default_asc ⇒ Object
32
33
34
|
# File 'lib/admin_bits/admin_resource.rb', line 32
def default_asc
options[:default_direction] == :asc ? "true" : "false"
end
|
#default_order ⇒ Object
28
29
30
|
# File 'lib/admin_bits/admin_resource.rb', line 28
def default_order
options[:default_order].to_s
end
|
#filter_params ⇒ Object
36
37
38
|
# File 'lib/admin_bits/admin_resource.rb', line 36
def filter_params
(request_params[:filters] || {}).with_indifferent_access
end
|
#filtered_resource ⇒ Object
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
# File 'lib/admin_bits/admin_resource.rb', line 40
def filtered_resource
return_scope = resource
(options[:filters] || {}).each_pair do |scope_name, args|
if args.is_a?(Array)
args = args.map {|a| filter_params[a] }
return_scope = return_scope.send(scope_name, *args)
else
return_scope = return_scope.instance_exec filter_params, &args
end
end
return_scope
end
|
#get_direction ⇒ Object
83
84
85
|
# File 'lib/admin_bits/admin_resource.rb', line 83
def get_direction
request_params[:asc] != "true" ? "DESC" : "ASC"
end
|
#get_order ⇒ Object
73
74
75
76
77
78
79
80
81
|
# File 'lib/admin_bits/admin_resource.rb', line 73
def get_order
order = request_params[:order]
if order.blank?
nil
else
convert_mapping(options[:ordering][order.to_sym])
end
end
|
#get_page ⇒ Object
69
70
71
|
# File 'lib/admin_bits/admin_resource.rb', line 69
def get_page
request_params[:page]
end
|
#original_url ⇒ Object
61
62
63
|
# File 'lib/admin_bits/admin_resource.rb', line 61
def original_url
PathHandler.new(options[:path], request_params).path
end
|
#output ⇒ Object
56
57
58
59
|
# File 'lib/admin_bits/admin_resource.rb', line 56
def output
filtered_resource.order(get_order).page(get_page)
end
|
#sanitize_params ⇒ Object
17
18
19
20
21
22
23
24
25
26
|
# File 'lib/admin_bits/admin_resource.rb', line 17
def sanitize_params
@request_params = request_params.
with_indifferent_access.
reject do |k,v|
["action", "controller", "commit"].include?(k) || v.blank?
end
request_params[:order] ||= default_order
request_params[:asc] ||= default_asc
end
|
#url(params = {}) ⇒ Object
65
66
67
|
# File 'lib/admin_bits/admin_resource.rb', line 65
def url(params = {})
PathHandler.new(options[:path], request_params).with_params(params)
end
|