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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4accb02f36dc5af245b6dd84008c22293e9bc0f6105b7fdfebe9458b6a7fa1e1
4
- data.tar.gz: 4ca75ebff1804e8eaba5b0e41cae04e32f63c24211baffdc501a93870e1ba7e2
3
+ metadata.gz: a5f1043a8a905be92c309d00b6c0b107ebec35939c89b5766f5d7c43dbe2c584
4
+ data.tar.gz: 8b4bd8b0130ef2fa83cebe7012386ffcdb4d9ba32d3e803080e4345d6eb74dee
5
5
  SHA512:
6
- metadata.gz: e8ab20bbbaec525f993c7e20a1ed5bd0105f6d2fc0c9ab098570401e610b7030a696c263959478b0cb4a39ecf921c81e5621bb76198cbc96060f433f23cbcaa5
7
- data.tar.gz: 9158b9d0f26ee862292a5fdc0d9b596ee2ac70e52006cb559af1bfc043a5d43419c476e1b5a796a42a19e7bc5efcfb9e2b4e37e0fdfa9a8286c795a505aad573
6
+ metadata.gz: 4c42259fe4c806e235d10610ab4b3681319d8f5712c73addc1d54f61d6e6cbd0447a967464f878464da2b54f60dc376acef5238cce1467a097d7cbf799beb51d
7
+ data.tar.gz: 1ac692930c8a269190bc36ecce7c50cf1c1696fe5b9b6dc0644adfa59eb15a2bab77f4dac70a29633693e707e53ef29ed874eda6f6c82533ed441afe72a5d304
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ ## 1.6.3
2
+
3
+ * Fix usage of options spread operator for ruby 3.0 [#296](https://github.com/bogdan/datagrid/issues/296)
4
+
1
5
  ## 1.6.2
2
6
 
3
7
  * Add `input_options` and `label_options` to `filter` method [#294](https://github.com/bogdan/datagrid/issues/294)
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
- ### Dependencies
26
+ ### Documentation
27
27
 
28
- * Ruby >= 2.0
29
- * Rails >= 3.2
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(:header => "Choose columns")
28
- #
29
- def column_names_filter(options = {})
30
- filter(:column_names, :enum, {
31
- :select => :optional_columns_select,
32
- :multiple => true,
33
- :dummy => true
34
- }.merge(options || {}))
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 = args.extract_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.options.key?(:mandatory)
77
+ column.mandatory_explicitly_set?
79
78
  end
80
79
  end
81
80
 
@@ -86,9 +86,10 @@ module Datagrid
86
86
  #
87
87
  # Supported options:
88
88
  #
89
- # * :data - if true returns only non-html columns. Default: false.
90
- def columns(*args)
91
- filter_columns(columns_array, *args)
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(columns, *args) #:nodoc:
188
- options = args.extract_options!
189
- args.compact!
190
- args.map!(&:to_sym)
191
- columns.select do |column|
192
- (!options[:data] || column.data?) &&
193
- (!options[:html] || column.html?) &&
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
- options = column_names.extract_options!
314
- options = {:headers => self.header(*column_names), :write_headers => true}.merge!(options)
315
- CSV.generate(**options) do |csv|
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(columns_array, *args).select {|column| column.enabled?(self)}
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 = names.extract_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 = names.extract_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, **options, &block)
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
- {:include_blank => filter.include_blank,
74
- :prompt => filter.prompt,
75
- :include_hidden => false},
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
@@ -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, *args)
42
- datagrid_renderer.table(grid, *args)
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
@@ -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, *args)
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
  {
@@ -1,3 +1,3 @@
1
1
  module Datagrid
2
- VERSION = "1.6.2"
2
+ VERSION = "1.6.3"
3
3
  end
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.2
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.0
117
+ rubygems_version: 3.2.3
118
118
  signing_key:
119
119
  specification_version: 4
120
120
  summary: Ruby gem to create datagrids