table_helpers 0.1 → 0.2
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.
- data/lib/table_data.rb +50 -0
- data/lib/table_helpers.rb +75 -1
- data/lib/table_list.rb +27 -0
- data/rails/init.rb +2 -4
- data/test/table_helpers_test.rb +4 -4
- metadata +9 -9
- data/lib/app/helpers/table_data_helper.rb +0 -64
- data/lib/app/helpers/table_list_helper.rb +0 -83
data/lib/table_data.rb
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
class TableData < ActionView::Base
|
|
2
|
+
@label_size = nil
|
|
3
|
+
@set_label_size = false
|
|
4
|
+
|
|
5
|
+
def initialize(label_size)
|
|
6
|
+
@label_size = label_size
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def row(label, data, colspan=false)
|
|
10
|
+
unless @set_label_size && @label_size
|
|
11
|
+
unless colspan
|
|
12
|
+
result = content_tag :tr do
|
|
13
|
+
content_tag(:td, label, :class => "label", :width => @label_size) <<
|
|
14
|
+
content_tag(:td, data)
|
|
15
|
+
end
|
|
16
|
+
else
|
|
17
|
+
result = content_tag :tr do
|
|
18
|
+
content_tag(:td, content_tag(:span, label, :class => "label") << data, :colspan => 2, :width => @label_size)
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
@set_label_size = true
|
|
23
|
+
else
|
|
24
|
+
unless colspan
|
|
25
|
+
result = content_tag :tr do
|
|
26
|
+
content_tag(:td, label, :class => "label") <<
|
|
27
|
+
content_tag(:td, data)
|
|
28
|
+
end
|
|
29
|
+
else
|
|
30
|
+
result = content_tag :tr do
|
|
31
|
+
content_tag(:td, content_tag(:span, label, :class => "label") << data, :colspan => 2, :width => @label_size)
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
return result
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def section(name=nil)
|
|
40
|
+
unless name.nil?
|
|
41
|
+
content_tag :tr do
|
|
42
|
+
content_tag :td, content_tag(:div, name, :class => "section"), :colspan => 2
|
|
43
|
+
end
|
|
44
|
+
else
|
|
45
|
+
content_tag :tr do
|
|
46
|
+
content_tag :td, tag(:hr, :class => "section"), :colspan => 2
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
data/lib/table_helpers.rb
CHANGED
|
@@ -1 +1,75 @@
|
|
|
1
|
-
|
|
1
|
+
module TableHelpers
|
|
2
|
+
def get_table_headers(columns=[], widths={})
|
|
3
|
+
headers = []
|
|
4
|
+
|
|
5
|
+
i = 1
|
|
6
|
+
|
|
7
|
+
for column_name in columns
|
|
8
|
+
if widths.has_key?(i)
|
|
9
|
+
headers.push(content_tag(:th, column_name, :width => widths[i]))
|
|
10
|
+
else
|
|
11
|
+
headers.push(content_tag(:th, column_name))
|
|
12
|
+
end
|
|
13
|
+
i += 1
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
return headers
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def get_sortable_table_headers(columns=[], widths={})
|
|
20
|
+
headers = []
|
|
21
|
+
|
|
22
|
+
p = params
|
|
23
|
+
i = 1
|
|
24
|
+
|
|
25
|
+
for j in 0 .. columns.length - 1
|
|
26
|
+
column_name = columns[j][0]
|
|
27
|
+
sort_columns = columns[j][1..columns[j].length-1]
|
|
28
|
+
|
|
29
|
+
if params[:order_by] == sort_columns.join(', ')
|
|
30
|
+
link = link_to(column_name, p.merge('order_by' => "#{sort_columns.join(' DESC, ') + ' DESC'}"), :class=> "sortdown")
|
|
31
|
+
elsif params[:order_by] == sort_columns.join(' DESC, ') + ' DESC'
|
|
32
|
+
link = link_to(column_name, p.merge('order_by' => sort_columns.join(', ')), :class=> "sortup")
|
|
33
|
+
else
|
|
34
|
+
link = link_to(column_name, p.merge('order_by' => sort_columns.join(', ')), :class=> "sort-none")
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
if widths.has_key?(i)
|
|
38
|
+
headers.push("<th width=\"%s\">%s</th>" % [widths[i],link])
|
|
39
|
+
else
|
|
40
|
+
headers.push("<th>%s</th>" % [link])
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
i += 1
|
|
44
|
+
j += 1
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
return headers
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def table_list(html_options = {}, &block)
|
|
51
|
+
raise "need a block" unless block_given?
|
|
52
|
+
|
|
53
|
+
t = TableList.new self
|
|
54
|
+
|
|
55
|
+
result = capture do
|
|
56
|
+
content_tag :table, html_options do
|
|
57
|
+
block.call(t)
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
concat(result)
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def table_data(options = {}, &block)
|
|
65
|
+
options[:label_size] ||= nil
|
|
66
|
+
|
|
67
|
+
t = TableData.new(options[:label_size])
|
|
68
|
+
|
|
69
|
+
result = content_tag(:table, :class => 'info') do
|
|
70
|
+
block.call(t)
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
concat(result)
|
|
74
|
+
end
|
|
75
|
+
end
|
data/lib/table_list.rb
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
class TableList
|
|
2
|
+
def initialize(instance)
|
|
3
|
+
@instance = instance
|
|
4
|
+
end
|
|
5
|
+
|
|
6
|
+
def sortable_headers(columns=[], widths={})
|
|
7
|
+
@instance.content_tag :tr do
|
|
8
|
+
@instance.get_sortable_table_headers(columns, widths)
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def headers(columns=[], widths={})
|
|
13
|
+
@instance.content_tag :tr do
|
|
14
|
+
@instance.get_table_headers(columns, widths)
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def td(data)
|
|
19
|
+
@instance.content_tag :td, data
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def tr(&block)
|
|
23
|
+
raise "need a block" unless block_given?
|
|
24
|
+
|
|
25
|
+
@instance.content_tag(:tr, block.call(self))
|
|
26
|
+
end
|
|
27
|
+
end
|
data/rails/init.rb
CHANGED
data/test/table_helpers_test.rb
CHANGED
|
@@ -2,12 +2,12 @@ require 'test_helper'
|
|
|
2
2
|
require 'action_view'
|
|
3
3
|
require 'action_controller'
|
|
4
4
|
require 'action_view/test_case'
|
|
5
|
-
require File.dirname(__FILE__) + '/../lib/
|
|
6
|
-
require File.dirname(__FILE__) + '/../lib/
|
|
5
|
+
require File.dirname(__FILE__) + '/../lib/table_data.rb'
|
|
6
|
+
require File.dirname(__FILE__) + '/../lib/table_list.rb'
|
|
7
|
+
require File.dirname(__FILE__) + '/../lib/table_helpers.rb'
|
|
7
8
|
|
|
8
9
|
class TableHelpersTest < ActionView::TestCase
|
|
9
|
-
include
|
|
10
|
-
include TableListHelper
|
|
10
|
+
include TableHelpers
|
|
11
11
|
|
|
12
12
|
test "table_list_helper_with_headers" do
|
|
13
13
|
result = capture do
|
metadata
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: table_helpers
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
hash:
|
|
5
|
-
prerelease:
|
|
4
|
+
hash: 15
|
|
5
|
+
prerelease: false
|
|
6
6
|
segments:
|
|
7
7
|
- 0
|
|
8
|
-
-
|
|
9
|
-
version: "0.
|
|
8
|
+
- 2
|
|
9
|
+
version: "0.2"
|
|
10
10
|
platform: ruby
|
|
11
11
|
authors:
|
|
12
12
|
- "Damian Ba\xC4\x87kowski"
|
|
@@ -14,7 +14,7 @@ autorequire:
|
|
|
14
14
|
bindir: bin
|
|
15
15
|
cert_chain: []
|
|
16
16
|
|
|
17
|
-
date: 2011-02-
|
|
17
|
+
date: 2011-02-03 00:00:00 +01:00
|
|
18
18
|
default_executable:
|
|
19
19
|
dependencies: []
|
|
20
20
|
|
|
@@ -30,11 +30,11 @@ files:
|
|
|
30
30
|
- Rakefile
|
|
31
31
|
- lib/tasks/table_helpers.rake
|
|
32
32
|
- lib/table_helpers.rb
|
|
33
|
-
- lib/
|
|
34
|
-
- lib/
|
|
33
|
+
- lib/table_list.rb
|
|
34
|
+
- lib/table_data.rb
|
|
35
35
|
- rails/init.rb
|
|
36
|
-
- test/test_helper.rb
|
|
37
36
|
- test/table_helpers_test.rb
|
|
37
|
+
- test/test_helper.rb
|
|
38
38
|
- README
|
|
39
39
|
has_rdoc: true
|
|
40
40
|
homepage: https://github.com/paki-paki/table_helpers
|
|
@@ -66,7 +66,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
66
66
|
requirements: []
|
|
67
67
|
|
|
68
68
|
rubyforge_project:
|
|
69
|
-
rubygems_version: 1.
|
|
69
|
+
rubygems_version: 1.3.7
|
|
70
70
|
signing_key:
|
|
71
71
|
specification_version: 3
|
|
72
72
|
summary: Table helpers for Rails
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
module TableDataHelper
|
|
2
|
-
def table_data(options = {}, &block)
|
|
3
|
-
options[:label_size] ||= nil
|
|
4
|
-
|
|
5
|
-
t = TableData.new(options[:label_size])
|
|
6
|
-
|
|
7
|
-
result = content_tag(:table, :class => 'info') do
|
|
8
|
-
block.call(t)
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
concat(result)
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
class TableData < ActionView::Base
|
|
15
|
-
@label_size = nil
|
|
16
|
-
@set_label_size = false
|
|
17
|
-
|
|
18
|
-
def initialize(label_size)
|
|
19
|
-
@label_size = label_size
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
def row(label, data, colspan=false)
|
|
23
|
-
unless @set_label_size && @label_size
|
|
24
|
-
unless colspan
|
|
25
|
-
result = content_tag :tr do
|
|
26
|
-
content_tag(:td, label, :class => "label", :width => @label_size) <<
|
|
27
|
-
content_tag(:td, data)
|
|
28
|
-
end
|
|
29
|
-
else
|
|
30
|
-
result = content_tag :tr do
|
|
31
|
-
content_tag(:td, content_tag(:span, label, :class => "label") << data, :colspan => 2, :width => @label_size)
|
|
32
|
-
end
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
@set_label_size = true
|
|
36
|
-
else
|
|
37
|
-
unless colspan
|
|
38
|
-
result = content_tag :tr do
|
|
39
|
-
content_tag(:td, label, :class => "label") <<
|
|
40
|
-
content_tag(:td, data)
|
|
41
|
-
end
|
|
42
|
-
else
|
|
43
|
-
result = content_tag :tr do
|
|
44
|
-
content_tag(:td, content_tag(:span, label, :class => "label") << data, :colspan => 2, :width => @label_size)
|
|
45
|
-
end
|
|
46
|
-
end
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
return result
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
def section(name=nil)
|
|
53
|
-
unless name.nil?
|
|
54
|
-
content_tag :tr do
|
|
55
|
-
content_tag :td, content_tag(:div, name, :class => "section"), :colspan => 2
|
|
56
|
-
end
|
|
57
|
-
else
|
|
58
|
-
content_tag :tr do
|
|
59
|
-
content_tag :td, tag(:hr, :class => "section"), :colspan => 2
|
|
60
|
-
end
|
|
61
|
-
end
|
|
62
|
-
end
|
|
63
|
-
end
|
|
64
|
-
end
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
module TableListHelper
|
|
2
|
-
def get_table_headers(columns=[], widths={})
|
|
3
|
-
headers = []
|
|
4
|
-
|
|
5
|
-
i = 1
|
|
6
|
-
|
|
7
|
-
for column_name in columns
|
|
8
|
-
if widths.has_key?(i)
|
|
9
|
-
headers.push(content_tag(:th, column_name, :width => widths[i]))
|
|
10
|
-
else
|
|
11
|
-
headers.push(content_tag(:th, column_name))
|
|
12
|
-
end
|
|
13
|
-
i += 1
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
return headers
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
def get_sortable_table_headers(columns=[], widths={})
|
|
20
|
-
headers = []
|
|
21
|
-
|
|
22
|
-
p = params
|
|
23
|
-
i = 1
|
|
24
|
-
|
|
25
|
-
for j in 0 .. columns.length - 1
|
|
26
|
-
column_name = columns[j][0]
|
|
27
|
-
sort_columns = columns[j][1..columns[j].length-1]
|
|
28
|
-
|
|
29
|
-
if params[:order_by] == sort_columns.join(', ')
|
|
30
|
-
link = link_to(column_name, p.merge('order_by' => "#{sort_columns.join(' DESC, ') + ' DESC'}"), :class=> "sortdown")
|
|
31
|
-
elsif params[:order_by] == sort_columns.join(' DESC, ') + ' DESC'
|
|
32
|
-
link = link_to(column_name, p.merge('order_by' => sort_columns.join(', ')), :class=> "sortup")
|
|
33
|
-
else
|
|
34
|
-
link = link_to(column_name, p.merge('order_by' => sort_columns.join(', ')), :class=> "sort-none")
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
if widths.has_key?(i)
|
|
38
|
-
headers.push("<th width=\"%s\">%s</th>" % [widths[i],link])
|
|
39
|
-
else
|
|
40
|
-
headers.push("<th>%s</th>" % [link])
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
i += 1
|
|
44
|
-
j += 1
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
return headers
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
def table_list(html_options = {}, &block)
|
|
51
|
-
raise "need a block" unless block_given?
|
|
52
|
-
|
|
53
|
-
result = capture do
|
|
54
|
-
content_tag :table, html_options do
|
|
55
|
-
block.call(self)
|
|
56
|
-
end
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
concat(result)
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
def sortable_headers(columns=[], widths={})
|
|
63
|
-
content_tag :tr do
|
|
64
|
-
get_sortable_table_headers(columns, widths)
|
|
65
|
-
end
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
def headers(columns=[], widths={})
|
|
69
|
-
content_tag :tr do
|
|
70
|
-
get_table_headers(columns, widths)
|
|
71
|
-
end
|
|
72
|
-
end
|
|
73
|
-
|
|
74
|
-
def td(data)
|
|
75
|
-
content_tag :td, data
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
def tr(&block)
|
|
79
|
-
raise "need a block" unless block_given?
|
|
80
|
-
|
|
81
|
-
content_tag(:tr, block.call(self))
|
|
82
|
-
end
|
|
83
|
-
end
|