wice_grid 3.4.14 → 3.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/CHANGELOG +38 -0
- data/README.rdoc +219 -210
- data/SAVED_QUERIES_HOWTO.rdoc +13 -13
- data/app/views/kaminari/wice_grid/_next_page.html.erb +1 -1
- data/app/views/kaminari/wice_grid/_page.html.erb +1 -1
- data/app/views/kaminari/wice_grid/_prev_page.html.erb +1 -1
- data/lib/generators/wice_grid/install_generator.rb +2 -2
- data/lib/generators/wice_grid/templates/{wice_grid.css.scss → wice_grid.scss} +0 -0
- data/lib/generators/wice_grid/templates/wice_grid.yml +87 -1
- data/lib/generators/wice_grid/templates/wice_grid_config.rb +21 -7
- data/lib/wice/active_record_column_wrapper.rb +0 -1
- data/lib/wice/columns.rb +0 -1
- data/lib/wice/columns/column_action.rb +13 -8
- data/lib/wice/columns/column_boolean.rb +0 -1
- data/lib/wice/columns/column_custom_dropdown.rb +0 -1
- data/lib/wice/columns/column_date.rb +1 -2
- data/lib/wice/columns/column_datetime.rb +33 -7
- data/lib/wice/columns/column_float.rb +0 -1
- data/lib/wice/columns/column_integer.rb +0 -1
- data/lib/wice/columns/column_processor_index.rb +0 -1
- data/lib/wice/columns/column_range.rb +0 -1
- data/lib/wice/columns/column_string.rb +0 -1
- data/lib/wice/grid_output_buffer.rb +0 -1
- data/lib/wice/grid_renderer.rb +4 -2
- data/lib/wice/helpers/bs_calendar_helpers.rb +67 -0
- data/lib/wice/helpers/wice_grid_misc_view_helpers.rb +0 -1
- data/lib/wice/helpers/wice_grid_serialized_queries_view_helpers.rb +16 -17
- data/lib/wice/helpers/wice_grid_view_helpers.rb +52 -54
- data/lib/wice/kaminari_monkey_patching.rb +0 -1
- data/lib/wice/table_column_matrix.rb +0 -1
- data/lib/wice/wice_grid_controller.rb +5 -7
- data/lib/wice/wice_grid_core_ext.rb +0 -2
- data/lib/wice/wice_grid_misc.rb +0 -1
- data/lib/wice/wice_grid_serialized_queries_controller.rb +0 -1
- data/lib/wice/wice_grid_serialized_query.rb +0 -1
- data/lib/wice/wice_grid_spreadsheet.rb +0 -1
- data/lib/wice_grid.rb +24 -14
- data/release_notes/RELEASE_NOTES_3.2.pre1.rdoc +1 -2
- data/vendor/assets/javascripts/wice_grid_init.js.coffee +58 -24
- data/vendor/assets/javascripts/wice_grid_processor.js.coffee +1 -1
- data/wice_grid.gemspec +16 -30
- metadata +22 -21
@@ -1,4 +1,3 @@
|
|
1
|
-
# encoding: UTF-8
|
2
1
|
module Wice
|
3
2
|
module Controller
|
4
3
|
|
@@ -50,7 +49,6 @@ module Wice
|
|
50
49
|
# * <tt>:after</tt> - defined a name of a controller method which would be called by the grid after all user input has been processed,
|
51
50
|
# with a single parameter which is a Proc object. Once called, the object returns a list of all records of the current selection
|
52
51
|
# throughout all pages. See section "Integration With The Application" in the README.
|
53
|
-
# * <tt>:total_entries</tt> - If not specified, <tt>will_paginate</tt> will run a <tt>select count</tt>
|
54
52
|
# * <tt>:select</tt> - ActiveRecord <tt>:select</tt> option. Please do not forget that <tt>:select</tt> is ignored
|
55
53
|
# when <tt>:include</tt> is present. It is unlikely you would need <tt>:select</tt> with WiceGrid, but if you do,
|
56
54
|
# use it with care :)
|
@@ -90,7 +88,7 @@ module Wice
|
|
90
88
|
# This convention can be easily overridden by supplying a hash parameter to +export_grid_if_requested+ where each key is the name of
|
91
89
|
# a grid, and the value is the name of the template (like it is specified for +render+, i.e. without '_' and extensions):
|
92
90
|
#
|
93
|
-
# export_grid_if_requested(grid
|
91
|
+
# export_grid_if_requested('grid' => 'orders', 'grid2' => 'invoices')
|
94
92
|
#
|
95
93
|
# If the request is not a CSV export request, the method does nothing and returns +false+, if it is a CSV export request,
|
96
94
|
# the method returns +true+.
|
@@ -138,10 +136,10 @@ module Wice
|
|
138
136
|
# * <tt>:value</tt> - the value of the column filter.
|
139
137
|
def wice_grid_custom_filter_params(opts = {})
|
140
138
|
options = {
|
141
|
-
:
|
142
|
-
:
|
143
|
-
:
|
144
|
-
:
|
139
|
+
grid_name: 'grid',
|
140
|
+
attribute: nil,
|
141
|
+
model: nil,
|
142
|
+
value: nil
|
145
143
|
}
|
146
144
|
options.merge!(opts)
|
147
145
|
|
data/lib/wice/wice_grid_misc.rb
CHANGED
data/lib/wice_grid.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
# encoding: UTF-8
|
2
|
-
|
3
1
|
require 'wice/wice_grid_misc.rb'
|
4
2
|
require 'wice/wice_grid_core_ext.rb'
|
5
3
|
require 'wice/grid_renderer.rb'
|
@@ -9,6 +7,7 @@ require 'wice/helpers/wice_grid_view_helpers.rb'
|
|
9
7
|
require 'wice/helpers/wice_grid_misc_view_helpers.rb'
|
10
8
|
require 'wice/helpers/wice_grid_serialized_queries_view_helpers.rb'
|
11
9
|
require 'wice/helpers/wice_grid_view_helpers.rb'
|
10
|
+
require 'wice/helpers/bs_calendar_helpers.rb'
|
12
11
|
require 'wice/helpers/js_calendar_helpers.rb'
|
13
12
|
require 'wice/grid_output_buffer.rb'
|
14
13
|
require 'wice/wice_grid_controller.rb'
|
@@ -147,18 +146,17 @@ module Wice
|
|
147
146
|
@status = HashWithIndifferentAccess.new
|
148
147
|
|
149
148
|
if @options[:order]
|
150
|
-
@options[:order]
|
149
|
+
@options[:order] = @options[:order].to_s
|
151
150
|
@options[:order_direction] = @options[:order_direction].to_s
|
152
151
|
|
153
|
-
@status[:order_direction]
|
154
|
-
@status[:order]
|
152
|
+
@status[:order_direction] = @options[:order_direction]
|
153
|
+
@status[:order] = @options[:order]
|
155
154
|
|
156
155
|
end
|
157
|
-
@status[:
|
158
|
-
@status[:
|
159
|
-
@status[:
|
160
|
-
@status[:
|
161
|
-
@status[:f] = @options[:f]
|
156
|
+
@status[:per_page] = @options[:per_page]
|
157
|
+
@status[:page] = @options[:page]
|
158
|
+
@status[:conditions] = @options[:conditions]
|
159
|
+
@status[:f] = @options[:f]
|
162
160
|
|
163
161
|
process_loading_query
|
164
162
|
process_params
|
@@ -283,9 +281,17 @@ module Wice
|
|
283
281
|
@ar_options[:group] = @options[:group]
|
284
282
|
|
285
283
|
if self.output_html?
|
286
|
-
@ar_options[:per_page]
|
287
|
-
@ar_options[:page]
|
288
|
-
|
284
|
+
@ar_options[:per_page] = @status[:per_page]
|
285
|
+
@ar_options[:page] = @status[:page]
|
286
|
+
|
287
|
+
if (show_all_limit = Wice::ConfigurationProvider.value_for(:SHOW_ALL_ALLOWED_UP_TO, strict: false)) && all_record_mode?
|
288
|
+
if do_count > show_all_limit # force-reset SHOW-ALL to pagination
|
289
|
+
@status[:pp] = nil
|
290
|
+
else
|
291
|
+
# no resetting
|
292
|
+
end
|
293
|
+
end
|
294
|
+
|
289
295
|
end
|
290
296
|
|
291
297
|
end
|
@@ -311,7 +317,7 @@ module Wice
|
|
311
317
|
group( @ar_options[:group]).
|
312
318
|
where( @ar_options[:conditions])
|
313
319
|
relation = add_references relation
|
314
|
-
|
320
|
+
|
315
321
|
relation
|
316
322
|
else
|
317
323
|
# p @ar_options
|
@@ -418,6 +424,10 @@ module Wice
|
|
418
424
|
|
419
425
|
def count #:nodoc:
|
420
426
|
form_ar_options(skip_ordering: true, forget_generated_options: true)
|
427
|
+
do_count
|
428
|
+
end
|
429
|
+
|
430
|
+
def do_count
|
421
431
|
@relation.count(
|
422
432
|
conditions: @ar_options[:conditions],
|
423
433
|
joins: @ar_options[:joins],
|
@@ -22,7 +22,7 @@
|
|
22
22
|
|
23
23
|
5. Paths to various images used by WiceGrid have been removed from the configuration file
|
24
24
|
and are now defined only in the css file. Developers are encouraged to modify
|
25
|
-
<tt>wice_grid.
|
25
|
+
<tt>wice_grid.scss</tt> to use other images and to change the styles in general.
|
26
26
|
|
27
27
|
6. The markup and css classes that WiceGrid generates have changed, and CSS for older versions
|
28
28
|
of WiceGrid might not work. Inspect the source code.
|
@@ -79,4 +79,3 @@
|
|
79
79
|
+wg-external-csv-export-button+:
|
80
80
|
|
81
81
|
<button class="wg-external-csv-export-button" data-grid-name="grid">Export To CSV</button>
|
82
|
-
|
@@ -22,29 +22,31 @@ initWiceGrid = ->
|
|
22
22
|
|
23
23
|
for filterDeclaration in filterDeclarations
|
24
24
|
do (filterDeclaration) ->
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
25
|
+
if filterDeclaration?
|
26
|
+
gridProcessor.register
|
27
|
+
filterName : filterDeclaration.filterName
|
28
|
+
detached : filterDeclaration.detached
|
29
|
+
templates : filterDeclaration.declaration.templates
|
30
|
+
ids : filterDeclaration.declaration.ids
|
30
31
|
|
31
32
|
unless window[globalVarForAllGrids]
|
32
33
|
window[globalVarForAllGrids] = {}
|
33
34
|
|
34
35
|
window[globalVarForAllGrids][gridName] = gridProcessor
|
35
36
|
|
36
|
-
|
37
|
-
setupSubmitReset
|
38
|
-
setupCsvExport
|
39
|
-
setupHidingShowingOfFilterRow
|
40
|
-
setupShowingAllRecords
|
41
|
-
setupMultiSelectToggle
|
37
|
+
# setting up stuff for in the context of each grid
|
38
|
+
setupSubmitReset wiceGridContainer, gridProcessor
|
39
|
+
setupCsvExport wiceGridContainer, gridProcessor
|
40
|
+
setupHidingShowingOfFilterRow wiceGridContainer
|
41
|
+
setupShowingAllRecords wiceGridContainer, gridProcessor
|
42
|
+
setupMultiSelectToggle wiceGridContainer
|
42
43
|
setupAutoreloadsForInternalFilters wiceGridContainer, gridProcessor
|
43
|
-
setupBulkToggleForActionColumn
|
44
|
+
setupBulkToggleForActionColumn wiceGridContainer
|
44
45
|
|
45
46
|
setupAutoreloadsForExternalFilters()
|
46
47
|
setupExternalSubmitReset()
|
47
48
|
setupExternalCsvExport()
|
49
|
+
setupDatepicker()
|
48
50
|
|
49
51
|
# for all grids on oage because it does not matter which grid it is
|
50
52
|
setupMultiSelectToggle $('.wg-detached-filter')
|
@@ -61,23 +63,52 @@ moveDateBoundIfInvalidPeriod = (dataFieldNameWithTheOtherDatepicker, datepickerH
|
|
61
63
|
theOtherDatepicker.next().next().html $.datepicker.formatDate(dateFormat, selectedDate)
|
62
64
|
|
63
65
|
|
64
|
-
|
65
|
-
# datepicker logic
|
66
66
|
setupDatepicker = ->
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
67
|
+
if $('.date-filter.wg-jquery-datepicker').length != 0
|
68
|
+
setupJqueryUiDatepicker()
|
69
|
+
|
70
|
+
if $('.date-filter.wg-bootstrap-datepicker').length != 0
|
71
|
+
setupBootstrapDatepicker()
|
72
|
+
|
73
|
+
|
74
|
+
setupBootstrapDatepicker = ->
|
75
|
+
# check for bootstrap datepicker
|
76
|
+
unless $.fn.datepicker
|
77
|
+
alert """Seems like you do not have Bootstrap datepicker gem (https://github.com/Nerian/bootstrap-datepicker-rails)
|
78
|
+
installed. Either install it or set Wice::Defaults::HELPER_STYLE to :standard in
|
79
|
+
wice_grid_config.rb in order to use standard Rails date helpers
|
80
|
+
"""
|
81
|
+
return
|
82
|
+
|
83
|
+
$('.date-filter.wg-bootstrap-datepicker input:text[data-provide=datepicker]').each (index, dateField) ->
|
84
|
+
|
85
|
+
$(dateField).datepicker().on 'hide', (event) ->
|
86
|
+
$self = $(event.currentTarget)
|
87
|
+
|
88
|
+
eventToTriggerOnChange = $self.data('close-calendar-event-name')
|
89
|
+
|
90
|
+
if eventToTriggerOnChange
|
91
|
+
$self.trigger(eventToTriggerOnChange)
|
92
|
+
|
93
|
+
else if $self.attr('id').split('_').pop() == 'fr'
|
94
|
+
$to = $self.parent().next().find('input:text.check-for-bsdatepicker')
|
95
|
+
if $to.length > 0
|
96
|
+
$to.datepicker 'show'
|
97
|
+
|
98
|
+
|
99
|
+
setupJqueryUiDatepicker = ->
|
100
|
+
# check jquery ui datepickeer
|
101
|
+
unless $.datepicker
|
102
|
+
alert """Seems like you do not have jQuery datepicker (http://jqueryui.com/demos/datepicker/)
|
71
103
|
installed. Either install it or set Wice::Defaults::HELPER_STYLE to :standard in
|
72
104
|
wice_grid_config.rb in order to use standard Rails date helpers
|
73
105
|
"""
|
74
|
-
|
75
106
|
# setting up the locale for datepicker
|
76
|
-
if locale = $('.
|
107
|
+
if locale = $('.date-filter.wg-jquery-datepicker input[type=hidden]').data('locale')
|
77
108
|
$.datepicker.setDefaults($.datepicker.regional[locale]);
|
78
109
|
|
79
110
|
|
80
|
-
$('.
|
111
|
+
$('.date-filter.wg-jquery-datepicker .date-label').each (index, removeLink) ->
|
81
112
|
datepickerHiddenField = $('#' + $(removeLink).data('dom-id'))
|
82
113
|
|
83
114
|
eventToTriggerOnChange = datepickerHiddenField.data('close-calendar-event-name')
|
@@ -130,7 +161,7 @@ setupDatepicker = ->
|
|
130
161
|
|
131
162
|
$(that).html(dateText)
|
132
163
|
if eventToTriggerOnChange
|
133
|
-
|
164
|
+
datepickerHiddenField.trigger(eventToTriggerOnChange)
|
134
165
|
|
135
166
|
|
136
167
|
|
@@ -164,7 +195,7 @@ setupSubmitReset = (wiceGridContainer, gridProcessor) ->
|
|
164
195
|
$('.reset', wiceGridContainer).click ->
|
165
196
|
gridProcessor.reset()
|
166
197
|
|
167
|
-
$('.wg-filter-row input[type=text]', wiceGridContainer).keydown (event) ->
|
198
|
+
$('.wg-filter-row input[type=text], .wg-filter-row input:text[data-provide=datepicker]', wiceGridContainer).keydown (event) ->
|
168
199
|
if event.keyCode == 13
|
169
200
|
event.preventDefault()
|
170
201
|
gridProcessor.process()
|
@@ -250,6 +281,9 @@ setupBulkToggleForActionColumn = (wiceGridContainer) ->
|
|
250
281
|
$('.deselect-all', wiceGridContainer).click ->
|
251
282
|
$('.sel input', wiceGridContainer).prop('checked', false).trigger('change')
|
252
283
|
|
284
|
+
$('.wg-select-all', wiceGridContainer).click ->
|
285
|
+
$('.sel input', wiceGridContainer).prop('checked', $(this).prop('checked')).trigger('change')
|
286
|
+
|
253
287
|
|
254
288
|
getGridProcessorForElement = (element) ->
|
255
289
|
gridName = $(element).data('grid-name')
|
@@ -290,7 +324,7 @@ setupExternalSubmitReset = ->
|
|
290
324
|
$('.wg-detached-filter').each (index, detachedFilterContainer) ->
|
291
325
|
gridProcessor = getGridProcessorForElement(detachedFilterContainer)
|
292
326
|
if gridProcessor
|
293
|
-
$('input[type=text]', this).keydown (event) ->
|
327
|
+
$('input[type=text], input:text[data-provide=datepicker]', this).keydown (event) ->
|
294
328
|
if event.keyCode == 13
|
295
329
|
gridProcessor.process()
|
296
330
|
event.preventDefault()
|
data/wice_grid.gemspec
CHANGED
@@ -1,35 +1,21 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
|
-
s.name =
|
3
|
-
s.version =
|
4
|
-
s.
|
5
|
-
s.
|
6
|
-
s.
|
7
|
-
s.
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
s.authors = ['Yuri Leikind']
|
13
|
-
s.email = 'yuri.leikind@gmail.com'
|
14
|
-
s.files = `git ls-files`.split($/)
|
15
|
-
s.license = 'MIT'
|
16
|
-
|
17
|
-
kaminary = 'kaminari'
|
18
|
-
kaminary_version = '>= 0.13.0'
|
2
|
+
s.name = "wice_grid"
|
3
|
+
s.version = "3.5.0"
|
4
|
+
s.authors = ["Yuri Leikind"]
|
5
|
+
s.email = ["yuri.leikind@gmail.com"]
|
6
|
+
s.homepage = "https://github.com/leikind/wice_grid"
|
7
|
+
s.summary = "A Rails grid plugin to quickly create grids with sorting, pagination, and filters."
|
8
|
+
s.description = "A Rails grid plugin to create grids with sorting, pagination, and filters generated automatically based on column types. " +
|
9
|
+
"The contents of the cell are up for the developer, just like one does when rendering a collection via a simple table. " +
|
10
|
+
"WiceGrid automates implementation of filters, ordering, paginations, CSV export, and so on. " +
|
11
|
+
"Ruby blocks provide an elegant means for this."
|
19
12
|
|
20
|
-
|
21
|
-
|
13
|
+
s.files = `git ls-files`.split($/)
|
14
|
+
s.license = "MIT"
|
15
|
+
s.require_paths = ["lib"]
|
16
|
+
s.date = "2015-08-14"
|
22
17
|
|
23
|
-
|
24
|
-
|
25
|
-
s.add_runtime_dependency('coffee-rails')
|
26
|
-
else
|
27
|
-
s.add_dependency(kaminari, [kaminary_version])
|
28
|
-
s.add_dependency('coffee-rails')
|
29
|
-
end
|
30
|
-
else
|
31
|
-
s.add_dependency(kaminari, [kaminary_version])
|
32
|
-
s.add_dependency('coffee-rails')
|
33
|
-
end
|
18
|
+
s.add_dependency "kaminari", ["~> 0.16"]
|
19
|
+
s.add_dependency "coffee-rails", ["~> 4.0"]
|
34
20
|
|
35
21
|
end
|
metadata
CHANGED
@@ -1,50 +1,50 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wice_grid
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yuri Leikind
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-08-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: kaminari
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.
|
19
|
+
version: '0.16'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0.
|
26
|
+
version: '0.16'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: coffee-rails
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '0'
|
33
|
+
version: '4.0'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '0'
|
41
|
-
description: A Rails grid plugin to create grids with sorting, pagination, and
|
42
|
-
generated
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
40
|
+
version: '4.0'
|
41
|
+
description: A Rails grid plugin to create grids with sorting, pagination, and filters
|
42
|
+
generated automatically based on column types. The contents of the cell are up for
|
43
|
+
the developer, just like one does when rendering a collection via a simple table.
|
44
|
+
WiceGrid automates implementation of filters, ordering, paginations, CSV export,
|
45
|
+
and so on. Ruby blocks provide an elegant means for this.
|
46
|
+
email:
|
47
|
+
- yuri.leikind@gmail.com
|
48
48
|
executables: []
|
49
49
|
extensions: []
|
50
50
|
extra_rdoc_files: []
|
@@ -64,7 +64,7 @@ files:
|
|
64
64
|
- lib/generators/wice_grid/add_migration_for_serialized_queries_generator.rb
|
65
65
|
- lib/generators/wice_grid/install_generator.rb
|
66
66
|
- lib/generators/wice_grid/templates/create_wice_grid_serialized_queries.rb
|
67
|
-
- lib/generators/wice_grid/templates/wice_grid.
|
67
|
+
- lib/generators/wice_grid/templates/wice_grid.scss
|
68
68
|
- lib/generators/wice_grid/templates/wice_grid.yml
|
69
69
|
- lib/generators/wice_grid/templates/wice_grid_config.rb
|
70
70
|
- lib/wice/active_record_column_wrapper.rb
|
@@ -81,6 +81,7 @@ files:
|
|
81
81
|
- lib/wice/columns/column_string.rb
|
82
82
|
- lib/wice/grid_output_buffer.rb
|
83
83
|
- lib/wice/grid_renderer.rb
|
84
|
+
- lib/wice/helpers/bs_calendar_helpers.rb
|
84
85
|
- lib/wice/helpers/js_calendar_helpers.rb
|
85
86
|
- lib/wice/helpers/wice_grid_misc_view_helpers.rb
|
86
87
|
- lib/wice/helpers/wice_grid_serialized_queries_view_helpers.rb
|
@@ -137,7 +138,7 @@ requirements: []
|
|
137
138
|
rubyforge_project:
|
138
139
|
rubygems_version: 2.2.2
|
139
140
|
signing_key:
|
140
|
-
specification_version:
|
141
|
-
summary: A Rails grid plugin to create grids with sorting, pagination, and
|
142
|
-
|
141
|
+
specification_version: 4
|
142
|
+
summary: A Rails grid plugin to quickly create grids with sorting, pagination, and
|
143
|
+
filters.
|
143
144
|
test_files: []
|