Got much of the table behavior working with CRUDKit.

This commit is contained in:
Yaro Kasear 2025-08-27 16:06:43 -05:00
parent 56debd88c2
commit 0c2a9847cb
11 changed files with 38 additions and 43 deletions

View file

@ -31,17 +31,15 @@
{%- endfor -%}
{%- endmacro %}
{% macro pager(model, page, pages, per_page, sort, filters) -%}
<nav class="pager">
{%- if page > 1 -%}
<a hx-get="/{{ model }}/frag/rows?page={{ page-1 }}&per_page={{ per_page }}{% if sort %}&sort={{ sort }}{% endif %}{% for k,v in filters.items() %}&{{k}}={{v}}{% endfor %}"
hx-target="#rows" hx-push-url="true">Prev</a>
{%- endif -%}
{% macro pager(model, page, pages, per_page, sort, filters, fields_csv) -%}
<nav id="pager" hx-swap-oob="true">
<a hx-get="/ui/{{ model }}/frag/rows?page={{ page-1 }}&per_page={{ per_page }}{% if sort %}&sort={{ sort }}{% endif %}{% if fields_csv %}&fields_csv={{ fields_csv|urlencode }}{% endif %}{% for k,v in filters.items() %}&{{k}}={{ v|urlencode }}{% endfor %}"
hx-target="#rows" rel="prev" hx-swap="innerHTML">Prev</a>
<span>Page {{ page }} / {{ pages }}</span>
{%- if page < pages -%} <a
hx-get="/{{ model }}/frag/rows?page={{ page+1 }}&per_page={{ per_page }}{% if sort %}&sort={{ sort }}{% endif %}{% for k,v in filters.items() %}&{{k}}={{v}}{% endfor %}"
hx-target="#rows" hx-push-url="true">Next</a>
{%- endif -%}
<a hx-get="/ui/{{ model }}/frag/rows?page={{ page+1 }}&per_page={{ per_page }}{% if sort %}&sort={{ sort }}{% endif %}{% if fields_csv %}&fields_csv={{ fields_csv|urlencode }}{% endif %}{% for k,v in filters.items() %}&{{k}}={{ v|urlencode }}{% endfor %}"
hx-target="#rows" rel="next" hx-swap="innerHTML">Next</a>
</nav>
{%- endmacro %}

View file

@ -1,3 +1,3 @@
{% import "_macros.html" as ui %}
{% import "crudkit/_macros.html" as ui %}
{% set action = url_for('frags.save', model=model) %}
{{ ui.form(schema, action, method="POST", obj_id=obj.id if obj else None, hx=true) }}

View file

@ -1,2 +1,2 @@
{% import "_macros.html" as ui %}
{% import "crudkit/_macros.html" as ui %}
{{ ui.lis(items, label_path=label_path, sublabel_path=sublabel_path, getp=getp) }}

View file

@ -1,3 +1,3 @@
{# Renders only <option>...</option> rows #}
{% import "_macros.html" as ui %}
{% import "crudkit/_macros.html" as ui %}
{{ ui.options(items, value_attr=value_attr, label_path=label_path, getp=getp) }}

View file

@ -0,0 +1,2 @@
{% import 'crudkit/_macros.html' as ui %}
{{ ui.pager(model, page, pages, per_page, sort, filters, fields_csv) }}

View file

@ -1,2 +1,2 @@
{% import "_macros.html" as ui %}
{% import "crudkit/_macros.html" as ui %}
{{ ui.rows([obj], fields, getp=getp) }}

View file

@ -1,3 +1,2 @@
{% import "_macros.html" as ui %}
{% import "crudkit/_macros.html" as ui %}
{{ ui.rows(items, fields, getp=getp) }}
{{ ui.pager(model, page, pages, per_page, sort, filters) }}