datagrid 1.5.8 → 1.6.2

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.
Files changed (74) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +8 -0
  3. data/Readme.markdown +2 -1
  4. data/app/views/datagrid/_table.html.erb +1 -1
  5. data/datagrid.gemspec +29 -166
  6. data/lib/datagrid/columns.rb +11 -14
  7. data/lib/datagrid/columns/column.rb +0 -5
  8. data/lib/datagrid/core.rb +13 -1
  9. data/lib/datagrid/drivers/active_record.rb +2 -1
  10. data/lib/datagrid/drivers/mongoid.rb +5 -1
  11. data/lib/datagrid/filters.rb +4 -7
  12. data/lib/datagrid/filters/base_filter.rb +11 -16
  13. data/lib/datagrid/filters/dynamic_filter.rb +15 -5
  14. data/lib/datagrid/filters/select_options.rb +1 -4
  15. data/lib/datagrid/form_builder.rb +17 -43
  16. data/lib/datagrid/helper.rb +1 -1
  17. data/lib/datagrid/locale/en.yml +6 -6
  18. data/lib/datagrid/renderer.rb +1 -2
  19. data/lib/datagrid/utils.rb +2 -6
  20. data/lib/datagrid/version.rb +3 -0
  21. metadata +15 -201
  22. data/.document +0 -5
  23. data/.rspec +0 -1
  24. data/.travis.yml +0 -20
  25. data/Gemfile +0 -29
  26. data/Rakefile +0 -43
  27. data/VERSION +0 -1
  28. data/spec/datagrid/active_model_spec.rb +0 -33
  29. data/spec/datagrid/column_names_attribute_spec.rb +0 -86
  30. data/spec/datagrid/columns/column_spec.rb +0 -19
  31. data/spec/datagrid/columns_spec.rb +0 -592
  32. data/spec/datagrid/core_spec.rb +0 -196
  33. data/spec/datagrid/drivers/active_record_spec.rb +0 -79
  34. data/spec/datagrid/drivers/array_spec.rb +0 -106
  35. data/spec/datagrid/drivers/mongo_mapper_spec.rb +0 -101
  36. data/spec/datagrid/drivers/mongoid_spec.rb +0 -109
  37. data/spec/datagrid/drivers/sequel_spec.rb +0 -111
  38. data/spec/datagrid/filters/base_filter_spec.rb +0 -19
  39. data/spec/datagrid/filters/boolean_enum_filter_spec.rb +0 -5
  40. data/spec/datagrid/filters/composite_filters_spec.rb +0 -65
  41. data/spec/datagrid/filters/date_filter_spec.rb +0 -195
  42. data/spec/datagrid/filters/date_time_filter_spec.rb +0 -157
  43. data/spec/datagrid/filters/dynamic_filter_spec.rb +0 -175
  44. data/spec/datagrid/filters/enum_filter_spec.rb +0 -51
  45. data/spec/datagrid/filters/extended_boolean_filter_spec.rb +0 -46
  46. data/spec/datagrid/filters/float_filter_spec.rb +0 -15
  47. data/spec/datagrid/filters/integer_filter_spec.rb +0 -144
  48. data/spec/datagrid/filters/string_filter_spec.rb +0 -35
  49. data/spec/datagrid/filters_spec.rb +0 -332
  50. data/spec/datagrid/form_builder_spec.rb +0 -641
  51. data/spec/datagrid/helper_spec.rb +0 -640
  52. data/spec/datagrid/ordering_spec.rb +0 -150
  53. data/spec/datagrid/scaffold_spec.rb +0 -45
  54. data/spec/datagrid/stylesheet_spec.rb +0 -12
  55. data/spec/datagrid/utils_spec.rb +0 -19
  56. data/spec/datagrid_spec.rb +0 -83
  57. data/spec/spec_helper.rb +0 -114
  58. data/spec/support/active_record.rb +0 -37
  59. data/spec/support/configuration.rb +0 -28
  60. data/spec/support/i18n_helpers.rb +0 -6
  61. data/spec/support/matchers.rb +0 -101
  62. data/spec/support/mongo_mapper.rb +0 -32
  63. data/spec/support/mongoid.rb +0 -36
  64. data/spec/support/sequel.rb +0 -39
  65. data/spec/support/simple_report.rb +0 -64
  66. data/spec/support/test_partials/_actions.html.erb +0 -1
  67. data/spec/support/test_partials/client/datagrid/_form.html.erb +0 -13
  68. data/spec/support/test_partials/client/datagrid/_head.html.erb +0 -9
  69. data/spec/support/test_partials/client/datagrid/_order_for.html.erb +0 -11
  70. data/spec/support/test_partials/client/datagrid/_row.html.erb +0 -6
  71. data/spec/support/test_partials/client/datagrid/_table.html.erb +0 -19
  72. data/spec/support/test_partials/custom_checkboxes/_enum_checkboxes.html.erb +0 -1
  73. data/spec/support/test_partials/custom_form/_form.html.erb +0 -7
  74. data/spec/support/test_partials/custom_range/_range_filter.html.erb +0 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: aa302439fb009cb596541a3cd2c6d5d584dc973c
4
- data.tar.gz: 53a5b714ec1ecc3279c7cd0fb278c7c4c150785d
2
+ SHA256:
3
+ metadata.gz: 4accb02f36dc5af245b6dd84008c22293e9bc0f6105b7fdfebe9458b6a7fa1e1
4
+ data.tar.gz: 4ca75ebff1804e8eaba5b0e41cae04e32f63c24211baffdc501a93870e1ba7e2
5
5
  SHA512:
6
- metadata.gz: 72b9bb255878dafebf1a932ee8908fedeba902e306480ebe3a1792267c63f19ff61959336be9d7c48f4df9b8f922f24ba21c781e9c000708a632d1b45577f1ac
7
- data.tar.gz: ec7577b30d0579b9ba106e220d4c89c2d2fb70bb83f33d31fce3feb4396a7bb28850ef81664187567696b585b26c2ef0873f2165859f36fe9d6233e3e092409d
6
+ metadata.gz: e8ab20bbbaec525f993c7e20a1ed5bd0105f6d2fc0c9ab098570401e610b7030a696c263959478b0cb4a39ecf921c81e5621bb76198cbc96060f433f23cbcaa5
7
+ data.tar.gz: 9158b9d0f26ee862292a5fdc0d9b596ee2ac70e52006cb559af1bfc043a5d43419c476e1b5a796a42a19e7bc5efcfb9e2b4e37e0fdfa9a8286c795a505aad573
data/CHANGELOG.md ADDED
@@ -0,0 +1,8 @@
1
+ ## 1.6.2
2
+
3
+ * Add `input_options` and `label_options` to `filter` method [#294](https://github.com/bogdan/datagrid/issues/294)
4
+ * Fix `<option>` tag rendering for Rails 6.0
5
+
6
+ ## 1.6.1 and before
7
+
8
+ Changes are not tracked
data/Readme.markdown CHANGED
@@ -1,6 +1,7 @@
1
1
  # Datagrid
2
2
 
3
3
  [![Build Status](https://travis-ci.org/bogdan/datagrid.svg?branch=master)](https://travis-ci.org/bogdan/datagrid)
4
+
4
5
  [![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fbogdan%2Fdatagrid.svg?type=shield)](https://app.fossa.io/projects/git%2Bgithub.com%2Fbogdan%2Fdatagrid?ref=badge_shield)
5
6
 
6
7
  Ruby library that helps you to build and represent table-like data with:
@@ -201,4 +202,4 @@ Read [author blog](http://gusiev.com).
201
202
 
202
203
 
203
204
  ## License
204
- [![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fbogdan%2Fdatagrid.svg?type=large)](https://app.fossa.io/projects/git%2Bgithub.com%2Fbogdan%2Fdatagrid?ref=badge_large)
205
+ [![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fbogdan%2Fdatagrid.svg?type=large)](https://app.fossa.io/projects/git%2Bgithub.com%2Fbogdan%2Fdatagrid?ref=badge_large)
@@ -11,7 +11,7 @@ Local variables:
11
11
  </thead>
12
12
  <tbody>
13
13
  <% if assets.any? %>
14
- <%= datagrid_rows(grid, assets, options) %>
14
+ <%= datagrid_rows(grid, assets, **options) %>
15
15
  <% else %>
16
16
  <tr><td class="noresults" colspan="100%"><%= I18n.t('datagrid.no_results').html_safe %></td></tr>
17
17
  <% end %>
data/datagrid.gemspec CHANGED
@@ -1,178 +1,41 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
- # -*- encoding: utf-8 -*-
5
- # stub: datagrid 1.5.8 ruby lib
1
+ # frozen_string_literal: true
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require "datagrid/version"
6
5
 
7
6
  Gem::Specification.new do |s|
8
- s.name = "datagrid".freeze
9
- s.version = "1.5.8"
10
-
11
- s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
12
- s.require_paths = ["lib".freeze]
13
- s.authors = ["Bogdan Gusiev".freeze]
14
- s.date = "2017-12-12"
15
- s.description = "This allows you to easily build datagrid aka data tables with sortable columns and filters".freeze
16
- s.email = "agresso@gmail.com".freeze
7
+ s.name = "datagrid"
8
+ s.version = Datagrid::VERSION
9
+ s.require_paths = ["lib"]
10
+ s.authors = ["Bogdan Gusiev"]
11
+ s.date = "2020-09-07"
12
+ s.summary = "Ruby gem to create datagrids"
13
+ s.description = "This allows you to easily build datagrid aka data tables with sortable columns and filters"
14
+ s.email = "agresso@gmail.com"
17
15
  s.extra_rdoc_files = [
18
- "LICENSE.txt"
16
+ "LICENSE.txt",
17
+ "Readme.markdown"
19
18
  ]
20
19
  s.files = [
21
- ".document",
22
- ".rspec",
23
- ".travis.yml",
24
- "Gemfile",
25
20
  "LICENSE.txt",
26
- "Rakefile",
21
+ "CHANGELOG.md",
27
22
  "Readme.markdown",
28
- "VERSION",
29
- "app/assets/stylesheets/datagrid.sass",
30
- "app/views/datagrid/_enum_checkboxes.html.erb",
31
- "app/views/datagrid/_form.html.erb",
32
- "app/views/datagrid/_head.html.erb",
33
- "app/views/datagrid/_order_for.html.erb",
34
- "app/views/datagrid/_range_filter.html.erb",
35
- "app/views/datagrid/_row.html.erb",
36
- "app/views/datagrid/_table.html.erb",
37
23
  "datagrid.gemspec",
38
- "lib/datagrid.rb",
39
- "lib/datagrid/active_model.rb",
40
- "lib/datagrid/column_names_attribute.rb",
41
- "lib/datagrid/columns.rb",
42
- "lib/datagrid/columns/column.rb",
43
- "lib/datagrid/configuration.rb",
44
- "lib/datagrid/core.rb",
45
- "lib/datagrid/drivers.rb",
46
- "lib/datagrid/drivers/abstract_driver.rb",
47
- "lib/datagrid/drivers/active_record.rb",
48
- "lib/datagrid/drivers/array.rb",
49
- "lib/datagrid/drivers/mongo_mapper.rb",
50
- "lib/datagrid/drivers/mongoid.rb",
51
- "lib/datagrid/drivers/sequel.rb",
52
- "lib/datagrid/engine.rb",
53
- "lib/datagrid/filters.rb",
54
- "lib/datagrid/filters/base_filter.rb",
55
- "lib/datagrid/filters/boolean_enum_filter.rb",
56
- "lib/datagrid/filters/boolean_filter.rb",
57
- "lib/datagrid/filters/composite_filters.rb",
58
- "lib/datagrid/filters/date_filter.rb",
59
- "lib/datagrid/filters/date_time_filter.rb",
60
- "lib/datagrid/filters/default_filter.rb",
61
- "lib/datagrid/filters/dynamic_filter.rb",
62
- "lib/datagrid/filters/enum_filter.rb",
63
- "lib/datagrid/filters/extended_boolean_filter.rb",
64
- "lib/datagrid/filters/float_filter.rb",
65
- "lib/datagrid/filters/integer_filter.rb",
66
- "lib/datagrid/filters/ranged_filter.rb",
67
- "lib/datagrid/filters/select_options.rb",
68
- "lib/datagrid/filters/string_filter.rb",
69
- "lib/datagrid/form_builder.rb",
70
- "lib/datagrid/helper.rb",
71
- "lib/datagrid/locale/en.yml",
72
- "lib/datagrid/ordering.rb",
73
- "lib/datagrid/renderer.rb",
74
- "lib/datagrid/rspec.rb",
75
- "lib/datagrid/scaffold.rb",
76
- "lib/datagrid/utils.rb",
77
- "lib/tasks/datagrid_tasks.rake",
78
- "spec/datagrid/active_model_spec.rb",
79
- "spec/datagrid/column_names_attribute_spec.rb",
80
- "spec/datagrid/columns/column_spec.rb",
81
- "spec/datagrid/columns_spec.rb",
82
- "spec/datagrid/core_spec.rb",
83
- "spec/datagrid/drivers/active_record_spec.rb",
84
- "spec/datagrid/drivers/array_spec.rb",
85
- "spec/datagrid/drivers/mongo_mapper_spec.rb",
86
- "spec/datagrid/drivers/mongoid_spec.rb",
87
- "spec/datagrid/drivers/sequel_spec.rb",
88
- "spec/datagrid/filters/base_filter_spec.rb",
89
- "spec/datagrid/filters/boolean_enum_filter_spec.rb",
90
- "spec/datagrid/filters/composite_filters_spec.rb",
91
- "spec/datagrid/filters/date_filter_spec.rb",
92
- "spec/datagrid/filters/date_time_filter_spec.rb",
93
- "spec/datagrid/filters/dynamic_filter_spec.rb",
94
- "spec/datagrid/filters/enum_filter_spec.rb",
95
- "spec/datagrid/filters/extended_boolean_filter_spec.rb",
96
- "spec/datagrid/filters/float_filter_spec.rb",
97
- "spec/datagrid/filters/integer_filter_spec.rb",
98
- "spec/datagrid/filters/string_filter_spec.rb",
99
- "spec/datagrid/filters_spec.rb",
100
- "spec/datagrid/form_builder_spec.rb",
101
- "spec/datagrid/helper_spec.rb",
102
- "spec/datagrid/ordering_spec.rb",
103
- "spec/datagrid/scaffold_spec.rb",
104
- "spec/datagrid/stylesheet_spec.rb",
105
- "spec/datagrid/utils_spec.rb",
106
- "spec/datagrid_spec.rb",
107
- "spec/spec_helper.rb",
108
- "spec/support/active_record.rb",
109
- "spec/support/configuration.rb",
110
- "spec/support/i18n_helpers.rb",
111
- "spec/support/matchers.rb",
112
- "spec/support/mongo_mapper.rb",
113
- "spec/support/mongoid.rb",
114
- "spec/support/sequel.rb",
115
- "spec/support/simple_report.rb",
116
- "spec/support/test_partials/_actions.html.erb",
117
- "spec/support/test_partials/client/datagrid/_form.html.erb",
118
- "spec/support/test_partials/client/datagrid/_head.html.erb",
119
- "spec/support/test_partials/client/datagrid/_order_for.html.erb",
120
- "spec/support/test_partials/client/datagrid/_row.html.erb",
121
- "spec/support/test_partials/client/datagrid/_table.html.erb",
122
- "spec/support/test_partials/custom_checkboxes/_enum_checkboxes.html.erb",
123
- "spec/support/test_partials/custom_form/_form.html.erb",
124
- "spec/support/test_partials/custom_range/_range_filter.html.erb",
125
- "templates/base.rb.erb",
126
- "templates/controller.rb.erb",
127
- "templates/grid.rb.erb",
128
- "templates/index.html.erb"
129
24
  ]
130
- s.homepage = "http://github.com/bogdan/datagrid".freeze
131
- s.licenses = ["MIT".freeze]
132
- s.required_ruby_version = Gem::Requirement.new(">= 2.0".freeze)
133
- s.rubygems_version = "2.6.14".freeze
134
- s.summary = "Ruby gem to create datagrids".freeze
135
-
136
- if s.respond_to? :specification_version then
137
- s.specification_version = 4
25
+ s.files += `git ls-files | grep -E '^(app|lib|templates)'`.split("\n")
26
+ s.homepage = "http://github.com/bogdan/datagrid"
27
+ s.licenses = ["MIT"]
28
+ s.required_ruby_version = Gem::Requirement.new(">= 2.0")
29
+ s.rubygems_version = "3.0.8"
30
+ url = 'https://github.com/bogdan/datagrid'
31
+ s.metadata = {
32
+ "homepage_uri" => url,
33
+ "bug_tracker_uri" => "#{url}/issues",
34
+ "documentation_uri" => "#{url}/wiki",
35
+ "changelog_uri" => "#{url}/blob/master/CHANGELOG.md",
36
+ "source_code_uri" => url,
37
+ }
138
38
 
139
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
140
- s.add_runtime_dependency(%q<rails>.freeze, [">= 4.0"])
141
- s.add_development_dependency(%q<bundler>.freeze, [">= 0"])
142
- s.add_development_dependency(%q<jeweler>.freeze, [">= 2.1.2"])
143
- s.add_development_dependency(%q<pry-byebug>.freeze, [">= 0"])
144
- s.add_development_dependency(%q<rspec>.freeze, [">= 3"])
145
- s.add_development_dependency(%q<nokogiri>.freeze, [">= 0"])
146
- s.add_development_dependency(%q<sqlite3>.freeze, [">= 0"])
147
- s.add_development_dependency(%q<sequel>.freeze, [">= 0"])
148
- s.add_development_dependency(%q<mongoid>.freeze, [">= 0"])
149
- s.add_development_dependency(%q<bson>.freeze, [">= 0"])
150
- s.add_development_dependency(%q<bson_ext>.freeze, [">= 0"])
151
- else
152
- s.add_dependency(%q<rails>.freeze, [">= 4.0"])
153
- s.add_dependency(%q<bundler>.freeze, [">= 0"])
154
- s.add_dependency(%q<jeweler>.freeze, [">= 2.1.2"])
155
- s.add_dependency(%q<pry-byebug>.freeze, [">= 0"])
156
- s.add_dependency(%q<rspec>.freeze, [">= 3"])
157
- s.add_dependency(%q<nokogiri>.freeze, [">= 0"])
158
- s.add_dependency(%q<sqlite3>.freeze, [">= 0"])
159
- s.add_dependency(%q<sequel>.freeze, [">= 0"])
160
- s.add_dependency(%q<mongoid>.freeze, [">= 0"])
161
- s.add_dependency(%q<bson>.freeze, [">= 0"])
162
- s.add_dependency(%q<bson_ext>.freeze, [">= 0"])
163
- end
164
- else
165
- s.add_dependency(%q<rails>.freeze, [">= 4.0"])
166
- s.add_dependency(%q<bundler>.freeze, [">= 0"])
167
- s.add_dependency(%q<jeweler>.freeze, [">= 2.1.2"])
168
- s.add_dependency(%q<pry-byebug>.freeze, [">= 0"])
169
- s.add_dependency(%q<rspec>.freeze, [">= 3"])
170
- s.add_dependency(%q<nokogiri>.freeze, [">= 0"])
171
- s.add_dependency(%q<sqlite3>.freeze, [">= 0"])
172
- s.add_dependency(%q<sequel>.freeze, [">= 0"])
173
- s.add_dependency(%q<mongoid>.freeze, [">= 0"])
174
- s.add_dependency(%q<bson>.freeze, [">= 0"])
175
- s.add_dependency(%q<bson_ext>.freeze, [">= 0"])
176
- end
39
+ s.add_dependency(%q<rails>, [">= 4.0"])
177
40
  end
178
41
 
@@ -16,6 +16,7 @@ module Datagrid
16
16
  self.default_column_options = {}
17
17
 
18
18
  class_attribute :batch_size
19
+ self.batch_size = 1000
19
20
 
20
21
  class_attribute :columns_array
21
22
  self.columns_array = []
@@ -120,8 +121,8 @@ module Datagrid
120
121
  # * <tt>:preload</tt> - spefies which associations of the scope should be preloaded for this column
121
122
  #
122
123
  # See: https://github.com/bogdan/datagrid/wiki/Columns for examples
123
- def column(name, options_or_query = {}, options = {}, &block)
124
- define_column(columns_array, name, options_or_query, options, &block)
124
+ def column(name, query = nil, **options, &block)
125
+ define_column(columns_array, name, query, options, &block)
125
126
  end
126
127
 
127
128
  # Returns column definition with given name
@@ -194,12 +195,7 @@ module Datagrid
194
195
  end
195
196
  end
196
197
 
197
- def define_column(columns, name, options_or_query = {}, options = {}, &block) #:nodoc:
198
- if options_or_query.is_a?(String)
199
- query = options_or_query
200
- else
201
- options = options_or_query
202
- end
198
+ def define_column(columns, name, query = nil, **options, &block) #:nodoc:
203
199
  check_scope_defined!("Scope should be defined before columns")
204
200
  block ||= lambda do |model|
205
201
  model.send(name)
@@ -315,9 +311,8 @@ module Datagrid
315
311
  def to_csv(*column_names)
316
312
  require "csv"
317
313
  options = column_names.extract_options!
318
- CSV.generate(
319
- {:headers => self.header(*column_names), :write_headers => true}.merge!(options)
320
- ) do |csv|
314
+ options = {:headers => self.header(*column_names), :write_headers => true}.merge!(options)
315
+ CSV.generate(**options) do |csv|
321
316
  each_with_batches do |asset|
322
317
  csv << row_for(asset, *column_names)
323
318
  end
@@ -406,8 +401,8 @@ module Datagrid
406
401
  # Defines a column at instance level
407
402
  #
408
403
  # See Datagrid::Columns::ClassMethods#column for more info
409
- def column(name, options_or_query = {}, options = {}, &block) #:nodoc:
410
- self.class.define_column(columns_array, name, options_or_query, options, &block)
404
+ def column(name, query = nil, **options, &block)
405
+ self.class.define_column(columns_array, name, query, options, &block)
411
406
  end
412
407
 
413
408
  def initialize(*) #:nodoc:
@@ -415,7 +410,7 @@ module Datagrid
415
410
  super
416
411
  end
417
412
 
418
- # Returns all columns available for current grid configuration.
413
+ # Returns all columns that are possible to be displayed for the current grid object
419
414
  #
420
415
  # class MyGrid
421
416
  # filter(:search) {|scope, value| scope.full_text_search(value)}
@@ -535,6 +530,8 @@ module Datagrid
535
530
  def value_from_html_block(context, asset, column)
536
531
  args = []
537
532
  remaining_arity = column.html_block.arity
533
+ remaining_arity = 1 if remaining_arity < 0
534
+
538
535
  asset = decorate(asset)
539
536
 
540
537
  if column.data?
@@ -123,11 +123,6 @@ class Datagrid::Columns::Column
123
123
  end
124
124
 
125
125
 
126
- def block
127
- Datagrid::Utils.warn_once("Datagrid::Columns::Column#block is deprecated. Use #html_block or #data_block instead")
128
- data_block
129
- end
130
-
131
126
  def generic_value(model, grid)
132
127
  grid.generic_value(self, model)
133
128
  end
data/lib/datagrid/core.rb CHANGED
@@ -9,7 +9,7 @@ module Datagrid
9
9
  base.class_eval do
10
10
  class_attribute :scope_value
11
11
 
12
- class_attribute :datagrid_attributes
12
+ class_attribute :datagrid_attributes, instance_writer: false
13
13
  self.datagrid_attributes = []
14
14
 
15
15
  class_attribute :dynamic_block, :instance_writer => false
@@ -163,6 +163,9 @@ module Datagrid
163
163
  end
164
164
 
165
165
  # Returns serializable query arguments skipping all nil values
166
+ #
167
+ # grid = ProductsGrid.new(category: 'dresses', available: true)
168
+ # grid.as_query # => {category: 'dresses', available: true}
166
169
  def as_query
167
170
  attributes = self.attributes.clone
168
171
  attributes.each do |key, value|
@@ -171,6 +174,15 @@ module Datagrid
171
174
  attributes
172
175
  end
173
176
 
177
+ # Returns query parameters to link this grid from a page
178
+ #
179
+ # grid = ProductsGrid.new(category: 'dresses', available: true)
180
+ # Rails.application.routes.url_helpers.products_path(grid.query_params)
181
+ # # => "/products?products_grid[category]=dresses&products_grid[available]=true"
182
+ def query_params(attributes = {})
183
+ { param_name.to_sym => as_query.merge(attributes) }
184
+ end
185
+
174
186
  # Redefines scope at instance level
175
187
  #
176
188
  # class MyGrid
@@ -105,7 +105,8 @@ module Datagrid
105
105
  if scope.limit_value
106
106
  raise Datagrid::ConfigurationError, "ActiveRecord can not use batches in combination with SQL limit"
107
107
  end
108
- scope.find_each(batch_size ? { :batch_size => batch_size} : {}, &block)
108
+ options = batch_size ? { batch_size: batch_size } : {}
109
+ scope.find_each(**options, &block)
109
110
  end
110
111
 
111
112
  def default_cache_key(asset)
@@ -12,7 +12,11 @@ module Datagrid
12
12
  end
13
13
 
14
14
  def to_scope(scope)
15
- scope.where(nil)
15
+ if scope.respond_to?(:all)
16
+ scope.all
17
+ else
18
+ scope.where(nil)
19
+ end
16
20
  end
17
21
 
18
22
  def where(scope, attribute, value)
@@ -53,7 +53,7 @@ module Datagrid
53
53
  def filter_by_name(attribute)
54
54
  return attribute if attribute.is_a?(Datagrid::Filters::BaseFilter)
55
55
  self.filters.find do |filter|
56
- filter.name.to_sym == attribute.to_sym
56
+ filter.name == attribute.to_sym
57
57
  end
58
58
  end
59
59
 
@@ -90,14 +90,11 @@ module Datagrid
90
90
  # Accepts a block or a symbol with an instance method name
91
91
  # * <tt>:unless</tt> - specify the reverse condition when the filter can be dislayed and used.
92
92
  # Accepts a block or a symbol with an instance method name
93
+ # * <tt>:input_options</tt> - options passed when rendering html input tag attributes
94
+ # * <tt>:label_options</tt> - options passed when rendering html label tag attributes
93
95
  #
94
96
  # See: https://github.com/bogdan/datagrid/wiki/Filters for examples
95
- def filter(name, type = :default, options = {}, &block)
96
- if type.is_a?(Hash)
97
- options = type
98
- type = :default
99
- end
100
-
97
+ def filter(name, type = :default, **options, &block)
101
98
  klass = type.is_a?(Class) ? type : FILTER_TYPES[type]
102
99
  raise ConfigurationError, "filter class #{type.inspect} not found" unless klass
103
100
 
@@ -7,7 +7,7 @@ class Datagrid::Filters::BaseFilter #:nodoc:
7
7
 
8
8
  def initialize(grid_class, name, options = {}, &block)
9
9
  self.grid_class = grid_class
10
- self.name = name
10
+ self.name = name.to_sym
11
11
  self.options = options
12
12
  self.block = block || default_filter_block
13
13
  end
@@ -61,18 +61,10 @@ class Datagrid::Filters::BaseFilter #:nodoc:
61
61
  end
62
62
  end
63
63
 
64
- def default(object = nil)
65
- unless object
66
- Datagrid::Utils.warn_once("#{self.class.name}#default without argument is deprecated")
67
- end
64
+ def default(object)
68
65
  default = self.options[:default]
69
66
  if default.is_a?(Symbol)
70
- if object.respond_to?(default)
71
- object.send(default)
72
- else
73
- Datagrid::Utils.warn_once(":default as a Symbol is now treated as a method name. Use String instead or -> { default } if you really want default value to be a Symbol but not a String.")
74
- default
75
- end
67
+ object.send(default)
76
68
  elsif default.respond_to?(:call)
77
69
  Datagrid::Utils.apply_args(object, &default)
78
70
  else
@@ -80,11 +72,6 @@ class Datagrid::Filters::BaseFilter #:nodoc:
80
72
  end
81
73
  end
82
74
 
83
- def multiple
84
- Datagrid::Utils.warn_once("Filter#multiple method is deprecated. Use Filter#multiple? instead")
85
- multiple?
86
- end
87
-
88
75
  def multiple?
89
76
  self.options[:multiple]
90
77
  end
@@ -97,6 +84,14 @@ class Datagrid::Filters::BaseFilter #:nodoc:
97
84
  options[:allow_blank]
98
85
  end
99
86
 
87
+ def input_options
88
+ options[:input_options] || {}
89
+ end
90
+
91
+ def label_options
92
+ options[:label_options] || {}
93
+ end
94
+
100
95
  def form_builder_helper_name
101
96
  self.class.form_builder_helper_name
102
97
  end