datagrid 1.6.2 → 1.6.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/Readme.markdown +4 -3
- data/lib/datagrid/column_names_attribute.rb +15 -16
- data/lib/datagrid/columns.rb +29 -29
- data/lib/datagrid/columns/column.rb +4 -0
- data/lib/datagrid/filters/composite_filters.rb +4 -4
- data/lib/datagrid/form_builder.rb +7 -5
- data/lib/datagrid/helper.rb +2 -2
- data/lib/datagrid/renderer.rb +1 -3
- data/lib/datagrid/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a5f1043a8a905be92c309d00b6c0b107ebec35939c89b5766f5d7c43dbe2c584
|
4
|
+
data.tar.gz: 8b4bd8b0130ef2fa83cebe7012386ffcdb4d9ba32d3e803080e4345d6eb74dee
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4c42259fe4c806e235d10610ab4b3681319d8f5712c73addc1d54f61d6e6cbd0447a967464f878464da2b54f60dc376acef5238cce1467a097d7cbf799beb51d
|
7
|
+
data.tar.gz: 1ac692930c8a269190bc36ecce7c50cf1c1696fe5b9b6dc0644adfa59eb15a2bab77f4dac70a29633693e707e53ef29ed874eda6f6c82533ed441afe72a5d304
|
data/CHANGELOG.md
CHANGED
data/Readme.markdown
CHANGED
@@ -23,10 +23,11 @@ Ruby library that helps you to build and represent table-like data with:
|
|
23
23
|
[Create an issue](https://github.com/bogdan/datagrid/issues/new) if you want more.
|
24
24
|
|
25
25
|
|
26
|
-
###
|
26
|
+
### Documentation
|
27
27
|
|
28
|
-
*
|
29
|
-
*
|
28
|
+
* [Readme](/Readme.markdown) - this read-me for basic information
|
29
|
+
* [Wiki](https://github.com/bogdan/datagrid/wiki) - general reference on how to use the gem
|
30
|
+
* [Rdoc](https://rdoc.info/github/bogdan/datagrid) - API reference
|
30
31
|
|
31
32
|
### Live Demo
|
32
33
|
|
@@ -23,23 +23,22 @@ module Datagrid
|
|
23
23
|
# Accepts same options as <tt>:enum</tt> filter
|
24
24
|
#
|
25
25
|
# Examples:
|
26
|
-
#
|
27
|
-
# column_names_filter(:
|
28
|
-
#
|
29
|
-
def column_names_filter(options
|
30
|
-
filter(
|
31
|
-
:
|
32
|
-
:
|
33
|
-
:
|
34
|
-
|
26
|
+
#
|
27
|
+
# column_names_filter(header: "Choose columns")
|
28
|
+
#
|
29
|
+
def column_names_filter(**options)
|
30
|
+
filter(
|
31
|
+
:column_names, :enum,
|
32
|
+
select: :optional_columns_select,
|
33
|
+
multiple: true,
|
34
|
+
dummy: true,
|
35
|
+
**options,
|
36
|
+
)
|
35
37
|
end
|
36
38
|
end
|
37
39
|
|
38
|
-
def columns(*args) #:nodoc:
|
39
|
-
options
|
40
|
-
column_names = selected_column_names(*args)
|
41
|
-
column_names << options
|
42
|
-
super(*column_names)
|
40
|
+
def columns(*args, **options) #:nodoc:
|
41
|
+
super(*selected_column_names(*args), **options)
|
43
42
|
end
|
44
43
|
|
45
44
|
# Returns a list of enabled columns with <tt>:mandatory => true</tt> option
|
@@ -59,7 +58,7 @@ module Datagrid
|
|
59
58
|
optional_columns.map {|c| [c.header, c.name] }
|
60
59
|
end
|
61
60
|
|
62
|
-
def selected_column_names(*args)
|
61
|
+
def selected_column_names(*args)
|
63
62
|
if args.any?
|
64
63
|
args.compact!
|
65
64
|
args.map!(&:to_sym)
|
@@ -75,7 +74,7 @@ module Datagrid
|
|
75
74
|
|
76
75
|
def columns_visibility_enabled?
|
77
76
|
columns_array.any? do |column|
|
78
|
-
column.
|
77
|
+
column.mandatory_explicitly_set?
|
79
78
|
end
|
80
79
|
end
|
81
80
|
|
data/lib/datagrid/columns.rb
CHANGED
@@ -86,9 +86,10 @@ module Datagrid
|
|
86
86
|
#
|
87
87
|
# Supported options:
|
88
88
|
#
|
89
|
-
# * :data - if true returns only
|
90
|
-
|
91
|
-
|
89
|
+
# * :data - if true returns only columns with data representation. Default: false.
|
90
|
+
# * :html - if true returns only columns with html columns. Default: false.
|
91
|
+
def columns(*args, data: false, html: false)
|
92
|
+
filter_columns(columns_array, *args, data: data, html: html)
|
92
93
|
end
|
93
94
|
|
94
95
|
# Defines new datagrid column
|
@@ -122,7 +123,7 @@ module Datagrid
|
|
122
123
|
#
|
123
124
|
# See: https://github.com/bogdan/datagrid/wiki/Columns for examples
|
124
125
|
def column(name, query = nil, **options, &block)
|
125
|
-
define_column(columns_array, name, query, options, &block)
|
126
|
+
define_column(columns_array, name, query, **options, &block)
|
126
127
|
end
|
127
128
|
|
128
129
|
# Returns column definition with given name
|
@@ -184,14 +185,13 @@ module Datagrid
|
|
184
185
|
child_class.columns_array = self.columns_array.clone
|
185
186
|
end
|
186
187
|
|
187
|
-
def filter_columns(
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
(
|
194
|
-
(column.mandatory? || args.empty? || args.include?(column.name))
|
188
|
+
def filter_columns(columns_array, *names, data: false, html: false) #:nodoc:
|
189
|
+
names.compact!
|
190
|
+
names.map!(&:to_sym)
|
191
|
+
columns_array.select do |column|
|
192
|
+
(!data || column.data?) &&
|
193
|
+
(!html || column.html?) &&
|
194
|
+
(column.mandatory? || names.empty? || names.include?(column.name))
|
195
195
|
end
|
196
196
|
end
|
197
197
|
|
@@ -308,11 +308,13 @@ module Datagrid
|
|
308
308
|
# grid.to_csv
|
309
309
|
# grid.to_csv(:id, :name)
|
310
310
|
# grid.to_csv(:col_sep => ';')
|
311
|
-
def to_csv(*column_names)
|
311
|
+
def to_csv(*column_names, **options)
|
312
312
|
require "csv"
|
313
|
-
|
314
|
-
|
315
|
-
|
313
|
+
CSV.generate(
|
314
|
+
headers: self.header(*column_names),
|
315
|
+
write_headers: true,
|
316
|
+
**options
|
317
|
+
) do |csv|
|
316
318
|
each_with_batches do |asset|
|
317
319
|
csv << row_for(asset, *column_names)
|
318
320
|
end
|
@@ -328,24 +330,22 @@ module Datagrid
|
|
328
330
|
# grid = MyGrid.new(:column_names => [:id, :name])
|
329
331
|
# grid.columns # => id and name columns
|
330
332
|
# grid.columns(:id, :category) # => id and category column
|
331
|
-
def columns(*args)
|
332
|
-
self.class.filter_columns(
|
333
|
+
def columns(*args, data: false, html: false)
|
334
|
+
self.class.filter_columns(
|
335
|
+
columns_array, *args, data: data, html: html
|
336
|
+
).select do |column|
|
337
|
+
column.enabled?(self)
|
338
|
+
end
|
333
339
|
end
|
334
340
|
|
335
341
|
# Returns all columns that can be represented in plain data(non-html) way
|
336
|
-
def data_columns(*names)
|
337
|
-
options
|
338
|
-
options[:data] = true
|
339
|
-
names << options
|
340
|
-
self.columns(*names)
|
342
|
+
def data_columns(*names, **options)
|
343
|
+
self.columns(*names, **options, data: true)
|
341
344
|
end
|
342
345
|
|
343
346
|
# Returns all columns that can be represented in HTML table
|
344
|
-
def html_columns(*names)
|
345
|
-
options
|
346
|
-
options[:html] = true
|
347
|
-
names << options
|
348
|
-
self.columns(*names)
|
347
|
+
def html_columns(*names, **options)
|
348
|
+
self.columns(*names, **options, html: true)
|
349
349
|
end
|
350
350
|
|
351
351
|
# Finds a column definition by name
|
@@ -402,7 +402,7 @@ module Datagrid
|
|
402
402
|
#
|
403
403
|
# See Datagrid::Columns::ClassMethods#column for more info
|
404
404
|
def column(name, query = nil, **options, &block)
|
405
|
-
self.class.define_column(columns_array, name, query, options, &block)
|
405
|
+
self.class.define_column(columns_array, name, query, **options, &block)
|
406
406
|
end
|
407
407
|
|
408
408
|
def initialize(*) #:nodoc:
|
@@ -106,6 +106,10 @@ class Datagrid::Columns::Column
|
|
106
106
|
!! options[:mandatory]
|
107
107
|
end
|
108
108
|
|
109
|
+
def mandatory_explicitly_set?
|
110
|
+
options.key?(:mandatory)
|
111
|
+
end
|
112
|
+
|
109
113
|
def enabled?(grid)
|
110
114
|
::Datagrid::Utils.process_availability(grid, options[:if], options[:unless])
|
111
115
|
end
|
@@ -16,10 +16,10 @@ module Datagrid
|
|
16
16
|
from_options = normalize_composite_filter_options(from_options, field)
|
17
17
|
to_options = normalize_composite_filter_options(to_options, field)
|
18
18
|
|
19
|
-
filter(from_options[:name] || :"from_#{field.to_s.tr('.', '_')}", :date, from_options) do |date, scope, grid|
|
19
|
+
filter(from_options[:name] || :"from_#{field.to_s.tr('.', '_')}", :date, **from_options) do |date, scope, grid|
|
20
20
|
grid.driver.greater_equal(scope, field, date)
|
21
21
|
end
|
22
|
-
filter(to_options[:name] || :"to_#{field.to_s.tr('.', '_')}", :date, to_options) do |date, scope, grid|
|
22
|
+
filter(to_options[:name] || :"to_#{field.to_s.tr('.', '_')}", :date, **to_options) do |date, scope, grid|
|
23
23
|
grid.driver.less_equal(scope, field, date)
|
24
24
|
end
|
25
25
|
end
|
@@ -27,10 +27,10 @@ module Datagrid
|
|
27
27
|
def integer_range_filters(field, from_options = {}, to_options = {})
|
28
28
|
from_options = normalize_composite_filter_options(from_options, field)
|
29
29
|
to_options = normalize_composite_filter_options(to_options, field)
|
30
|
-
filter(from_options[:name] || :"from_#{field.to_s.tr('.', '_')}", :integer, from_options) do |value, scope, grid|
|
30
|
+
filter(from_options[:name] || :"from_#{field.to_s.tr('.', '_')}", :integer, **from_options) do |value, scope, grid|
|
31
31
|
grid.driver.greater_equal(scope, field, value)
|
32
32
|
end
|
33
|
-
filter(to_options[:name] || :"to_#{field.to_s.tr('.', '_')}", :integer, to_options) do |value, scope, grid|
|
33
|
+
filter(to_options[:name] || :"to_#{field.to_s.tr('.', '_')}", :integer, **to_options) do |value, scope, grid|
|
34
34
|
grid.driver.less_equal(scope, field, value)
|
35
35
|
end
|
36
36
|
end
|
@@ -4,11 +4,11 @@ module Datagrid
|
|
4
4
|
module FormBuilder
|
5
5
|
|
6
6
|
# Returns a form input html for the corresponding filter name
|
7
|
-
def datagrid_filter(filter_or_attribute,
|
7
|
+
def datagrid_filter(filter_or_attribute, options = {}, &block)
|
8
8
|
filter = datagrid_get_filter(filter_or_attribute)
|
9
9
|
options = {
|
10
10
|
**filter.input_options,
|
11
|
-
**add_html_classes(options, filter.name, datagrid_filter_html_class(filter))
|
11
|
+
**add_html_classes(options, filter.name, datagrid_filter_html_class(filter)),
|
12
12
|
}
|
13
13
|
# Prevent partials option from appearing in HTML attributes
|
14
14
|
options.delete(:partials) # Legacy option
|
@@ -70,9 +70,11 @@ module Datagrid
|
|
70
70
|
select(
|
71
71
|
filter.name,
|
72
72
|
object.select_options(filter) || [],
|
73
|
-
{
|
74
|
-
|
75
|
-
|
73
|
+
{
|
74
|
+
include_blank: filter.include_blank,
|
75
|
+
prompt: filter.prompt,
|
76
|
+
include_hidden: false
|
77
|
+
},
|
76
78
|
multiple: filter.multiple?,
|
77
79
|
**options,
|
78
80
|
&block
|
data/lib/datagrid/helper.rb
CHANGED
@@ -38,8 +38,8 @@ module Datagrid
|
|
38
38
|
# and needs different columns. Default: all defined columns.
|
39
39
|
# * <tt>:partials</tt> - Path for partials lookup.
|
40
40
|
# Default: 'datagrid'.
|
41
|
-
def datagrid_table(grid,
|
42
|
-
datagrid_renderer.table(grid,
|
41
|
+
def datagrid_table(grid, assets = grid.assets, **options)
|
42
|
+
datagrid_renderer.table(grid, assets, **options)
|
43
43
|
end
|
44
44
|
|
45
45
|
# Renders HTML table header for given grid instance using columns defined in it
|
data/lib/datagrid/renderer.rb
CHANGED
@@ -34,11 +34,9 @@ module Datagrid
|
|
34
34
|
_render_partial('form', options[:partials], {:grid => grid, :options => options})
|
35
35
|
end
|
36
36
|
|
37
|
-
def table(grid,
|
38
|
-
options = args.extract_options!
|
37
|
+
def table(grid, assets, **options)
|
39
38
|
options[:html] ||= {}
|
40
39
|
options[:html][:class] ||= "datagrid #{@template.dom_class(grid)}"
|
41
|
-
assets = args.any? ? args.shift : grid.assets
|
42
40
|
|
43
41
|
_render_partial('table', options[:partials],
|
44
42
|
{
|
data/lib/datagrid/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: datagrid
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.6.
|
4
|
+
version: 1.6.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bogdan Gusiev
|
@@ -114,7 +114,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
114
114
|
- !ruby/object:Gem::Version
|
115
115
|
version: '0'
|
116
116
|
requirements: []
|
117
|
-
rubygems_version: 3.2.
|
117
|
+
rubygems_version: 3.2.3
|
118
118
|
signing_key:
|
119
119
|
specification_version: 4
|
120
120
|
summary: Ruby gem to create datagrids
|