mighty_grid 0.2.0 → 0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/mighty_grid/base.rb +4 -0
- data/lib/mighty_grid/column.rb +11 -12
- data/lib/mighty_grid/helpers/mighty_grid_view_helpers.rb +5 -5
- data/lib/mighty_grid/version.rb +1 -1
- data/spec/lib/column_spec.rb +72 -0
- metadata +3 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4b86bd1ed6d0734fa6d924b5b462469828a65ee0
|
4
|
+
data.tar.gz: 40241a4547e70b2829b4abe1e579cb757ea44fb2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7b364645a807c3268e3f073118f30832c852e9a312f9cb21e554122579a2d5ef27f3480ad43237178c253677f5fa05fceb0336b1b9103d67e98836a98ffba7d2
|
7
|
+
data.tar.gz: 3c25be9911a6eb1905a455a53c08f5e4419c97d1ce2fcebe06ca04f53e976d7c9ebabd2fc51ae6a0a413f55a3fb449cb9a336222e28afaa1cd10e7299a5ff201
|
data/lib/mighty_grid/base.rb
CHANGED
@@ -77,6 +77,10 @@ module MightyGrid
|
|
77
77
|
params[name] || {}
|
78
78
|
end
|
79
79
|
|
80
|
+
def order_params(attribute)
|
81
|
+
{@name => {order: attribute, order_direction: order_direction}}
|
82
|
+
end
|
83
|
+
|
80
84
|
def order_direction
|
81
85
|
(current_grid_params.has_key?('order_direction')) ? (['asc', 'desc'] - [current_grid_params['order_direction'].to_s]).first : MightyGrid.config.order_direction
|
82
86
|
end
|
data/lib/mighty_grid/column.rb
CHANGED
@@ -1,31 +1,30 @@
|
|
1
1
|
module MightyGrid
|
2
2
|
class Column
|
3
3
|
|
4
|
-
attr_reader :
|
4
|
+
attr_reader :attribute, :attrs, :th_attrs, :options, :title
|
5
5
|
attr_accessor :render_value
|
6
6
|
|
7
7
|
def initialize(attr_or_options=nil, options=nil, &block)
|
8
8
|
@attrs = {}
|
9
|
+
@th_attrs = {}
|
9
10
|
if block_given?
|
10
|
-
@options = attr_or_options
|
11
|
-
@display_property = :block
|
11
|
+
@options = attr_or_options || {}
|
12
12
|
@render_value = block
|
13
13
|
else
|
14
|
-
@options = options
|
14
|
+
@options = options || {}
|
15
15
|
@attribute = attr_or_options
|
16
|
-
@
|
17
|
-
@render_value = attribute
|
16
|
+
@render_value = @attribute
|
18
17
|
end
|
19
|
-
@attrs = options[:html] if options
|
20
|
-
@th_attrs = options[:th_html] if options
|
21
|
-
@title = options[:title] || ''
|
18
|
+
@attrs = @options[:html] if @options.has_key?(:html)
|
19
|
+
@th_attrs = @options[:th_html] if @options.has_key?(:th_html)
|
20
|
+
@title = @options.has_key?(:title) && @options[:title] || ''
|
22
21
|
end
|
23
22
|
|
24
23
|
def render(record)
|
25
|
-
case @
|
26
|
-
when
|
24
|
+
case @render_value
|
25
|
+
when String, Symbol
|
27
26
|
return record[@render_value]
|
28
|
-
when
|
27
|
+
when Proc
|
29
28
|
value = @render_value.call(record)
|
30
29
|
return ERB::Util.h(value).to_s.html_safe
|
31
30
|
else
|
@@ -56,8 +56,8 @@ module MightyGrid
|
|
56
56
|
content_tag :tr, header_tr_html do
|
57
57
|
rendering.columns.map { |column|
|
58
58
|
content_tag :th, column.th_attrs do
|
59
|
-
if column.options[:ordering]
|
60
|
-
link_to(column.title, "?#{MightyGrid::MgHash.rec_merge(grid.params,
|
59
|
+
if column.options[:ordering] && column.attribute.present?
|
60
|
+
link_to(column.title, "?#{MightyGrid::MgHash.rec_merge(grid.params, grid.order_params(column.attribute)).except('controller', 'action').to_query}").html_safe
|
61
61
|
else
|
62
62
|
column.title.html_safe
|
63
63
|
end
|
@@ -96,9 +96,9 @@ module MightyGrid
|
|
96
96
|
def blank_slate_template(rendering)
|
97
97
|
if rendering.blank_slate_handler.present?
|
98
98
|
case rendering.blank_slate_handler
|
99
|
-
when Proc;
|
100
|
-
when String;
|
101
|
-
when Hash;
|
99
|
+
when Proc; rendering.blank_slate_handler.call
|
100
|
+
when String; rendering.blank_slate_handler
|
101
|
+
when Hash; render(rendering.blank_slate_handler)
|
102
102
|
end
|
103
103
|
else
|
104
104
|
content_tag :div, 'No records found'
|
data/lib/mighty_grid/version.rb
CHANGED
@@ -0,0 +1,72 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe MightyGrid::Column do
|
4
|
+
|
5
|
+
describe '#new' do
|
6
|
+
describe 'with attribute' do
|
7
|
+
context 'without options' do
|
8
|
+
subject { MightyGrid::Column.new(:name) }
|
9
|
+
context 'parameters' do
|
10
|
+
its(:attribute) { should == :name }
|
11
|
+
its(:render_value) { should == :name }
|
12
|
+
its(:title) { should == '' }
|
13
|
+
its(:attrs) { should == {} }
|
14
|
+
its(:th_attrs) { should == {} }
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
context 'with html option' do
|
19
|
+
let(:options) { {html: {class: 'column'}} }
|
20
|
+
subject { MightyGrid::Column.new(:name, options) }
|
21
|
+
its(:options) { should == options }
|
22
|
+
its(:attrs) { should == options[:html] }
|
23
|
+
end
|
24
|
+
|
25
|
+
context 'with title option' do
|
26
|
+
let(:options) { {title: 'Name'} }
|
27
|
+
subject { MightyGrid::Column.new(:name, options) }
|
28
|
+
its(:options) { should == options }
|
29
|
+
its(:title) { should == options[:title] }
|
30
|
+
end
|
31
|
+
|
32
|
+
context 'with th_html option' do
|
33
|
+
let(:options) { {th_html: {class: 'active'}} }
|
34
|
+
subject { MightyGrid::Column.new(:name, options) }
|
35
|
+
its(:options) { should == options }
|
36
|
+
its(:th_attrs) { should == {class: 'active'} }
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
describe 'with block' do
|
41
|
+
context 'without options' do
|
42
|
+
subject { MightyGrid::Column.new {:test} }
|
43
|
+
context 'parameters' do
|
44
|
+
its(:attribute) { should == nil }
|
45
|
+
its(:title) { should == '' }
|
46
|
+
its(:render_value) { should be_an_instance_of Proc }
|
47
|
+
its(:attrs) { should == {} }
|
48
|
+
its(:th_attrs) { should == {} }
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
describe '.render' do
|
55
|
+
let(:product){ Product.create(name: 'product name') }
|
56
|
+
|
57
|
+
describe 'with attribute' do
|
58
|
+
subject(:column){ MightyGrid::Column.new(:name) }
|
59
|
+
it 'should return attribute value' do
|
60
|
+
column.render(product).should == product[:name]
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
describe 'with block' do
|
65
|
+
subject(:column){ MightyGrid::Column.new { "#{product.name} 1" } }
|
66
|
+
it 'should return attribute value' do
|
67
|
+
column.render(product).should == "#{product[:name]} 1"
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mighty_grid
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- jurrick
|
@@ -126,6 +126,7 @@ files:
|
|
126
126
|
- spec/fake_app/models/config.rb
|
127
127
|
- spec/fake_app/rails_app.rb
|
128
128
|
- spec/lib/base_spec.rb
|
129
|
+
- spec/lib/column_spec.rb
|
129
130
|
- spec/lib/generators/config_generator_spec.rb
|
130
131
|
- spec/requests/products_spec.rb
|
131
132
|
- spec/spec_helper.rb
|
@@ -163,6 +164,7 @@ test_files:
|
|
163
164
|
- spec/fake_app/models/config.rb
|
164
165
|
- spec/fake_app/rails_app.rb
|
165
166
|
- spec/lib/base_spec.rb
|
167
|
+
- spec/lib/column_spec.rb
|
166
168
|
- spec/lib/generators/config_generator_spec.rb
|
167
169
|
- spec/requests/products_spec.rb
|
168
170
|
- spec/spec_helper.rb
|