I'd like to use Angular directives to automatically build nice tables for me, and I'm having trouble.
I have a bunch of JS objects like this one:
{product: 'ProdA',
colour: 'Black',
team: 'U16B',
count: 5}.
Here's what I want the table to look like:
Team | Product | Count
----------------------
U14B | ProdA | 20
|---------+------
| ProdB | 20
|---------+------
| ProdC | 20
-----+---------+------
U14G | ProdA | 19
|---------+------
| ProdD | 19
...
Notice that "colour" wasn't in the table, and was aggregated over.
The problem is that I have at least four tables like this, and I'm thinking it would be worth my time to make a clean solution. I'm looking for a clean way of doing this, and I'm hoping Angular Directives can help. Here's an example of how I imagine it could work:
<table class="item_table"
sort-rows
aggregate-identical-rows-in-rightmost-column
make-rowspans-for-identical-cells
make-alternating-rows-different-colours>
<tr>
<th>Team</th>
<th>Product</th>
<th>Count</th>
</tr>
<tr ng-repeat="row in all_data_rows">
<td>row.team</td>
<td>row.product</td>
<td>row.count</td>
</tr>
</table>
The problem is that when any of the directives in the <table> tag run, the rows created by the <tr ng-repeat...> don't exist yet. From this mailing list I see that I could go to the innermost ng-repeat and call a directive that checks for $last at every level, but this seems sketchy and is a really weird place to put those directives.
Am I trying to use directives for things they aren't designed for? Is $last really a perfectly good solution, even if I have nested ng-repeats and I have to check for $last all the way out to the <table> tag? Does anyone have a good way of doing this angularly?
I know there are javascript approaches I could take, but once the contents of the cells get more complicated (e.g. buttons), those get messier. This solution just seems so pretty if it would only work. I'd appreciate any thoughts.
Thanks,
Bartholomew