greentable 0.9.3 → 0.9.4
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/Gemfile.lock +1 -1
- data/README.md +58 -1
- data/lib/greentable/greentable_table.rb +12 -2
- data/lib/greentable/version.rb +1 -1
- data/test/greentable_table_test.rb +36 -0
- metadata +4 -4
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -209,7 +209,7 @@ will produce
|
|
209
209
|
|
210
210
|
## Greentable Footer
|
211
211
|
|
212
|
-
|
212
|
+
Sometimes, you'll need to display a total (or whathaveyou) at the end:
|
213
213
|
|
214
214
|
```haml
|
215
215
|
=greentable(products) do |gt, product|
|
@@ -254,6 +254,63 @@ will produce
|
|
254
254
|
</table>
|
255
255
|
```
|
256
256
|
|
257
|
+
Subtotal, shipping, tax, total? No problem:
|
258
|
+
|
259
|
+
```haml
|
260
|
+
=greentable(order.order_line_items) do |gt, order_line_item|
|
261
|
+
-gt.footer([:subtotal, :shipping, :tax, :total], class: 'klass') do |footer, attr|
|
262
|
+
-footer.col do
|
263
|
+
=attr
|
264
|
+
-footer.col do
|
265
|
+
=order.send(attr)
|
266
|
+
|
267
|
+
-gt.col('name') do
|
268
|
+
=order_line_item.name
|
269
|
+
-gt.col('price') do
|
270
|
+
=order_line_item.price
|
271
|
+
```
|
272
|
+
|
273
|
+
will produce
|
274
|
+
|
275
|
+
```html
|
276
|
+
<table>
|
277
|
+
<thead>
|
278
|
+
<tr>
|
279
|
+
<th>name</th>
|
280
|
+
<th>price</th>
|
281
|
+
</tr>
|
282
|
+
</thead>
|
283
|
+
<tbody>
|
284
|
+
<tr>
|
285
|
+
<td>ProductA</td>
|
286
|
+
<td>$2.11</td>
|
287
|
+
</tr>
|
288
|
+
<tr>
|
289
|
+
<td>ProductB</td>
|
290
|
+
<td>$1.03</td>
|
291
|
+
</tr>
|
292
|
+
</tbody>
|
293
|
+
<tfoot>
|
294
|
+
<tr>
|
295
|
+
<td class='klass'>subtotal</td>
|
296
|
+
<td class='klass'>xyz</td>
|
297
|
+
</tr>
|
298
|
+
<tr>
|
299
|
+
<td class='klass'>shipping</td>
|
300
|
+
<td class='klass'>xyz</td>
|
301
|
+
</tr>
|
302
|
+
<tr>
|
303
|
+
<td class='klass'>tax</td>
|
304
|
+
<td class='klass'>xyz</td>
|
305
|
+
</tr>
|
306
|
+
<tr>
|
307
|
+
<td class='klass'>total</td>
|
308
|
+
<td class='klass'>xyz</td>
|
309
|
+
</tr>
|
310
|
+
</tfoot>
|
311
|
+
</table>
|
312
|
+
```
|
313
|
+
|
257
314
|
## Global Defaults
|
258
315
|
You can configure global defaults for all your greentables.
|
259
316
|
|
@@ -45,13 +45,23 @@ module Greentable
|
|
45
45
|
return nil
|
46
46
|
end
|
47
47
|
|
48
|
-
def footer(
|
48
|
+
def footer(*args, &block)
|
49
49
|
return unless @tfoot.empty?
|
50
|
+
if args.size == 1
|
51
|
+
rows = [nil]
|
52
|
+
opts = args[0]
|
53
|
+
elsif args.size == 2
|
54
|
+
rows = args[0]
|
55
|
+
opts = args[1]
|
56
|
+
else
|
57
|
+
raise 'greentable footer: number of arguments must be either 1 or two'
|
58
|
+
end
|
59
|
+
|
50
60
|
@tfoot << '<tfoot>'
|
51
61
|
tr_opts = deep_merge(@defaults_tr, opts.delete(:tr))
|
52
62
|
td_opts = deep_merge(opts, opts.delete(:td))
|
53
63
|
td_opts = deep_merge(@defaults_td, td_opts)
|
54
|
-
TableGroup.new(@parent,
|
64
|
+
TableGroup.new(@parent, rows, {td: td_opts, tr: tr_opts}).process(&block).send(:to_s_tbody_content, @tfoot)
|
55
65
|
@tfoot << '</tfoot>'
|
56
66
|
end
|
57
67
|
|
data/lib/greentable/version.rb
CHANGED
@@ -146,6 +146,42 @@ class GreentableTableTest < ActiveSupport::TestCase
|
|
146
146
|
assert_equal "<table><thead><tr><th>col0</th></tr></thead><tbody><tr><td>0</td></tr></tbody><tfoot><tr class=\"tr_class\"><td style=\"a b\">peace</td><td style=\"a c\">out</td></tr></tfoot></table>", gt.to_s
|
147
147
|
end
|
148
148
|
|
149
|
+
test "footer - with empty table" do
|
150
|
+
gt = Greentable::Table.new(self, [], {})
|
151
|
+
gt.process do |gt, x|
|
152
|
+
gt.footer do |footer|
|
153
|
+
footer.col do
|
154
|
+
'peace'
|
155
|
+
end
|
156
|
+
footer.col do
|
157
|
+
'out'
|
158
|
+
end
|
159
|
+
end
|
160
|
+
gt.col('col0') do
|
161
|
+
x
|
162
|
+
end
|
163
|
+
end
|
164
|
+
assert_equal "", gt.to_s
|
165
|
+
end
|
166
|
+
|
167
|
+
test "footer - with multiple rows" do
|
168
|
+
gt = Greentable::Table.new(self, [0], {})
|
169
|
+
gt.process do |gt, x|
|
170
|
+
gt.footer(['f1', 'f2'], :class => 'klass') do |footer, row|
|
171
|
+
footer.col do
|
172
|
+
'Total'
|
173
|
+
end
|
174
|
+
footer.col do
|
175
|
+
row
|
176
|
+
end
|
177
|
+
end
|
178
|
+
gt.col('col0') do
|
179
|
+
x
|
180
|
+
end
|
181
|
+
end
|
182
|
+
assert_equal "<table><thead><tr><th>col0</th></tr></thead><tbody><tr><td>0</td></tr></tbody><tfoot><tr><td class=\"klass\">Total</td><td class=\"klass\">f1</td></tr><tr><td class=\"klass\">Total</td><td class=\"klass\">f2</td></tr></tfoot></table>", gt.to_s
|
183
|
+
end
|
184
|
+
|
149
185
|
test "row_counter" do
|
150
186
|
gt = Greentable::Table.new(self, [0, 1, 2], {})
|
151
187
|
gt.process do |gt, x|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: greentable
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-04-
|
12
|
+
date: 2014-04-20 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -247,7 +247,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
247
247
|
version: '0'
|
248
248
|
segments:
|
249
249
|
- 0
|
250
|
-
hash: -
|
250
|
+
hash: -125976970667350695
|
251
251
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
252
252
|
none: false
|
253
253
|
requirements:
|
@@ -256,7 +256,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
256
256
|
version: '0'
|
257
257
|
segments:
|
258
258
|
- 0
|
259
|
-
hash: -
|
259
|
+
hash: -125976970667350695
|
260
260
|
requirements: []
|
261
261
|
rubyforge_project:
|
262
262
|
rubygems_version: 1.8.25
|