Fixes to rows, add pager. Makes for more reliable table behavior under CRUDKit.
This commit is contained in:
parent
77fcc56a33
commit
faf5b10e56
4 changed files with 16 additions and 12 deletions
|
|
@ -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 %}
|
||||
|
||||
|
|
|
|||
2
crudkit/html/templates/crudkit/pager.html
Normal file
2
crudkit/html/templates/crudkit/pager.html
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
{% import 'crudkit/_macros.html' as ui %}
|
||||
{{ ui.pager(model, page, pages, per_page, sort, filters, fields_csv) }}
|
||||
|
|
@ -1,3 +1,2 @@
|
|||
{% import "crudkit/_macros.html" as ui %}
|
||||
{{ ui.rows(items, fields, getp=getp) }}
|
||||
{{ ui.pager(model, page, pages, per_page, sort, filters) }}
|
||||
|
|
|
|||
|
|
@ -108,7 +108,12 @@ def make_fragments_blueprint(db_session_factory, registry: Dict[str, Any], *, na
|
|||
s = session(); svc = CrudService(s, default_eager_policy)
|
||||
rows, total = svc.list(Model, spec)
|
||||
pages = max(1, ceil(total / per_page))
|
||||
return render_template("crudkit/rows.html", items=rows, fields=fields, page=page, pages=pages, per_page=per_page, total=total, model=model, sort=sort, filters=filters, getp=_getp)
|
||||
|
||||
rows_html = render_template("crudkit/rows.html", items=rows, fields=fields, getp=_getp)
|
||||
pager_html = render_template("crudkit/pager.html", model=model, page=page, pages=pages,
|
||||
per_page=per_page, sort=sort, filters=filters, fields_csv=fields_csv)
|
||||
|
||||
return rows_html + pager_html
|
||||
|
||||
@bp.get("/<model>/frag/form")
|
||||
def form(model):
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue