mighty_grid 0.1.0 → 0.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 471b2069ac7d3edef74750b36042b2a03211677d
4
- data.tar.gz: 4ef8c26232ba12dc5e82422ffaa7512bb3817a73
3
+ metadata.gz: 4844d991f9821e4d7f8c255c34eda1e0e162cf5b
4
+ data.tar.gz: fa07a1f87c95c2ac6d7fafa723d89c3d7010c7b4
5
5
  SHA512:
6
- metadata.gz: 25e7294b0ef6daffd9b0b6f20bc227ff7b1931b50f9522bb8795d2e354f8cd6f84480fa9180da24c1dc54c0e0779373c1a2fec44ec455be65698caef0da738f9
7
- data.tar.gz: 51dfc0a4927e00f0c441e5ae996c8bdc5d86d239784cb0aac80927821b4cfe274cba26a946cba1573b685db2d97842284c91a7f5909904a334c1949097de3e18
6
+ metadata.gz: a7cfed903a2b101ce0fcf90451588fd9162ca5285720e8645c25bfa5535a452e2e37820d3a59c3b36085cbc188ce997387a61edd98bcb6a204a910684e276bf5
7
+ data.tar.gz: 8a26a1320f48f36084caee47be29ceeb490a03dfb170846ae2b792071f76a5ce44197354ac71b0a7ef190ae423f3cb76b77a8140f708f3359cc0e4cbf31a2a28
@@ -1,10 +1,11 @@
1
1
  module MightyGrid
2
2
  class GridRenderer
3
- attr_reader :columns, :th_columns, :total_columns
3
+ attr_reader :columns, :th_columns, :total_columns, :blank_slate_handler
4
4
 
5
5
  def initialize(grid, view)
6
6
  @columns = []
7
7
  @th_columns = []
8
+ @blank_slate_handler = nil
8
9
  end
9
10
 
10
11
  def column(attr_or_options = {}, options=nil, &block)
@@ -23,5 +24,15 @@ module MightyGrid
23
24
  end
24
25
  @total_columns = @columns.count
25
26
  end
27
+
28
+ def blank_slate(html_or_opts, &block)
29
+ if (html_or_opts.is_a?(Hash) && html_or_opts.has_key?(:partial) || html_or_opts.is_a?(String)) && !block_given?
30
+ @blank_slate_handler = html_or_opts
31
+ elsif html_or_opts.nil? && block_given?
32
+ @blank_slate_handler = block
33
+ else
34
+ raise MightyGridArgumentError.new("blank_slate accepts only a string, a block, or :partial => 'path_to_partial' ")
35
+ end
36
+ end
26
37
  end
27
38
  end
@@ -12,29 +12,33 @@ module MightyGrid
12
12
  block.call(rendering)
13
13
 
14
14
  table_html_attrs = options[:html] || {}
15
- table_html_attrs[:class] ||= ''
16
- table_html_classes = ["mighty-grid"] + MightyGrid.config.table_class.split(' ')
17
- table_html_attrs[:class] = (table_html_classes + table_html_attrs[:class].split(' ')).reject(&:blank?).uniq.join(' ')
15
+ table_html_attrs = MightyGrid::MgHTML.join_html_classes(table_html_attrs, 'mighty-grid', MightyGrid.config.table_class)
18
16
 
19
17
  grid.read
20
18
 
21
- grid.output_buffer = content_tag :table, table_html_attrs do
22
- html = header_grid_html(rendering, grid, options)
23
- html += footer_grid_html(rendering, grid)
24
- html += body_grid_html(rendering, grid)
25
- html
19
+ if grid.relation.total_count > 0
20
+ grid.output_buffer = content_tag :table, table_html_attrs do
21
+ html = header_grid_html(rendering, grid, options)
22
+ html += footer_grid_html(rendering, grid)
23
+ html += body_grid_html(rendering, grid)
24
+ html
25
+ end
26
+ else
27
+ grid.output_buffer = blank_slate_template(rendering)
26
28
  end
27
29
 
28
30
  end
29
31
 
32
+ # Used after <tt>define_grid</tt> to actually output the grid HTML code.
33
+ # Usually used with detached filters: first <tt>define_grid</tt>, then <tt>grid_filter</tt>s, and then
34
+ # <tt>render_grid</tt>
30
35
  def render_grid(grid)
31
36
  grid.output_buffer.html_safe
32
37
  end
33
38
 
34
39
  def mighty_filter_for(grid, options={}, &block)
35
40
  html_options = options[:html] ||= {}
36
- html_options[:class] ||= ''
37
- html_options[:class] = (['mighty-grid-filter'] + html_options[:class].split(' ')).reject(&:blank?).uniq.join(' ')
41
+ html_options = MightyGrid::MgHTML.join_html_classes(html_options, 'mighty-grid-filter')
38
42
  html_options[:method] = options.delete(:method) if options.has_key?(:method)
39
43
  html_options[:method] ||= :get
40
44
 
@@ -46,9 +50,7 @@ module MightyGrid
46
50
 
47
51
  def header_grid_html(rendering, grid, options)
48
52
  header_tr_html = options[:header_tr_html] || {}
49
- header_tr_html[:class] ||= ''
50
- header_tr_html_classes = MightyGrid.config.header_tr_class.split(' ')
51
- header_tr_html[:class] = (header_tr_html_classes + header_tr_html[:class].split(' ')).reject(&:blank?).uniq.join(' ')
53
+ header_tr_html = MightyGrid::MgHTML.join_html_classes(header_tr_html, MightyGrid.config.header_tr_class)
52
54
 
53
55
  content_tag :thead do
54
56
  content_tag :tr, header_tr_html do
@@ -79,7 +81,7 @@ module MightyGrid
79
81
 
80
82
  def footer_grid_html(rendering, grid)
81
83
  content_tag :tfoot do
82
- html_record = content_tag :tr do
84
+ content_tag :tr do
83
85
  content_tag :td, colspan: rendering.total_columns do
84
86
  html_pag = paginate(grid.relation, theme: MightyGrid.config.pagination_theme, param_name: "#{grid.name}[page]")
85
87
  html_pag += content_tag :strong do
@@ -87,9 +89,19 @@ module MightyGrid
87
89
  end
88
90
  html_pag.html_safe
89
91
  end
90
- end
92
+ end.html_safe
93
+ end
94
+ end
91
95
 
92
- html_record.html_safe
96
+ def blank_slate_template(rendering)
97
+ if rendering.blank_slate_handler.present?
98
+ case rendering.blank_slate_handler
99
+ when Proc; return rendering.blank_slate_handler.call
100
+ when String; return rendering.blank_slate_handler
101
+ when Hash; return render(rendering.blank_slate_handler)
102
+ end
103
+ else
104
+ content_tag :div, 'No records found'
93
105
  end
94
106
  end
95
107
 
@@ -18,4 +18,16 @@ module MightyGrid
18
18
  end
19
19
  end
20
20
  end
21
+
22
+ module MgHTML
23
+ class << self
24
+ def join_html_classes(html_options, *html_classes)
25
+ html_options[:class] ||= ''
26
+ html_options[:class] = ([html_options[:class]] + html_classes).reject(&:blank?).map do |h_classes|
27
+ h_classes.split(' ')
28
+ end.flatten.uniq.join(' ')
29
+ html_options
30
+ end
31
+ end
32
+ end
21
33
  end
@@ -1,3 +1,3 @@
1
1
  module MightyGrid
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  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.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - jurrick