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.
- checksums.yaml +5 -5
- data/CHANGELOG.md +8 -0
- data/Readme.markdown +2 -1
- data/app/views/datagrid/_table.html.erb +1 -1
- data/datagrid.gemspec +29 -166
- data/lib/datagrid/columns.rb +11 -14
- data/lib/datagrid/columns/column.rb +0 -5
- data/lib/datagrid/core.rb +13 -1
- data/lib/datagrid/drivers/active_record.rb +2 -1
- data/lib/datagrid/drivers/mongoid.rb +5 -1
- data/lib/datagrid/filters.rb +4 -7
- data/lib/datagrid/filters/base_filter.rb +11 -16
- data/lib/datagrid/filters/dynamic_filter.rb +15 -5
- data/lib/datagrid/filters/select_options.rb +1 -4
- data/lib/datagrid/form_builder.rb +17 -43
- data/lib/datagrid/helper.rb +1 -1
- data/lib/datagrid/locale/en.yml +6 -6
- data/lib/datagrid/renderer.rb +1 -2
- data/lib/datagrid/utils.rb +2 -6
- data/lib/datagrid/version.rb +3 -0
- metadata +15 -201
- data/.document +0 -5
- data/.rspec +0 -1
- data/.travis.yml +0 -20
- data/Gemfile +0 -29
- data/Rakefile +0 -43
- data/VERSION +0 -1
- data/spec/datagrid/active_model_spec.rb +0 -33
- data/spec/datagrid/column_names_attribute_spec.rb +0 -86
- data/spec/datagrid/columns/column_spec.rb +0 -19
- data/spec/datagrid/columns_spec.rb +0 -592
- data/spec/datagrid/core_spec.rb +0 -196
- data/spec/datagrid/drivers/active_record_spec.rb +0 -79
- data/spec/datagrid/drivers/array_spec.rb +0 -106
- data/spec/datagrid/drivers/mongo_mapper_spec.rb +0 -101
- data/spec/datagrid/drivers/mongoid_spec.rb +0 -109
- data/spec/datagrid/drivers/sequel_spec.rb +0 -111
- data/spec/datagrid/filters/base_filter_spec.rb +0 -19
- data/spec/datagrid/filters/boolean_enum_filter_spec.rb +0 -5
- data/spec/datagrid/filters/composite_filters_spec.rb +0 -65
- data/spec/datagrid/filters/date_filter_spec.rb +0 -195
- data/spec/datagrid/filters/date_time_filter_spec.rb +0 -157
- data/spec/datagrid/filters/dynamic_filter_spec.rb +0 -175
- data/spec/datagrid/filters/enum_filter_spec.rb +0 -51
- data/spec/datagrid/filters/extended_boolean_filter_spec.rb +0 -46
- data/spec/datagrid/filters/float_filter_spec.rb +0 -15
- data/spec/datagrid/filters/integer_filter_spec.rb +0 -144
- data/spec/datagrid/filters/string_filter_spec.rb +0 -35
- data/spec/datagrid/filters_spec.rb +0 -332
- data/spec/datagrid/form_builder_spec.rb +0 -641
- data/spec/datagrid/helper_spec.rb +0 -640
- data/spec/datagrid/ordering_spec.rb +0 -150
- data/spec/datagrid/scaffold_spec.rb +0 -45
- data/spec/datagrid/stylesheet_spec.rb +0 -12
- data/spec/datagrid/utils_spec.rb +0 -19
- data/spec/datagrid_spec.rb +0 -83
- data/spec/spec_helper.rb +0 -114
- data/spec/support/active_record.rb +0 -37
- data/spec/support/configuration.rb +0 -28
- data/spec/support/i18n_helpers.rb +0 -6
- data/spec/support/matchers.rb +0 -101
- data/spec/support/mongo_mapper.rb +0 -32
- data/spec/support/mongoid.rb +0 -36
- data/spec/support/sequel.rb +0 -39
- data/spec/support/simple_report.rb +0 -64
- data/spec/support/test_partials/_actions.html.erb +0 -1
- data/spec/support/test_partials/client/datagrid/_form.html.erb +0 -13
- data/spec/support/test_partials/client/datagrid/_head.html.erb +0 -9
- data/spec/support/test_partials/client/datagrid/_order_for.html.erb +0 -11
- data/spec/support/test_partials/client/datagrid/_row.html.erb +0 -6
- data/spec/support/test_partials/client/datagrid/_table.html.erb +0 -19
- data/spec/support/test_partials/custom_checkboxes/_enum_checkboxes.html.erb +0 -1
- data/spec/support/test_partials/custom_form/_form.html.erb +0 -7
- data/spec/support/test_partials/custom_range/_range_filter.html.erb +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 4accb02f36dc5af245b6dd84008c22293e9bc0f6105b7fdfebe9458b6a7fa1e1
|
4
|
+
data.tar.gz: 4ca75ebff1804e8eaba5b0e41cae04e32f63c24211baffdc501a93870e1ba7e2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e8ab20bbbaec525f993c7e20a1ed5bd0105f6d2fc0c9ab098570401e610b7030a696c263959478b0cb4a39ecf921c81e5621bb76198cbc96060f433f23cbcaa5
|
7
|
+
data.tar.gz: 9158b9d0f26ee862292a5fdc0d9b596ee2ac70e52006cb559af1bfc043a5d43419c476e1b5a796a42a19e7bc5efcfb9e2b4e37e0fdfa9a8286c795a505aad573
|
data/CHANGELOG.md
ADDED
data/Readme.markdown
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
# Datagrid
|
2
2
|
|
3
3
|
[](https://travis-ci.org/bogdan/datagrid)
|
4
|
+
|
4
5
|
[](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
|
-
[](https://app.fossa.io/projects/git%2Bgithub.com%2Fbogdan%2Fdatagrid?ref=badge_large)
|
205
|
+
[](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
|
-
#
|
2
|
-
|
3
|
-
|
4
|
-
|
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"
|
9
|
-
s.version =
|
10
|
-
|
11
|
-
s.
|
12
|
-
s.
|
13
|
-
s.
|
14
|
-
s.
|
15
|
-
s.
|
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
|
-
"
|
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.
|
131
|
-
s.
|
132
|
-
s.
|
133
|
-
s.
|
134
|
-
s.
|
135
|
-
|
136
|
-
|
137
|
-
|
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
|
-
|
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
|
|
data/lib/datagrid/columns.rb
CHANGED
@@ -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,
|
124
|
-
define_column(columns_array, name,
|
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,
|
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
|
-
|
319
|
-
|
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,
|
410
|
-
self.class.define_column(columns_array, name,
|
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
|
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
|
-
|
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)
|
data/lib/datagrid/filters.rb
CHANGED
@@ -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
|
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
|
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
|
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
|
-
|
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
|