mighty_grid 0.6.1 → 0.7.0
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 +4 -4
- data/README.md +24 -6
- data/config/locales/en.yml +2 -1
- data/lib/generators/mighty_grid/templates/mighty_grid_config.rb +1 -1
- data/lib/mighty_grid/base.rb +15 -3
- data/lib/mighty_grid/column.rb +3 -2
- data/lib/mighty_grid/filter_renderer.rb +11 -4
- data/lib/mighty_grid/grid_renderer.rb +6 -1
- data/lib/mighty_grid/helpers/mighty_grid_view_helpers.rb +11 -5
- data/lib/mighty_grid/version.rb +1 -1
- data/mighty_grid.gemspec +1 -1
- data/spec/lib/base_spec.rb +5 -3
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4cee3ab6ecd36d2c2204e7e0aeedaf98815f1c0b
|
4
|
+
data.tar.gz: 2457d2990260bb2a78977943ff6bc620b9c09ccf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 888803988c9136627192a26fa6ea7c5420b02a6bb70d993a8e0f800e231c4711e787ac97ccb7304f5c7a19c3bb03038a295f5034e1f096e4ba0fc167e44ca7e3
|
7
|
+
data.tar.gz: 92d5a885185a8113182ea51eafb4d67e54d4e36d98ba37bae08de8845d13d46ffeeea1a3b79edd8f8235aa9ee44541c2dc06ac2a74d707baf935dea219a35bb0
|
data/README.md
CHANGED
@@ -45,12 +45,19 @@ end
|
|
45
45
|
You can configure the following default values by overriding these values using <tt>MightyGrid.configure</tt> method.
|
46
46
|
|
47
47
|
```
|
48
|
-
per_page
|
49
|
-
order_direction
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
48
|
+
per_page # 15 by default
|
49
|
+
order_direction # 'asc' by default
|
50
|
+
order_type # 'single' by default
|
51
|
+
order_asc # '↑' by default
|
52
|
+
order_desc # '↓' by default
|
53
|
+
order_asc_link_class # '' by default
|
54
|
+
order_desc_link_class # '' by default
|
55
|
+
order_active_link_class # 'mg-order-active' by default
|
56
|
+
order_wrapper_class # '' by default
|
57
|
+
grid_name # 'grid' by default
|
58
|
+
table_class # '' by default
|
59
|
+
header_tr_class # '' by default
|
60
|
+
pagination_theme # 'mighty_grid' by default
|
54
61
|
```
|
55
62
|
|
56
63
|
There's a handy generator that generates the default configuration file into config/initializers directory.
|
@@ -58,6 +65,17 @@ Run the following generator command, then edit the generated file.
|
|
58
65
|
|
59
66
|
$ rails g mighty_grid:install
|
60
67
|
|
68
|
+
## Running tests
|
69
|
+
|
70
|
+
To run the tests you need specify database and Rails version.
|
71
|
+
|
72
|
+
* List of available Rails versions: 3.2, 4.0, 4.1.
|
73
|
+
* List of DB: sqlite, postgresql, mysql.
|
74
|
+
|
75
|
+
Example run:
|
76
|
+
|
77
|
+
$ DB=postgresql appraisal rails_32 rake spec cucumber
|
78
|
+
|
61
79
|
## Contributing
|
62
80
|
|
63
81
|
1. Fork it ( http://github.com/jurrick/mighty_grid/fork )
|
data/config/locales/en.yml
CHANGED
data/lib/mighty_grid/base.rb
CHANGED
@@ -15,7 +15,8 @@ module MightyGrid
|
|
15
15
|
include: nil,
|
16
16
|
joins: nil,
|
17
17
|
conditions: nil,
|
18
|
-
group: nil
|
18
|
+
group: nil,
|
19
|
+
order: nil
|
19
20
|
}
|
20
21
|
|
21
22
|
opts.assert_valid_keys(@options.keys)
|
@@ -32,7 +33,12 @@ module MightyGrid
|
|
32
33
|
|
33
34
|
def read
|
34
35
|
apply_filters
|
35
|
-
|
36
|
+
if @mg_params[:order].present? && current_order_direction.present?
|
37
|
+
@relation = @relation.order("#{@mg_params[:order]} #{current_order_direction.to_sym}")
|
38
|
+
else
|
39
|
+
@relation = @relation.order(@mg_params[:order])
|
40
|
+
end
|
41
|
+
|
36
42
|
@relation = @relation
|
37
43
|
.page(@mg_params[:page])
|
38
44
|
.per(@mg_params[:per_page])
|
@@ -81,6 +87,7 @@ module MightyGrid
|
|
81
87
|
# Load grid parameters
|
82
88
|
def load_grid_params
|
83
89
|
@mg_params = {}
|
90
|
+
@mg_params[filter_param_name.to_sym] = {}
|
84
91
|
@mg_params.merge!(@options)
|
85
92
|
if current_grid_params
|
86
93
|
@mg_params.merge!(current_grid_params.symbolize_keys)
|
@@ -97,7 +104,7 @@ module MightyGrid
|
|
97
104
|
|
98
105
|
# Get filter parameters
|
99
106
|
def filter_params
|
100
|
-
|
107
|
+
@mg_params[filter_param_name.to_sym] || {}
|
101
108
|
end
|
102
109
|
|
103
110
|
# Get filter parameter name
|
@@ -105,6 +112,11 @@ module MightyGrid
|
|
105
112
|
'f'
|
106
113
|
end
|
107
114
|
|
115
|
+
# Add param in filters
|
116
|
+
def add_filter_param(param, value)
|
117
|
+
@mg_params[filter_param_name.to_sym][param] = value unless @mg_params[filter_param_name.to_sym].key?(param)
|
118
|
+
end
|
119
|
+
|
108
120
|
# Get filter name by field
|
109
121
|
def get_filter_name(field, model = nil)
|
110
122
|
field_name = model.present? ? "#{model.table_name}.#{field}" : field
|
data/lib/mighty_grid/column.rb
CHANGED
@@ -29,9 +29,10 @@ module MightyGrid
|
|
29
29
|
case @render_value
|
30
30
|
when String, Symbol
|
31
31
|
rec = @model ? record.send(@model.to_s.underscore) : record
|
32
|
-
return rec[@render_value]
|
32
|
+
return rec[@render_value.to_sym]
|
33
33
|
when Proc
|
34
|
-
value = @render_value.call(record)
|
34
|
+
value, attrs = @render_value.call(record)
|
35
|
+
@attrs.merge!(attrs || {})
|
35
36
|
return ERB::Util.h(value).to_s.html_safe
|
36
37
|
else
|
37
38
|
# raise
|
@@ -25,11 +25,14 @@ module MightyGrid
|
|
25
25
|
# Get <tt>select</tt> HTML tag
|
26
26
|
def select(name, option_tags = nil, options = {})
|
27
27
|
@grid.filters[name] = option_tags
|
28
|
-
selected = nil
|
29
|
-
selected = options.delete(:selected) if options.key?(:selected)
|
30
|
-
|
31
28
|
f_options = filter_options(name, options)
|
32
29
|
|
30
|
+
selected = nil
|
31
|
+
if options.key?(:selected)
|
32
|
+
selected = options.delete(:selected)
|
33
|
+
@grid.add_filter_param(get_filter_param_name(name, f_options[:model]), selected)
|
34
|
+
end
|
35
|
+
|
33
36
|
selected = get_filter_param(name, f_options[:model]) if get_filter_param(name, f_options[:model])
|
34
37
|
opts = options_for_select(option_tags, selected)
|
35
38
|
|
@@ -61,8 +64,12 @@ module MightyGrid
|
|
61
64
|
|
62
65
|
private
|
63
66
|
|
67
|
+
def get_filter_param_name(name, model = nil)
|
68
|
+
model ? "#{model.table_name}.#{name}" : name.to_s
|
69
|
+
end
|
70
|
+
|
64
71
|
def get_filter_param(name, model = nil)
|
65
|
-
filter_name =
|
72
|
+
filter_name = get_filter_param_name(name, model)
|
66
73
|
@grid.filter_params.key?(filter_name) ? @grid.filter_params[filter_name] : nil
|
67
74
|
end
|
68
75
|
|
@@ -1,12 +1,13 @@
|
|
1
1
|
module MightyGrid
|
2
2
|
class GridRenderer
|
3
|
-
attr_reader :columns, :th_columns, :blank_slate_handler
|
3
|
+
attr_reader :columns, :th_columns, :blank_slate_handler, :row_attributes_handler
|
4
4
|
|
5
5
|
def initialize(grid, view)
|
6
6
|
@grid = grid
|
7
7
|
@columns = []
|
8
8
|
@th_columns = []
|
9
9
|
@blank_slate_handler = nil
|
10
|
+
@row_attributes_handler = proc {}
|
10
11
|
end
|
11
12
|
|
12
13
|
def column(attr_or_options = {}, options = nil, &block)
|
@@ -44,6 +45,10 @@ module MightyGrid
|
|
44
45
|
@columns << MightyGrid::Column.new(title: 'Actions') { |object| @grid.controller.render_to_string(partial: options[:partial], locals: { actions: options[:only], object: object }) }
|
45
46
|
end
|
46
47
|
|
48
|
+
def row_attributes(&block)
|
49
|
+
@row_attributes_handler = block if block_given?
|
50
|
+
end
|
51
|
+
|
47
52
|
def blank_slate(html_or_opts = nil, &block)
|
48
53
|
if (html_or_opts.is_a?(Hash) && html_or_opts.key?(:partial) || html_or_opts.is_a?(String)) && !block_given?
|
49
54
|
@blank_slate_handler = html_or_opts
|
@@ -8,7 +8,7 @@ module MightyGrid
|
|
8
8
|
def define_grid(grid, opts = {}, &block)
|
9
9
|
rendering = GridRenderer.new(grid, self)
|
10
10
|
|
11
|
-
|
11
|
+
yield rendering
|
12
12
|
|
13
13
|
options = {
|
14
14
|
html: {},
|
@@ -137,7 +137,8 @@ module MightyGrid
|
|
137
137
|
content_tag :tbody do
|
138
138
|
html_record = ''
|
139
139
|
grid.relation.each do |rel|
|
140
|
-
|
140
|
+
row_attributes = rendering.row_attributes_handler.call(rel) || {}
|
141
|
+
html_record += content_tag :tr, row_attributes do
|
141
142
|
rendering.columns.map { |column| content_tag :td, column.render(rel), column.attrs }.join.html_safe
|
142
143
|
end
|
143
144
|
end
|
@@ -150,13 +151,18 @@ module MightyGrid
|
|
150
151
|
content_tag :tr do
|
151
152
|
content_tag :td, colspan: rendering.total_columns do
|
152
153
|
html_pag = paginate(grid.relation, theme: MightyGrid.config.pagination_theme, param_name: "#{grid.name}[page]")
|
153
|
-
html_pag +=
|
154
|
-
"#{grid.relation.offset_value + 1} – #{grid.relation.offset_value + grid.relation.size} of #{grid.relation.total_count}".html_safe
|
155
|
-
end
|
154
|
+
html_pag += display_entries(grid)
|
156
155
|
html_pag.html_safe
|
157
156
|
end
|
158
157
|
end.html_safe
|
159
158
|
end
|
160
159
|
end
|
160
|
+
|
161
|
+
def display_entries(grid)
|
162
|
+
first = grid.relation.offset_value + 1
|
163
|
+
last = grid.relation.offset_value + grid.relation.length
|
164
|
+
total = grid.relation.total_count
|
165
|
+
I18n.t("models.#{grid.klass.table_name}.display_entries", default: :'display_entries', scope: 'mighty_grid', first: first, last: last, total: total).html_safe
|
166
|
+
end
|
161
167
|
end
|
162
168
|
end
|
data/lib/mighty_grid/version.rb
CHANGED
data/mighty_grid.gemspec
CHANGED
data/spec/lib/base_spec.rb
CHANGED
@@ -13,8 +13,10 @@ describe MightyGrid::Base do
|
|
13
13
|
include: nil,
|
14
14
|
joins: nil,
|
15
15
|
conditions: nil,
|
16
|
-
group: nil
|
16
|
+
group: nil,
|
17
|
+
order: nil
|
17
18
|
}
|
19
|
+
@mg_params = @default_options.merge(f: {})
|
18
20
|
end
|
19
21
|
|
20
22
|
describe '#new' do
|
@@ -22,7 +24,7 @@ describe MightyGrid::Base do
|
|
22
24
|
subject { MightyGrid::Base.new(User, @controller) }
|
23
25
|
its(:params) { should == {} }
|
24
26
|
its(:options) { should == @default_options }
|
25
|
-
its(:mg_params) { should == @
|
27
|
+
its(:mg_params) { should == @mg_params }
|
26
28
|
its(:filters) { should == {} }
|
27
29
|
its(:name) { should == 'grid' }
|
28
30
|
its(:relation) { should == User }
|
@@ -45,7 +47,7 @@ describe MightyGrid::Base do
|
|
45
47
|
before(:all) { @controller.params = { 'grid' => { page: 5, per_page: 30, name: 'grid2' } } }
|
46
48
|
subject { MightyGrid::Base.new(User, @controller) }
|
47
49
|
its(:params) { should == @controller.params }
|
48
|
-
its(:mg_params) { should == @
|
50
|
+
its(:mg_params) { should == @mg_params.merge(page: 5, per_page: 30, name: 'grid2') }
|
49
51
|
after(:all) { @controller.params = {} }
|
50
52
|
end
|
51
53
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mighty_grid
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- jurrick
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-10-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -72,14 +72,14 @@ dependencies:
|
|
72
72
|
requirements:
|
73
73
|
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: 0.15
|
75
|
+
version: '0.15'
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: 0.15
|
82
|
+
version: '0.15'
|
83
83
|
description: Flexible grid for Rails
|
84
84
|
email:
|
85
85
|
- jurianp@gmail.com
|