spectabular 2.0.1 → 2.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,12 +1,12 @@
1
1
  module Spectabular
2
2
  module Helper
3
-
3
+
4
4
  def table_for(collection,*columns)
5
5
  columns = columns.first if columns.size <= 1
6
6
  columns ||= default_columns_for(collection)
7
- @table = Spectabular::Table.new( :collection => instance_variable_get("@#{collection}"),
8
- :collection_name => collection.to_s.humanize,
9
- :columns => columns,
7
+ @table = Spectabular::Table.new( :collection => instance_variable_get("@#{collection}"),
8
+ :collection_name => collection.to_s.humanize,
9
+ :columns => columns,
10
10
  :context => self
11
11
  )
12
12
  output = []
@@ -19,8 +19,8 @@ module Spectabular
19
19
  join_formatted output
20
20
  end
21
21
 
22
- protected
23
-
22
+ private
23
+
24
24
  def join_formatted(array,join_string="\n")
25
25
  join_string.html_safe + safe_join(array, join_string.html_safe ) + join_string.html_safe
26
26
  end
@@ -28,34 +28,34 @@ module Spectabular
28
28
  def spectabular_header
29
29
  content_tag(:thead, header_row).html_safe
30
30
  end
31
-
31
+
32
32
  def header_row
33
33
  content_tag(:tr, join_formatted(mapped_headers)).html_safe
34
34
  end
35
-
35
+
36
36
  def mapped_headers
37
- @table.headers.map do |header|
38
- content_tag(:th, header)
37
+ @table.headers.map do |header|
38
+ content_tag(:th, header)
39
39
  end
40
40
  end
41
41
 
42
42
  def spectabular_body
43
43
  content_tag(:tbody, join_formatted(mapped_body)).html_safe
44
44
  end
45
-
45
+
46
46
  def mapped_body
47
- @table.rows.map do |record,row|
47
+ @table.rows.map do |record,row|
48
48
  @column_number = 0
49
49
  content_tag(:tr, join_formatted(mapped_row(row)), :id => dom_id(record), :class => row_class_for(record) )
50
50
  end
51
51
  end
52
52
 
53
53
  def mapped_row(row)
54
- row.map do |name,cell|
54
+ row.map do |name,cell|
55
55
  content_tag :td, cell.to_s.html_safe, :class => cell_class_for(name,@column_number+=1)
56
56
  end
57
57
  end
58
-
58
+
59
59
  def row_class_for(record)
60
60
  token = [cycle('odd','even')]
61
61
  is_active = [:active?, :is_active?, :published?].find {|m| record.respond_to? m }
@@ -64,16 +64,30 @@ module Spectabular
64
64
  end
65
65
  token.join(" ")
66
66
  end
67
-
67
+
68
68
  def cell_class_for(name,column_number)
69
69
  column_number == 1 ? "tbl-#{name} lead" : name
70
70
  end
71
71
 
72
72
  def spectabular_pagination
73
- return "" unless @table.will_paginate?
74
- content_tag(:p, will_paginate(@table.collection), :class => 'pagination').html_safe
73
+ return "" if pagination_method.nil?
74
+ content_tag(:p, self.send(pagination_method, @table.collection), :class => 'pagination').html_safe
75
75
  end
76
-
76
+
77
+ # Currently supports:
78
+ # - will_paginate
79
+ # - kaminari
80
+ def pagination_method
81
+ case
82
+ when self.respond_to?(:will_paginate)
83
+ :will_paginate
84
+ when self.respond_to?(:paginate)
85
+ :paginate
86
+ else
87
+ nil
88
+ end
89
+ end
90
+
77
91
  def default_columns_for(collection)
78
92
  {}.tap do |columns_hash|
79
93
  collection.to_s.classify.constantize.content_columns.map do |c|
@@ -81,7 +95,7 @@ module Spectabular
81
95
  end
82
96
  end
83
97
  end
84
-
98
+
85
99
  def default_formatting_for(record,name,column_type)
86
100
  attribute = record.send(name)
87
101
  case column_type
@@ -95,4 +109,4 @@ module Spectabular
95
109
  end
96
110
 
97
111
  end
98
- end
112
+ end
@@ -1,7 +1,7 @@
1
1
  module Spectabular
2
2
 
3
3
  class Table
4
- attr_accessor :columns, :skip_sorting_row, :collection, :collection_name, :context, :will_paginate
4
+ attr_accessor :columns, :skip_sorting_row, :collection, :collection_name, :context
5
5
  attr_writer :default_empty
6
6
 
7
7
  def initialize(options={})
@@ -15,7 +15,7 @@ module Spectabular
15
15
  when Array
16
16
  @columns.flatten
17
17
  when Hash
18
- sorted_hash_for(@columns).map {|g| {:header => g[0].to_s.gsub(/^\d+\s?-\s?/,''), :helper => g[1]}}
18
+ sorted_hash_for(@columns).map {|g| {:header => header_for(g[0]), :helper => g[1]}}
19
19
  else
20
20
  [@columns]
21
21
  end
@@ -59,14 +59,6 @@ module Spectabular
59
59
  end
60
60
  end
61
61
 
62
- def will_paginate?
63
- if will_paginate.nil?
64
- collection_supports_pagination?
65
- else
66
- will_paginate
67
- end
68
- end
69
-
70
62
  def headers
71
63
  @headers ||= columns.map do |column|
72
64
  if column.respond_to? :to_sym
@@ -98,9 +90,13 @@ module Spectabular
98
90
  items
99
91
  end
100
92
  end
101
-
102
- def collection_supports_pagination?
103
- collection.respond_to? :total_pages
93
+
94
+ def header_for(name)
95
+ if name.respond_to?(:sub)
96
+ name.sub(/^\d+\s?-\s?/,'')
97
+ else
98
+ name.to_s.titlecase
99
+ end
104
100
  end
105
101
 
106
102
  end
@@ -1,3 +1,3 @@
1
1
  module Spectabular
2
- VERSION = "2.0.1"
2
+ VERSION = "2.1"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spectabular
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.1
4
+ version: '2.1'
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,22 +9,22 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-01-14 00:00:00.000000000 Z
12
+ date: 2012-04-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
16
- requirement: &70294672902480 !ruby/object:Gem::Requirement
16
+ requirement: &70205170674100 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
20
20
  - !ruby/object:Gem::Version
21
- version: 3.2.0.rc2
21
+ version: '3.0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70294672902480
24
+ version_requirements: *70205170674100
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: sqlite3
27
- requirement: &70294672916840 !ruby/object:Gem::Requirement
27
+ requirement: &70205170669800 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,7 +32,7 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70294672916840
35
+ version_requirements: *70205170669800
36
36
  description: Spectabular provides a helper method which turns ActiveModel resources
37
37
  into tabular displays. It provides some minimal customization options.
38
38
  email:
@@ -94,7 +94,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
94
94
  version: '0'
95
95
  segments:
96
96
  - 0
97
- hash: 1773474990839441423
97
+ hash: -1739884906625239554
98
98
  required_rubygems_version: !ruby/object:Gem::Requirement
99
99
  none: false
100
100
  requirements:
@@ -103,7 +103,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
103
103
  version: '0'
104
104
  segments:
105
105
  - 0
106
- hash: 1773474990839441423
106
+ hash: -1739884906625239554
107
107
  requirements: []
108
108
  rubyforge_project:
109
109
  rubygems_version: 1.8.11