{# One table of rows, under the columns of the result it came from. The header cell states the column name and, under it, the type the engine declared for it. A cell states its own type tag only where the rows of its column disagree, which is what a storage class makes real. The whole table is inside a region of its own that scrolls sideways, so a wide result never makes the page scroll. A table asked for the entrance carries each row's place on the row itself, which is what the stylesheet staggers the one animation of the page by. It is asked for on the rows two results differ in and nowhere else: a record's own table holds every row it has, and ten thousand style attributes would be paid for on every page. #} {% macro rows_table(rows, entrance=false) %}

{{ rows.source }}{% if rows.partial %}, {{ rows.rows_shown }} on this page{% endif %}

{% if rows.truncated %}

this result is a bounded reading of what the statement returned: the record states truncated

{% endif %}
{% if rows.columns %} {% if rows.labelled %}{% endif %} {% if rows.counted %}{% endif %} {% for column in rows.columns %} {% endfor %} {% endif %} {% for row in rows.rows %} {% if rows.labelled %}{% endif %} {% if rows.counted %}{% endif %} {% for cell in row.cells %} {% endfor %} {% else %} {% endfor %}
sidetimes{{ column.name }}{{ column.declared_type }}
{{ row.label }}{{ row.count }}{{ cell.text }}{% if cell.show_tag %} {{ cell.tag }}{% endif %}
no rows
{% endmacro %}