{# Rendered alone for htmx requests so typing narrows the list without a reload. #} {% macro qs(overrides) -%} {%- set args = {'q': q, 'sort': sort, 'dir': dir, 'page': page} -%} {%- set _ = args.update(overrides) -%} {%- for k, v in args.items() if v not in (None, '', 1) or (k == 'page' and v != 1) -%} {{ '&' if not loop.first }}{{ k }}={{ v | urlencode }} {%- endfor -%} {%- endmacro %}
{% if rows %} {% for f in res.fields %} {% set is_sorted = (sort == f.name) %} {% set next_dir = 'desc' if (is_sorted and dir == 'asc') else 'asc' %} {% endfor %} {% for row in rows %} {% set rowpk = pk_of(row, res) %} {% for f in res.fields %} {% set v = row[f.name] if row is mapping else row|attr(f.name) %} {% endfor %} {% endfor %}
{{ f.name }}{% if is_sorted %}{% endif %}
{%- if v is none -%}{%- elif links.get((rowpk, f.name)) -%} {{ v }} {%- else -%}{{ v }}{%- endif -%} View
{% if pages > 1 %}
{% if page > 1 %} Previous {% endif %} Page {{ page }} of {{ pages }} {% if page < pages %} Next {% endif %}
{% endif %} {% else %}

{{ "No records match “" ~ q ~ "”." if q else "No records yet." }}

{% endif %}