datagrid 1.5.8 → 1.6.2

Sign up to get free protection for your applications and to get access to all the features.
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