| CITY | PROJECT | HOURS | TASK |
|---|---|---|---|
| Neapolis | Army | 754.0 | diam et ea sadipscing |
| Arts | 213.0 | gubergren duo clita aliquyam | |
| Neapolis subtotal | 967.0 | ||
| Olympia | 275.0 | At sed et rebum | |
| 565.0 | magna magna magna accusam | ||
| Olympia subtotal | 840.0 | ||
| Roma | Gladiators | 266.0 | dolore diam ea duo |
| 266.0 | ea gubergren sanctus takimata | ||
| Roma subtotal | 532.0 | ||
| Olympia | 408.0 | et diam erat est | |
| 661.0 | vero duo justo magna | ||
| Olympia subtotal | 1069.0 | ||
| Neapolis | Taxes | 20.0 | nonumy diam kasd clita |
| Neapolis subtotal | 20.0 | ||
| Olympia | 901.0 | takimata Stet aliquyam At | |
| Olympia subtotal | 901.0 | ||
| Total | 4329.0 |
The decorator API provides more then just the ability to reformat data before it is put into columns, it also provides a hook that allows you perform some action on the table after each row is processed. This allows you to interject some code that allows you to figure out where you are in the list of data, and then insert an additional row with totals, etc... Typically you would use this functionality along with grouping features to spit out some nice web based reports.
See the TableDecorator.finishRow() API documentation, along with the example decorator that is used in this example page.