In this example, the inventory of various Zoo animals from different
City Zoos is maintained in a `KVITable`, where each animal is
additionally classified by parameters such as Biome and Diet.
The `KVITable` creation is somewhat lengthy due to the size of the
inventory; the [SampleTables.hs](../test/SampleTables.hs) file should be
consulted for the definition of the `KVITable` `zooTable` and
`zooTable2`.
Rendering the data without any column stacking, but with multiple row
groupings:
```
import Data.KVITable.Render.ASCII
render (defaultRenderConfig
{ sortKeyVals = True
, rowRepeat = False
, rowGroup = [ "Location", "Biome", "Category" ]
})
zooTable2
```
results in the following:
```
____ snip vv ____
| Location | Biome | Category | Diet | Name | Subtype | Count |
+-----------+----------+----------+-----------+---------+-------------+-------+
| LA | Jungle | Animal | Herbivore | Hippo | | 1 |
| |----------+----------+-----------+---------+-------------+-------+
| | Savannah | Animal | Carnivore | Lion | | 4 |
| | | | Herbivore | Giraffe | | 2 |
| | | | | Rhino | | 3 |
+-----------+----------+----------+-----------+---------+-------------+-------+
| Miami | Polar | Bird | Carnivore | Penguin | Gentoo | 20 |
| |----------+----------+-----------+---------+-------------+-------+
| | Savannah | Animal | Carnivore | Lion | | 2 |
| | | | Herbivore | Giraffe | Reticulated | 3 |
+-----------+----------+----------+-----------+---------+-------------+-------+
| New York | Savannah | Animal | Carnivore | Lion | | 3 |
+-----------+----------+----------+-----------+---------+-------------+-------+
| San Diego | Jungle | Animal | Omnivore | Bear | Sun | 1 |
| |----------+----------+-----------+---------+-------------+-------+
| | Plains | Animal | Omnivore | Bear | Black | 1 |
| | | | | | Brown | 1 |
| |----------+----------+-----------+---------+-------------+-------+
| | Polar | Animal | Omnivore | Bear | Polar | 1 |
| | |----------+-----------+---------+-------------+-------+
| | | Bird | Carnivore | Penguin | Emperor | 8 |
| | | | | | Gentoo | 2 |
| |----------+----------+-----------+---------+-------------+-------+
| | Savannah | Animal | Carnivore | Lion | | 9 |
+-----------+----------+----------+-----------+---------+-------------+-------+
____ snip ^^ ____
```
or in HTML (with CSS inherited from the Markdown
configuration... imagine how much nicer this could be with your own
CSS styling!):
******
Location |
Biome |
Category |
Diet |
Name |
Subtype |
Count |
LA |
Jungle |
Animal |
Herbivore |
Hippo |
|
1 |
Savannah |
Animal |
Carnivore |
Lion |
|
4 |
Herbivore |
Giraffe |
|
2 |
Rhino |
|
3 |
Miami |
Polar |
Bird |
Carnivore |
Penguin |
Gentoo |
20 |
Savannah |
Animal |
Carnivore |
Lion |
|
2 |
Herbivore |
Giraffe |
Reticulated |
3 |
New York |
Savannah |
Animal |
Carnivore |
Lion |
|
3 |
San Diego |
Jungle |
Animal |
Omnivore |
Bear |
Sun |
1 |
Plains |
Animal |
Omnivore |
Bear |
Black |
1 |
Brown |
1 |
Polar |
Animal |
Omnivore |
Bear |
Polar |
1 |
Bird |
Carnivore |
Penguin |
Emperor |
8 |
Gentoo |
2 |
Savannah |
Animal |
Carnivore |
Lion |
|
9 |
******
## With Column Stacking
Removing the "Subtype" field from the zoo table and then modifying the
rendering configuration to add column stacking on the `"Name"` key
`Val`s results in:
```
____ snip vv ____
| Location | Biome | Category | Diet | Bear | Giraffe | Hippo | Lion | Penguin | Rhino | <- Name
+-----------+----------+----------+-----------+------+---------+-------+------+---------+-------+
| LA | Jungle | Animal | Herbivore | | | 1 | | | |
| |----------+----------+-----------+------+---------+-------+------+---------+-------+
| | Savannah | Animal | Carnivore | | | | 4 | | |
| | | | Herbivore | | 2 | | | | 3 |
+-----------+----------+----------+-----------+------+---------+-------+------+---------+-------+
| Miami | Polar | Bird | Carnivore | | | | | 20 | |
| |----------+----------+-----------+------+---------+-------+------+---------+-------+
| | Savannah | Animal | Carnivore | | | | 2 | | |
| | | | Herbivore | | 3 | | | | |
+-----------+----------+----------+-----------+------+---------+-------+------+---------+-------+
| New York | Savannah | Animal | Carnivore | | | | 3 | | |
+-----------+----------+----------+-----------+------+---------+-------+------+---------+-------+
| San Diego | Jungle | Animal | Omnivore | 1 | | | | | |
| |----------+----------+-----------+------+---------+-------+------+---------+-------+
| | Plains | Animal | Omnivore | 2 | | | | | |
| |----------+----------+-----------+------+---------+-------+------+---------+-------+
| | Polar | Animal | Omnivore | 1 | | | | | |
| | |----------+-----------+------+---------+-------+------+---------+-------+
| | | Bird | Carnivore | | | | | 10 | |
| |----------+----------+-----------+------+---------+-------+------+---------+-------+
| | Savannah | Animal | Carnivore | | | | 9 | | |
+-----------+----------+----------+-----------+------+---------+-------+------+---------+-------+
____ snip ^^ ____
```
And as HTML:
******
Location |
Biome |
Category |
Diet |
Bear |
Giraffe |
Hippo |
Lion |
Penguin |
Rhino |
←Name |
LA |
Jungle |
Animal |
Herbivore |
|
|
1 |
|
|
|
Savannah |
Animal |
Carnivore |
|
|
|
4 |
|
|
Herbivore |
|
2 |
|
|
|
3 |
Miami |
Polar |
Bird |
Carnivore |
|
|
|
|
20 |
|
Savannah |
Animal |
Carnivore |
|
|
|
2 |
|
|
Herbivore |
|
3 |
|
|
|
|
New York |
Savannah |
Animal |
Carnivore |
|
|
|
3 |
|
|
San Diego |
Jungle |
Animal |
Omnivore |
1 |
|
|
|
|
|
Plains |
Animal |
Omnivore |
2 |
|
|
|
|
|
Polar |
Animal |
Omnivore |
1 |
|
|
|
|
|
Bird |
Carnivore |
|
|
|
|
10 |
|
Savannah |
Animal |
Carnivore |
|
|
|
9 |
|
|
******