elskwid-munger 0.1.4.3 → 0.1.4.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -27,70 +27,81 @@ module Munger #:nodoc:
27
27
 
28
28
  x.table(:class => @classes[:table]) do
29
29
 
30
- x.tr do
31
- @report.columns.each do |column|
32
- x.th(:class => 'columnTitle') { x << @report.column_title(column) }
30
+ x.thead do
31
+ x.tr do
32
+ @report.columns.each do |column|
33
+ x.th(:class => 'columnTitle') { x << @report.column_title(column) }
34
+ end
33
35
  end
34
36
  end
35
37
 
36
- @report.process_data.each do |row|
38
+ x.tbody do
39
+ @report.process_data.each do |row|
37
40
 
38
- classes = []
39
- classes << row[:meta][:row_styles]
40
- classes << 'group' + row[:meta][:group].to_s if row[:meta][:group]
41
- classes << cycle('even', 'odd')
42
- classes.compact!
41
+ classes = []
42
+ classes << row[:meta][:row_styles]
43
+ classes << 'group' + row[:meta][:group].to_s if row[:meta][:group]
44
+ classes << cycle('even', 'odd')
45
+ classes.compact!
43
46
 
44
- if row[:meta][:group_header]
45
- classes << 'groupHeader' + row[:meta][:group_header].to_s
46
- end
47
+ if row[:meta][:group_header]
48
+ classes << 'groupHeader' + row[:meta][:group_header].to_s
49
+ end
47
50
 
48
- row_attrib = {}
49
- row_attrib = {:class => classes.join(' ')} if classes.size > 0
51
+ row_attrib = {}
52
+ row_attrib = {:class => classes.join(' ')} if classes.size > 0
50
53
 
51
- x.tr(row_attrib) do
52
54
  if row[:meta][:group_header]
53
- header = @report.column_title(row[:meta][:group_name]) + ' : ' + row[:meta][:group_value].to_s
54
- x.th(:colspan => @report.columns.size) { x << header }
55
- else
56
- @report.columns.each do |column|
57
-
58
- cell_attrib = {}
59
- if cst = row[:meta][:cell_styles]
60
- cst = Item.ensure(cst)
61
- if cell_styles = cst[column]
62
- cell_attrib = {:class => cell_styles.join(' ')}
63
- end
55
+ x.thead do
56
+ x.tr(row_attrib) do
57
+ header = @report.column_title(row[:meta][:group_name]) + ' : ' + row[:meta][:group_value].to_s
58
+ x.th(:colspan => @report.columns.size) { x << header }
64
59
  end
65
-
66
- # x.td(cell_attrib) { x << row[:data][column].to_s }
67
- # TODO: Clean this up, I don't like it but it's working
68
- # output the cell
69
- # x.td(cell_attrib) { x << row[:data][column].to_s }
70
- x.td(cell_attrib) do
71
- formatter,*args = *@report.column_formatter(column)
72
- col_data = row[:data] #[column]
73
- if formatter && col_data[column]
74
- formatted = if formatter.class == Proc
75
- data = col_data.respond_to?(:data) ? col_data.data : col_data
76
- formatter.call(data)
77
- elsif col_data[column].respond_to? formatter
78
- col_data[column].send(formatter, *args)
79
- elsif
80
- col_data[column].to_s
60
+ end
61
+ else
62
+ x.tr(row_attrib) do
63
+ @report.columns.each do |column|
64
+
65
+ cell_attrib = {}
66
+ if cst = row[:meta][:cell_styles]
67
+ cst = Item.ensure(cst)
68
+ if cell_styles = cst[column]
69
+ cell_attrib = {:class => cell_styles.join(' ')}
81
70
  end
82
- else
83
- formatted = col_data[column].to_s
84
71
  end
85
- x << formatted.to_s
86
- end
87
-
88
- end
72
+
73
+ # x.td(cell_attrib) { x << row[:data][column].to_s }
74
+ # TODO: Clean this up, I don't like it but it's working
75
+ # output the cell
76
+ # x.td(cell_attrib) { x << row[:data][column].to_s }
77
+ x.td(cell_attrib) do
78
+ formatter,*args = *@report.column_formatter(column)
79
+ col_data = row[:data] #[column]
80
+ if formatter && col_data[column]
81
+ formatted = if formatter.class == Proc
82
+ data = col_data.respond_to?(:data) ? col_data.data : col_data
83
+ formatter.call(data)
84
+ elsif col_data[column].respond_to? formatter
85
+ col_data[column].send(formatter, *args)
86
+ elsif
87
+ col_data[column].to_s
88
+ end
89
+ else
90
+ formatted = col_data[column].to_s
91
+ end
92
+ x << formatted.to_s
93
+ end
94
+
95
+ end # columns
96
+ end # x.tr
89
97
  end
90
- end
91
- end
98
+
99
+ end # rows
100
+
101
+ end # x.tbody
92
102
 
93
- end
103
+ end # x.table
104
+
94
105
  end
95
106
 
96
107
  def cycle(one, two)
@@ -31,81 +31,92 @@ module Munger #:nodoc:
31
31
 
32
32
  x.table(:class => @classes[:table]) do
33
33
 
34
- x.tr do
35
- @report.columns.each do |column|
36
- # TODO: Should be able to see if a column is 'sortable'
37
- # Assume all columns are sortable here - for now.
38
- sorted_state = 'unsorted'
39
- direction = 'asc'
40
- if [column.to_s, @report.column_data_field(column)].include?(@options[:sort])
41
- sorted_state = "sorted"
42
- direction = @options[:order] == 'asc' ? 'desc' : 'asc'
43
- direction_class = "sorted-#{direction}"
34
+ x.thead do
35
+ x.tr do
36
+ @report.columns.each do |column|
37
+ # TODO: Should be able to see if a column is 'sortable'
38
+ # Assume all columns are sortable here - for now.
39
+ sorted_state = 'unsorted'
40
+ direction = 'asc'
41
+ if [column.to_s, @report.column_data_field(column)].include?(@options[:sort])
42
+ sorted_state = "sorted"
43
+ direction = @options[:order] == 'asc' ? 'desc' : 'asc'
44
+ direction_class = "sorted-#{direction}"
45
+ end
46
+ new_params = @options[:params].merge({'sort' => @report.column_data_field(column),'order' => direction})
47
+ x.th(:class => "columnTitle #{sorted_state} #{direction_class}" ) do
48
+ # x << @report.column_title(column)
49
+ x << "<a href=\"#{@options[:url]}?#{create_querystring(new_params)}\">#{@report.column_title(column)}</a>"
50
+ end
44
51
  end
45
- new_params = @options[:params].merge({'sort' => @report.column_data_field(column),'order' => direction})
46
- x.th(:class => "columnTitle #{sorted_state} #{direction_class}" ) do
47
- # x << @report.column_title(column)
48
- x << "<a href=\"#{@options[:url]}?#{create_querystring(new_params)}\">#{@report.column_title(column)}</a>"
49
- end
50
52
  end
51
- end
53
+ end # x.thead
52
54
 
53
- @report.process_data.each do |row|
55
+ x.tbody do
56
+ @report.process_data.each do |row|
54
57
 
55
- classes = []
56
- classes << row[:meta][:row_styles]
57
- classes << 'group' + row[:meta][:group].to_s if row[:meta][:group]
58
- classes << cycle('even', 'odd')
59
- classes.compact!
58
+ classes = []
59
+ classes << row[:meta][:row_styles]
60
+ classes << 'group' + row[:meta][:group].to_s if row[:meta][:group]
61
+ classes << cycle('even', 'odd')
62
+ classes.compact!
60
63
 
61
- if row[:meta][:group_header]
62
- classes << 'groupHeader' + row[:meta][:group_header].to_s
63
- end
64
+ if row[:meta][:group_header]
65
+ classes << 'groupHeader' + row[:meta][:group_header].to_s
66
+ end
64
67
 
65
- row_attrib = {}
66
- row_attrib = {:class => classes.join(' ')} if classes.size > 0
68
+ row_attrib = {}
69
+ row_attrib = {:class => classes.join(' ')} if classes.size > 0
67
70
 
68
- x.tr(row_attrib) do
69
71
  if row[:meta][:group_header]
70
- header = @report.column_title(row[:meta][:group_name]) + ' : ' + row[:meta][:group_value].to_s
71
- x.th(:colspan => @report.columns.size) { x << header }
72
+ x.thead do
73
+ x.tr(row_attrib) do
74
+ header = @report.column_title(row[:meta][:group_name]) + ' : ' + row[:meta][:group_value].to_s
75
+ x.th(:colspan => @report.columns.size) { x << header }
76
+ end
77
+ end
72
78
  else
73
- @report.columns.each do |column|
74
-
75
- cell_attrib = {}
76
- if cst = row[:meta][:cell_styles]
77
- cst = Item.ensure(cst)
78
- if cell_styles = cst[column]
79
- cell_attrib = {:class => cell_styles.join(' ')}
79
+ x.tr(row_attrib) do
80
+ @report.columns.each do |column|
81
+
82
+ cell_attrib = {}
83
+ if cst = row[:meta][:cell_styles]
84
+ cst = Item.ensure(cst)
85
+ if cell_styles = cst[column]
86
+ cell_attrib = {:class => cell_styles.join(' ')}
87
+ end
80
88
  end
81
- end
82
- # TODO: Clean this up, I don't like it but it's working
83
- # output the cell
84
- # x.td(cell_attrib) { x << row[:data][column].to_s }
85
- x.td(cell_attrib) do
86
- formatter,*args = *@report.column_formatter(column)
87
- col_data = row[:data] #[column]
88
- if formatter && col_data[column]
89
- formatted = if formatter.class == Proc
90
- data = col_data.respond_to?(:data) ? col_data.data : col_data
91
- formatter.call(data)
92
- elsif col_data[column].respond_to? formatter
93
- col_data[column].send(formatter, *args)
94
- elsif
95
- col_data[column].to_s
89
+ # TODO: Clean this up, I don't like it but it's working
90
+ # output the cell
91
+ # x.td(cell_attrib) { x << row[:data][column].to_s }
92
+ x.td(cell_attrib) do
93
+ formatter,*args = *@report.column_formatter(column)
94
+ col_data = row[:data] #[column]
95
+ if formatter && col_data[column]
96
+ formatted = if formatter.class == Proc
97
+ data = col_data.respond_to?(:data) ? col_data.data : col_data
98
+ formatter.call(data)
99
+ elsif col_data[column].respond_to? formatter
100
+ col_data[column].send(formatter, *args)
101
+ elsif
102
+ col_data[column].to_s
103
+ end
104
+ else
105
+ formatted = col_data[column].to_s
96
106
  end
97
- else
98
- formatted = col_data[column].to_s
107
+ x << formatted.to_s
99
108
  end
100
- x << formatted.to_s
101
- end
102
-
103
- end
109
+
110
+ end # columns
111
+ end # x.tr
104
112
  end
105
- end
106
- end
113
+
114
+ end # rows
115
+
116
+ end # x.tbody
107
117
 
108
- end
118
+ end # x.table
119
+
109
120
  end
110
121
 
111
122
  def cycle(one, two)
data/munger.gemspec CHANGED
@@ -1,7 +1,7 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.platform = Gem::Platform::RUBY
3
3
  s.name = "elskwid-munger"
4
- s.version = "0.1.4.3"
4
+ s.version = "0.1.4.4"
5
5
  s.authors = ['Scott Chacon', 'Brandon Mitchell', 'Don Morrison', 'Eric Lindvall']
6
6
  s.email = "elskwid@gmail.com"
7
7
  s.summary = "A reporting engine in Ruby - the elskwid fork!"
@@ -21,6 +21,18 @@ describe Munger::Render::Html do
21
21
  html.should have_tag('tr', :count => count + 1) # rows plus header
22
22
  end
23
23
 
24
+ it "should render a thead section for the table" do
25
+ @render = Munger::Render::Html.new(@report.process)
26
+ html = @render.render
27
+ html.should have_tag('thead', :count => 1)
28
+ end
29
+
30
+ it "should render a tbody section for the table" do
31
+ @render = Munger::Render::Html.new(@report.process)
32
+ html = @render.render
33
+ html.should have_tag('tbody', :count => 1)
34
+ end
35
+
24
36
  it "should accept a custom table class" do
25
37
  rep = Munger::Render::Html.new(@report.process, :classes => {:table => 'helloClass'})
26
38
  html = rep.render
metadata CHANGED
@@ -6,8 +6,8 @@ version: !ruby/object:Gem::Version
6
6
  - 0
7
7
  - 1
8
8
  - 4
9
- - 3
10
- version: 0.1.4.3
9
+ - 4
10
+ version: 0.1.4.4
11
11
  platform: ruby
12
12
  authors:
13
13
  - Scott Chacon
@@ -18,7 +18,7 @@ autorequire:
18
18
  bindir: bin
19
19
  cert_chain: []
20
20
 
21
- date: 2010-04-06 00:00:00 -07:00
21
+ date: 2010-09-04 00:00:00 -07:00
22
22
  default_executable:
23
23
  dependencies: []
24
24