active_facets 1.2.2 → 1.2.3
Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 84aaee9f8be13da53c3dbc1000012eeae6dd2837
|
4
|
+
data.tar.gz: b65c1280f5c33d77ecde385901c51f88d591a881
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5b060f4a3173117eaa143d14c786794748035b1a4e1e992080f64fd4b8e393635a6122a9ed0e017471e058aa528fb52ae80a51166655f641bb4d401b3ee5a829
|
7
|
+
data.tar.gz: f9588af0a223e4c19ba75954afe424e2e1bc0b0bb8a3ec3777288f3c89d710daa470fb8b32f304aca35ca8691362a3c23e760349faf988cc7056b320845f20a0
|
data/lib/active_facets.rb
CHANGED
@@ -5,6 +5,7 @@ require 'active_record'
|
|
5
5
|
require 'active_facets/errors/attribute_error'
|
6
6
|
require 'active_facets/errors/configuration_error'
|
7
7
|
require 'active_facets/errors/lookup_error'
|
8
|
+
require 'active_facets/filter'
|
8
9
|
require 'active_facets/acts_as_active_facet'
|
9
10
|
require 'active_facets/serializer/base'
|
10
11
|
require 'active_facets/serializer/facade'
|
@@ -53,7 +54,7 @@ module ActiveFacets
|
|
53
54
|
end
|
54
55
|
|
55
56
|
def self.global_filter(name)
|
56
|
-
ActiveFacets::
|
57
|
+
ActiveFacets::Filter.register_global(name, Proc.new)
|
57
58
|
end
|
58
59
|
|
59
60
|
def self.resource_mapper
|
@@ -10,36 +10,6 @@ module ActiveFacets
|
|
10
10
|
included do
|
11
11
|
end
|
12
12
|
|
13
|
-
module Filters
|
14
|
-
mattr_accessor :filters, :global_filters
|
15
|
-
self.filters, self.global_filters = {}, {}
|
16
|
-
|
17
|
-
def self.apply_globals_to(receiver)
|
18
|
-
global_filters.each do |filter_name, filter_method|
|
19
|
-
filter_method_name = receiver.acts_as_active_facet_options[:filter_method_name]
|
20
|
-
receiver.send(filter_method_name, filter_name, &filter_method)
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
# @return [Hash] all filters registered on this resource (and superclass)
|
25
|
-
def self.registered_filters_for(receiver)
|
26
|
-
receiver_filters = filters[receiver.name] ||= {}
|
27
|
-
receiver_filters.reverse_merge(registered_filters_for(receiver.superclass)) if has_registered_filters_for?(receiver.superclass)
|
28
|
-
receiver_filters
|
29
|
-
end
|
30
|
-
|
31
|
-
def self.register_filter_for(receiver, filter_name, filter_method_name)
|
32
|
-
receiver_filters = filters[receiver.name] ||= {}
|
33
|
-
receiver_filters[filter_name.to_sym] = filter_method_name.to_sym
|
34
|
-
receiver_filters
|
35
|
-
end
|
36
|
-
|
37
|
-
def self.has_registered_filters_for?(receiver)
|
38
|
-
filters.key?(receiver.name)
|
39
|
-
end
|
40
|
-
|
41
|
-
end
|
42
|
-
|
43
13
|
module ClassMethods
|
44
14
|
def acts_as_active_facet(options = {})
|
45
15
|
|
@@ -80,14 +50,15 @@ module ActiveFacets
|
|
80
50
|
filter_method_name ||= "registered_filter_#{filter_name}"
|
81
51
|
define_singleton_method(filter_method_name, filter_method) if filter_method
|
82
52
|
|
83
|
-
ActiveFacets::
|
53
|
+
ActiveFacets::Filter.register(self, filter_name, filter_method_name)
|
84
54
|
end
|
85
55
|
|
86
56
|
# Applies all filters registered with this resource on a ProxyCollection
|
87
57
|
# @param filter_values [Hash] keys = registerd filter name, values = filter arguments
|
58
|
+
# TODO:: change scoped to self(or similar) to preserve the current relation
|
88
59
|
define_method(acts_as_active_facet_options[:apply_filters_method_name]) do |filter_values = nil|
|
89
60
|
filter_values = (filter_values || {}).with_indifferent_access
|
90
|
-
ActiveFacets::
|
61
|
+
ActiveFacets::Filter.registered_filters_for(self).inject(scoped) do |result, (k,v)|
|
91
62
|
filter = ActiveFacets::ResourceManager.instance.resource_map(self).detect { |map_entry|
|
92
63
|
filter_values.keys.include? "#{k}_#{map_entry}"
|
93
64
|
}
|
data/lib/active_facets/config.rb
CHANGED
@@ -252,7 +252,6 @@ module ActiveFacets
|
|
252
252
|
def merge_field_sets(a, b)
|
253
253
|
na = normalize_field_set(a)
|
254
254
|
nb = normalize_field_set(b)
|
255
|
-
binding.pry unless nb
|
256
255
|
nb.inject(na.dup) do |result, (field_set, nested_field_sets)|
|
257
256
|
result[field_set] = merge_field_sets(na[field_set], nested_field_sets)
|
258
257
|
result
|
@@ -0,0 +1,36 @@
|
|
1
|
+
#TODO --jdc comment this class
|
2
|
+
module ActiveFacets
|
3
|
+
class Filter
|
4
|
+
cattr_accessor :filters, :global_filters
|
5
|
+
self.filters, self.global_filters = {}, {}
|
6
|
+
|
7
|
+
def self.register_global(name, proc)
|
8
|
+
global_filters[name] = proc
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.register(receiver, filter_name, filter_method_name)
|
12
|
+
receiver_filters = filters[receiver.name] ||= {}
|
13
|
+
receiver_filters[filter_name.to_sym] = filter_method_name.to_sym
|
14
|
+
receiver_filters
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.apply_globals_to(receiver)
|
18
|
+
global_filters.each do |filter_name, filter_method|
|
19
|
+
filter_method_name = receiver.acts_as_active_facet_options[:filter_method_name]
|
20
|
+
receiver.send(filter_method_name, filter_name, &filter_method)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
#TODO --jdc memoize
|
25
|
+
# @return [Hash] all filters registered on this resource (and superclass)
|
26
|
+
def self.registered_filters_for(receiver)
|
27
|
+
receiver_filters = filters[receiver.name] ||= {}
|
28
|
+
receiver_filters.reverse_merge(registered_filters_for(receiver.superclass)) if filters_registered_for?(receiver.superclass)
|
29
|
+
receiver_filters
|
30
|
+
end
|
31
|
+
|
32
|
+
def self.filters_registered_for?(receiver)
|
33
|
+
filters.key?(receiver.name)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -101,7 +101,6 @@ module ActiveFacets
|
|
101
101
|
# @return [JSON]
|
102
102
|
def serialize!
|
103
103
|
json = {}.with_indifferent_access
|
104
|
-
|
105
104
|
config.field_set_itterator(fields) do |scope, nested_scopes|
|
106
105
|
begin
|
107
106
|
json[scope] = get_resource_attribute scope, nested_scopes if allowed_field?(scope)
|
@@ -109,7 +108,6 @@ module ActiveFacets
|
|
109
108
|
# Deliberately do nothing. Ignore scopes that do not map to resource methods (or aliases)
|
110
109
|
end
|
111
110
|
end
|
112
|
-
|
113
111
|
apply_custom_serializers! json
|
114
112
|
end
|
115
113
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active_facets
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- The Honest Company
|
@@ -281,6 +281,7 @@ files:
|
|
281
281
|
- lib/active_facets/errors/attribute_error.rb
|
282
282
|
- lib/active_facets/errors/configuration_error.rb
|
283
283
|
- lib/active_facets/errors/lookup_error.rb
|
284
|
+
- lib/active_facets/filter.rb
|
284
285
|
- lib/active_facets/resource_manager.rb
|
285
286
|
- lib/active_facets/serializer/base.rb
|
286
287
|
- lib/active_facets/serializer/facade.rb
|