activeadmin-ajax_filter 0.4.4 → 0.4.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9bb0afa3a4e5afe9d4b5137f9eabbd6233fd18ec8d251965a79c3ebe79888ffb
4
- data.tar.gz: 4170070696e21ee6e4cebdab98cacb591beccf5e35eaa5615b0b5066a2046c13
3
+ metadata.gz: 6f9fa8d4a1c3de2cacf75f9e29a0e8adddef65db1eb09704f4b079bdac96670c
4
+ data.tar.gz: f9398372f1435943d3716dbf5498ceeb705dd2e59b2f2ab980a3658f0e57d488
5
5
  SHA512:
6
- metadata.gz: e402c2aa57874a952fe3184cdfcb62f9b7a17558e089f75bde282b7b422a61a815f65776c4d90bee7932aed71eaa3a97dc3e7b2c2b7186a1e2048b2943837376
7
- data.tar.gz: 329120cec955864e4ca477417dbab495ff95379f4498112e912b02da72bdc433e2ff4c371e1ec01ede9ad195e6914b18504d4e8f698ecc340ff65c008e9b5483
6
+ metadata.gz: f244bf70e1fb6dc726e865e0b7fec4766a75af1b72c1cac071a240a59f353a9b775450474161da3191b818c0506cbcea04d94e8458e131d64a090a7e2626be1f
7
+ data.tar.gz: 93fa5babb8c7b4b840865b26c7a31cbe23d2f3070c7843e0be9238a8e5eb7745b683186acdd871c4b8a8e7f34465bfa7a28d7b6def4f603ccad9c6f0e612d175
data/.gitignore CHANGED
@@ -11,3 +11,4 @@
11
11
  /spec/dummy/log/*.log
12
12
  /tmp/
13
13
  *.sqlite3
14
+ *.gem
@@ -1 +1 @@
1
- 2.6.1
1
+ 2.6.5
@@ -1,9 +1,8 @@
1
1
  sudo: false
2
2
  language: ruby
3
+ cache: bundler
3
4
 
4
5
  rvm:
5
- - 2.3
6
- - 2.4
7
6
  - 2.5
8
7
  - 2.6
9
8
  - ruby-head
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- activeadmin-ajax_filter (0.4.4)
4
+ activeadmin-ajax_filter (0.4.6)
5
5
  activeadmin (>= 1.0)
6
6
  coffee-rails (>= 4.1.0)
7
7
  has_scope (>= 0.6.0)
@@ -11,21 +11,21 @@ PATH
11
11
  GEM
12
12
  remote: https://rubygems.org/
13
13
  specs:
14
- actionmailer (4.2.11)
15
- actionpack (= 4.2.11)
16
- actionview (= 4.2.11)
17
- activejob (= 4.2.11)
14
+ actionmailer (4.2.11.1)
15
+ actionpack (= 4.2.11.1)
16
+ actionview (= 4.2.11.1)
17
+ activejob (= 4.2.11.1)
18
18
  mail (~> 2.5, >= 2.5.4)
19
19
  rails-dom-testing (~> 1.0, >= 1.0.5)
20
- actionpack (4.2.11)
21
- actionview (= 4.2.11)
22
- activesupport (= 4.2.11)
20
+ actionpack (4.2.11.1)
21
+ actionview (= 4.2.11.1)
22
+ activesupport (= 4.2.11.1)
23
23
  rack (~> 1.6)
24
24
  rack-test (~> 0.6.2)
25
25
  rails-dom-testing (~> 1.0, >= 1.0.5)
26
26
  rails-html-sanitizer (~> 1.0, >= 1.0.2)
27
- actionview (4.2.11)
28
- activesupport (= 4.2.11)
27
+ actionview (4.2.11.1)
28
+ activesupport (= 4.2.11.1)
29
29
  builder (~> 3.1)
30
30
  erubis (~> 2.7.0)
31
31
  rails-dom-testing (~> 1.0, >= 1.0.5)
@@ -42,17 +42,17 @@ GEM
42
42
  ransack (>= 1.8.7)
43
43
  sass (~> 3.1)
44
44
  sprockets (< 4.1)
45
- activejob (4.2.11)
46
- activesupport (= 4.2.11)
45
+ activejob (4.2.11.1)
46
+ activesupport (= 4.2.11.1)
47
47
  globalid (>= 0.3.0)
48
- activemodel (4.2.11)
49
- activesupport (= 4.2.11)
48
+ activemodel (4.2.11.1)
49
+ activesupport (= 4.2.11.1)
50
50
  builder (~> 3.1)
51
- activerecord (4.2.11)
52
- activemodel (= 4.2.11)
53
- activesupport (= 4.2.11)
51
+ activerecord (4.2.11.1)
52
+ activemodel (= 4.2.11.1)
53
+ activesupport (= 4.2.11.1)
54
54
  arel (~> 6.0)
55
- activesupport (4.2.11)
55
+ activesupport (4.2.11.1)
56
56
  i18n (~> 0.7)
57
57
  minitest (~> 5.1)
58
58
  thread_safe (~> 0.3, >= 0.3.4)
@@ -61,7 +61,7 @@ GEM
61
61
  arbre (1.2.1)
62
62
  activesupport (>= 3.0.0)
63
63
  arel (6.0.4)
64
- builder (3.2.3)
64
+ builder (3.2.4)
65
65
  capybara (2.7.1)
66
66
  addressable
67
67
  mime-types (>= 1.16)
@@ -72,6 +72,7 @@ GEM
72
72
  cliver (0.3.2)
73
73
  codeclimate-test-reporter (0.4.8)
74
74
  simplecov (>= 0.7.1, < 1.0.0)
75
+ coderay (1.1.2)
75
76
  coffee-rails (4.2.2)
76
77
  coffee-script (>= 2.2.0)
77
78
  railties (>= 4.0.0)
@@ -79,8 +80,8 @@ GEM
79
80
  coffee-script-source
80
81
  execjs
81
82
  coffee-script-source (1.12.2)
82
- concurrent-ruby (1.1.4)
83
- crass (1.0.4)
83
+ concurrent-ruby (1.1.6)
84
+ crass (1.0.6)
84
85
  database_cleaner (1.5.3)
85
86
  diff-lcs (1.2.5)
86
87
  docile (1.1.5)
@@ -112,56 +113,60 @@ GEM
112
113
  has_scope (~> 0.6)
113
114
  railties (>= 4.2, < 5.3)
114
115
  responders
115
- jquery-rails (4.3.5)
116
+ jquery-rails (4.4.0)
116
117
  rails-dom-testing (>= 1, < 3)
117
118
  railties (>= 4.2.0)
118
119
  thor (>= 0.14, < 2.0)
119
120
  json (1.8.6)
120
- kaminari (1.1.1)
121
+ kaminari (1.2.0)
121
122
  activesupport (>= 4.1.0)
122
- kaminari-actionview (= 1.1.1)
123
- kaminari-activerecord (= 1.1.1)
124
- kaminari-core (= 1.1.1)
125
- kaminari-actionview (1.1.1)
123
+ kaminari-actionview (= 1.2.0)
124
+ kaminari-activerecord (= 1.2.0)
125
+ kaminari-core (= 1.2.0)
126
+ kaminari-actionview (1.2.0)
126
127
  actionview
127
- kaminari-core (= 1.1.1)
128
- kaminari-activerecord (1.1.1)
128
+ kaminari-core (= 1.2.0)
129
+ kaminari-activerecord (1.2.0)
129
130
  activerecord
130
- kaminari-core (= 1.1.1)
131
- kaminari-core (1.1.1)
131
+ kaminari-core (= 1.2.0)
132
+ kaminari-core (1.2.0)
132
133
  launchy (2.4.3)
133
134
  addressable (~> 2.3)
134
- loofah (2.2.3)
135
+ loofah (2.4.0)
135
136
  crass (~> 1.0.2)
136
137
  nokogiri (>= 1.5.9)
137
138
  mail (2.7.1)
138
139
  mini_mime (>= 0.1.1)
140
+ method_source (1.0.0)
139
141
  mime-types (3.2.2)
140
142
  mime-types-data (~> 3.2015)
141
143
  mime-types-data (3.2018.0812)
142
144
  mini_mime (1.0.2)
143
145
  mini_portile2 (2.4.0)
144
- minitest (5.11.3)
145
- nokogiri (1.10.4)
146
+ minitest (5.14.0)
147
+ nokogiri (1.10.9)
146
148
  mini_portile2 (~> 2.4.0)
147
149
  phantomjs (2.1.1.0)
148
150
  poltergeist (1.10.0)
149
151
  capybara (~> 2.1)
150
152
  cliver (~> 0.3.1)
151
153
  websocket-driver (>= 0.2.0)
152
- rack (1.6.11)
154
+ pry (0.13.1)
155
+ coderay (~> 1.1)
156
+ method_source (~> 1.0)
157
+ rack (1.6.13)
153
158
  rack-test (0.6.3)
154
159
  rack (>= 1.0)
155
- rails (4.2.11)
156
- actionmailer (= 4.2.11)
157
- actionpack (= 4.2.11)
158
- actionview (= 4.2.11)
159
- activejob (= 4.2.11)
160
- activemodel (= 4.2.11)
161
- activerecord (= 4.2.11)
162
- activesupport (= 4.2.11)
160
+ rails (4.2.11.1)
161
+ actionmailer (= 4.2.11.1)
162
+ actionpack (= 4.2.11.1)
163
+ actionview (= 4.2.11.1)
164
+ activejob (= 4.2.11.1)
165
+ activemodel (= 4.2.11.1)
166
+ activerecord (= 4.2.11.1)
167
+ activesupport (= 4.2.11.1)
163
168
  bundler (>= 1.3.0, < 2.0)
164
- railties (= 4.2.11)
169
+ railties (= 4.2.11.1)
165
170
  sprockets-rails
166
171
  rails-deprecated_sanitizer (1.0.3)
167
172
  activesupport (>= 4.2.0.alpha)
@@ -169,11 +174,11 @@ GEM
169
174
  activesupport (>= 4.2.0, < 5.0)
170
175
  nokogiri (~> 1.6)
171
176
  rails-deprecated_sanitizer (>= 1.0.1)
172
- rails-html-sanitizer (1.0.4)
173
- loofah (~> 2.2, >= 2.2.2)
174
- railties (4.2.11)
175
- actionpack (= 4.2.11)
176
- activesupport (= 4.2.11)
177
+ rails-html-sanitizer (1.3.0)
178
+ loofah (~> 2.3)
179
+ railties (4.2.11.1)
180
+ actionpack (= 4.2.11.1)
181
+ activesupport (= 4.2.11.1)
177
182
  rake (>= 0.8.7)
178
183
  thor (>= 0.18.1, < 2.0)
179
184
  rake (10.5.0)
@@ -182,8 +187,8 @@ GEM
182
187
  activerecord (>= 3.0, < 5.2)
183
188
  activesupport (>= 3.0, < 5.2)
184
189
  i18n
185
- rb-fsevent (0.10.3)
186
- rb-inotify (0.10.0)
190
+ rb-fsevent (0.10.4)
191
+ rb-inotify (0.10.1)
187
192
  ffi (~> 1.0)
188
193
  request_store (1.4.1)
189
194
  rack (>= 1.4)
@@ -216,6 +221,14 @@ GEM
216
221
  sass-listen (4.0.0)
217
222
  rb-fsevent (~> 0.9, >= 0.9.4)
218
223
  rb-inotify (~> 0.9, >= 0.9.7)
224
+ sassc (2.2.1)
225
+ ffi (~> 1.9)
226
+ sassc-rails (2.1.2)
227
+ railties (>= 4.0.0)
228
+ sassc (>= 2.0)
229
+ sprockets (> 3.0)
230
+ sprockets-rails
231
+ tilt
219
232
  selectize-rails (0.12.6)
220
233
  simplecov (0.11.1)
221
234
  docile (~> 1.1.0)
@@ -233,9 +246,10 @@ GEM
233
246
  temping (3.3.0)
234
247
  activerecord (>= 3.1)
235
248
  activesupport (>= 3.1)
236
- thor (0.20.3)
249
+ thor (1.0.1)
237
250
  thread_safe (0.3.6)
238
- tzinfo (1.2.5)
251
+ tilt (2.0.10)
252
+ tzinfo (1.2.6)
239
253
  thread_safe (~> 0.1)
240
254
  websocket-driver (0.6.4)
241
255
  websocket-extensions (>= 0.1.0)
@@ -257,9 +271,11 @@ DEPENDENCIES
257
271
  launchy (~> 2.4.3)
258
272
  phantomjs (~> 2.1.1)
259
273
  poltergeist (~> 1.10.0)
274
+ pry
260
275
  rake (~> 10.0)
261
276
  rspec (~> 3.3, >= 3.3.0)
262
277
  rspec-rails (~> 3.3)
278
+ sassc-rails
263
279
  selectize-rails (>= 0.11.2)
264
280
  sqlite3 (~> 1.3, >= 1.3.11)
265
281
  temping (~> 3.3, >= 3.3.0)
data/README.md CHANGED
@@ -96,6 +96,24 @@ You can use next parameters in `data` hash:
96
96
  * `static_ransack` - hash of ransack predicates which will be applied statically and independently from current input field value
97
97
  * `min_chars_count_to_request` - minimal count of chars in the input field to make an AJAX request
98
98
 
99
+ ### Filter by belongs_to relation fields
100
+
101
+ ```ruby
102
+ class Patient < ApplicationRecord
103
+ belongs_to :user
104
+ # ...
105
+ end
106
+
107
+ f.input :patient, as: :ajax_select, collection: [], data: {
108
+ display_fields: ['id', 'user.name'],
109
+ search_fields: ['user.name'],
110
+ ordering: 'id ASC',
111
+ url: :filter_admin_patients_path
112
+ }
113
+ ```
114
+ Ordering by related fields doesn't work, e.g. this will not work: `ordering: 'user.name ASC'`
115
+
116
+
99
117
  ## Caveats
100
118
 
101
119
  ### Ransack _cont on Integer column
@@ -24,6 +24,7 @@ Gem::Specification.new do |gem|
24
24
  gem.add_dependency 'coffee-rails', '>= 4.1.0'
25
25
  gem.add_dependency 'selectize-rails', '>= 0.12.6'
26
26
  gem.add_dependency 'has_scope', '>= 0.6.0' # Force Ruby 2.1.5 support
27
+ gem.add_development_dependency 'sassc-rails'
27
28
  gem.add_development_dependency 'bundler', '~> 1.10'
28
29
  gem.add_development_dependency 'rake', '~> 10.0'
29
30
  gem.add_development_dependency 'rspec', '~> 3.3', '>= 3.3.0'
@@ -38,4 +39,5 @@ Gem::Specification.new do |gem|
38
39
  gem.add_development_dependency 'selectize-rails', '>= 0.11.2'
39
40
  gem.add_development_dependency 'database_cleaner', '~> 1.5.0'
40
41
  gem.add_development_dependency 'launchy', '~> 2.4.3'
42
+ gem.add_development_dependency 'pry'
41
43
  end
@@ -30,6 +30,7 @@ $ ->
30
30
  q: q
31
31
  limit: select.data('limit')
32
32
  order: ordering
33
+ searchFields: searchFields
33
34
  error: ->
34
35
  callback()
35
36
  success: (res) ->
@@ -87,16 +88,17 @@ $ ->
87
88
  onInitialize: ->
88
89
  selectize = this
89
90
  selectedValue = select.data('selected-value')
90
- selectedRansack = "#{valueField}_eq"
91
+ selectedRansack = "#{valueField}_in"
91
92
 
92
93
  if selectedValue
93
94
  q = {}
94
- q[selectedRansack] = selectedValue
95
+ q[selectedRansack] = String(selectedValue).split(' ')
95
96
 
96
97
  loadOptions(q, (res)->
97
98
  if res && res.length
98
- selectize.addOption(res[0])
99
- selectize.addItem(res[0][valueField])
99
+ for item in res
100
+ selectize.addOption(item)
101
+ selectize.addItem(item[valueField])
100
102
  )
101
103
 
102
104
  ajaxFields.forEach (field) ->
@@ -14,10 +14,32 @@ module ActiveAdmin
14
14
  def included(dsl)
15
15
  dsl.instance_eval do
16
16
  collection_action :filter, method: :get do
17
- render plain: apply_collection_decorator(
18
- find_collection(except: [:pagination, :collection_decorator])
19
- .order(params[:order]).limit(params[:limit] || 10),
20
- ).to_json
17
+ scope = find_collection(except: [:pagination, :collection_decorator])
18
+ .order(params[:order])
19
+ .limit(params[:limit] || 10)
20
+ .distinct
21
+
22
+ search_fields = Array(params[:searchFields])
23
+
24
+ related_table_search_fields = search_fields
25
+ .select { |f| f.include?('.') }
26
+ .map { |f| f.split('.') }
27
+
28
+ related_table_search_fields.each do |related_table, _|
29
+ scope = scope.preload(related_table)
30
+ end
31
+
32
+ res = apply_collection_decorator(scope).map do |item|
33
+ item_json = item.as_json
34
+
35
+ related_table_search_fields.each do |related_table, search_field|
36
+ item_json[related_table + '.' + search_field] = item.send(related_table).send(search_field)
37
+ end
38
+
39
+ item_json
40
+ end
41
+
42
+ render plain: res.to_json
21
43
  end
22
44
  end
23
45
  end
@@ -1,5 +1,5 @@
1
1
  module ActiveAdmin
2
2
  module AjaxFilter
3
- VERSION = '0.4.4'
3
+ VERSION = '0.4.6'
4
4
  end
5
5
  end
@@ -40,7 +40,7 @@ module ActiveAdmin
40
40
  end
41
41
 
42
42
  def display_fields
43
- ajax_data[:display_fields] || search_fields[0]
43
+ ajax_data[:display_fields] || search_fields.take(1)
44
44
  end
45
45
 
46
46
  def search_fields
@@ -52,11 +52,11 @@ module ActiveAdmin
52
52
  end
53
53
 
54
54
  def ordering
55
- ajax_data[:ordering] || "#{search_fields.first} ASC"
55
+ ajax_data[:ordering] || "#{display_fields.first} ASC"
56
56
  end
57
57
 
58
58
  def ransack
59
- ajax_data[:ransack] || "#{search_fields.join('_or_')}_cont"
59
+ ajax_data[:ransack] || "#{ransackify(search_fields).join('_or_')}_cont"
60
60
  end
61
61
 
62
62
  def static_ransack
@@ -67,6 +67,11 @@ module ActiveAdmin
67
67
  ajax_data[:min_chars_count_to_request] || 1
68
68
  end
69
69
 
70
+ def ransackify(field_names)
71
+ # Map fields refer to related tables user.name -> user_name
72
+ field_names.map { |f| f.to_s.sub('.', '_') }
73
+ end
74
+
70
75
  def url
71
76
  case (url = ajax_data[:url])
72
77
  when nil then "#{method.to_s.pluralize}/filter"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activeadmin-ajax_filter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.4
4
+ version: 0.4.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alex Emelyanov
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-08-26 00:00:00.000000000 Z
11
+ date: 2020-05-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activeadmin
@@ -80,6 +80,20 @@ dependencies:
80
80
  - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: 0.6.0
83
+ - !ruby/object:Gem::Dependency
84
+ name: sassc-rails
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: bundler
85
99
  requirement: !ruby/object:Gem::Requirement
@@ -294,6 +308,20 @@ dependencies:
294
308
  - - "~>"
295
309
  - !ruby/object:Gem::Version
296
310
  version: 2.4.3
311
+ - !ruby/object:Gem::Dependency
312
+ name: pry
313
+ requirement: !ruby/object:Gem::Requirement
314
+ requirements:
315
+ - - ">="
316
+ - !ruby/object:Gem::Version
317
+ version: '0'
318
+ type: :development
319
+ prerelease: false
320
+ version_requirements: !ruby/object:Gem::Requirement
321
+ requirements:
322
+ - - ">="
323
+ - !ruby/object:Gem::Version
324
+ version: '0'
297
325
  description: Allows to define form inputs and filters by relation for ActiveAdmin
298
326
  resource pages using Ransacker to dynamicaly load items while user is typing symbols
299
327
  in filter
@@ -344,7 +372,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
344
372
  - !ruby/object:Gem::Version
345
373
  version: '0'
346
374
  requirements: []
347
- rubygems_version: 3.0.1
375
+ rubygems_version: 3.0.3
348
376
  signing_key:
349
377
  specification_version: 4
350
378
  summary: AJAX filters for ActiveAdmin