{% extends "base.html" %}
{% block content %}
{% if not render_partial or render_partial == false %}
<aside id="nav_aside" class="column is-2 {% if not view_model.default_show_aside %}is-hidden{% endif %} is-narrow-mobile is-fullheight is-hidden-mobile">
{% include "list/filter.html" %}
</aside>
<div class="column">
<div class="columns">
<div class="column">
<div class="buttons">
<a class="button is-primary" href="{{ base_path }}/{{ entity_name }}/create" hx-boost="true"
hx-indicator="#loading"><i class="fa-solid fa-circle-plus"></i></a>
{% if viewmodel_filter | length > 0 %}
<button class="button" onclick="toggle_hidden('nav_aside')"><i class="fa-solid fa-filter"></i></button>
{% endif %}
<div class="dropdown mr-2 is-hoverable">
<div class="dropdown-trigger">
<button class="button" aria-haspopup="true" aria-controls="dropdown-menu4">
<span><i class="fa-solid fa-list"></i></span>
<span class="icon is-small">
<i class="fas fa-angle-down" aria-hidden="true"></i>
</span>
</button>
</div>
<div class="dropdown-menu" id="dropdown-menu4">
<div class="dropdown-content">
<div class="dropdown-item">
<a hx-include="[id='filter_form'], [id='table_form']" hx-vals='{
"search" : "{{ search }}",
"sort_by" : "{{ sort_by }}",
"sort_order" : "{{ sort_order }}"
}' hx-indicator="#loading" href="export_csv">Export as CSV</a>
</div>
<hr class="dropdown-divider">
<div class="dropdown-item">
<a hx-include="#table_form" hx-target="#{{ entity_name }}table" href="#"
hx-indicator="#loading" hx-confirm="Are you sure?" hx-delete="delete">Delete</a>
</div>
</div>
</div>
</div>
</div>
</div>
<form id="search_form" action="{{ base_path }}/{{ entity_name }}/list" hx-boost="true" hx-indicator="#loading"
hx-target="#{{ entity_name }}table" hx-trigger="reload_table from:#entities_per_page"
hx-include="[id='filter_form']">
<input type="hidden" id="sort_by" name="sort_by" value="{{ sort_by }}">
<input type="hidden" id="sort_order" name="sort_order" value="{{ sort_order }}">
<input type="hidden" name="page" value="{{ page }}">
<div class="column is-narrow">
<div class="field is-horizontal">
{% if view_model.show_search %}
<p class="control has-icons-left has-icons-right">
<input class="input is-rounded" type="search" id="search" value="{{ search }}" name="search"
placeholder="Search" hx-get="{{ base_path }}/{{ entity_name }}/list"
hx-trigger="keyup changed delay:500ms, search">
<span class="icon is-small is-left">
<i class="fas fa-search"></i>
</span>
</p>
{% endif %}
<div class="select">
<div class="ml-1 control has-icons-left has-icons-right">
<select id="entities_per_page" class="select" name="entities_per_page"
onchange="this.dispatchEvent(new Event('reload_table'));">
{% for a in [10,20,50,100,] %}
<option {% if entities_per_page==a %}selected{% endif %} value="{{ a }}">{{ a }}
</option>
{% endfor %}
</select>
<p class="help">Entities per Page</p>
</div>
</div>
</div>
</div>
</form>
</div>
{% endif %}
<div id="{{ entity_name }}table">
<div class="is-relative">
<form id="table_form" hx-indicator="#loading" hx-get="{{ base_path }}/{{ entity_name }}/list"
hx-target="#{{ entity_name }}table" hx-include="[id='filter_form']">
<input type="hidden" id="sort_by" name="sort_by" value="{{ sort_by }}">
<input type="hidden" id="sort_order" name="sort_order" value="{{ sort_order }}">
<input type="hidden" name="entities_per_page" value="{{ entities_per_page }}">
<input type="hidden" name="search" value="{{ search }}">
<input type="hidden" name="page" value="{{ page }}">
</form>
<table class="table is-relative is-narrow is-fullwidth is-hoverable is-striped">
{% include "list/header.html" %}
<tbody hx-indicator="#loading" hx-boost="true">
{% for entity in entities -%}
{% include "list/row.html" %}
{%- endfor %}
</tbody>
<tfoot>
<tr>
<td colspan="{{ view_model.fields | length + 3 }}">
</td>
</tr>
</tfoot>
</table>
</div>
{% if num_pages > 1 %}
<nav hx-boost="true" hx-push-url="true" hx-target="#{{ entity_name }}table" hx-vals='{
"entities_per_page" : "{{ entities_per_page }}",
"search" : "{{ search }}",
"sort_by" : "{{ sort_by }}",
"sort_order" : "{{ sort_order }}",
"render_partial" : "true"
}' hx-indicator="#loading" class="pagination is-rounded is-centered" role="pagination" aria-label="pagination">
{% if page > 1 %}
<a href="{{ base_path }}/{{ entity_name }}/list?&page={{ page - 1 }}"
class="pagination-previous left-arrow-click"><i class="fa-solid fa-arrow-left"></i>
</a>
{% endif %}
{% if page < num_pages %}<a href="{{ base_path }}/{{ entity_name }}/list?page={{ page + 1 }}"
class="pagination-next right-arrow-click"><i class="fa-solid fa-arrow-right"></i>
</a>
{% endif %}
<ul class="pagination-list">
<li>
<a class="pagination-link {% if page == 1 %}is-current{% endif %}"
href="{{ base_path }}/{{ entity_name }}/list?page={{ 1 }}" aria-label="Goto page 1">1</a>
</li>
<li>
<span class="pagination-ellipsis">…</span>
</li>
{% for i in range(start=min_show_page,end=max_show_page) %}
<li><a class="pagination-link {% if page == i+1 %}is-current{% endif %}"
aria-label="Goto page {{ i + 1 }}"
href="{{ base_path }}/{{ entity_name }}/list?page={{ i + 1 }}">{{
i + 1 }}</a></li>
{%- endfor %}
<li>
<span class="pagination-ellipsis">…</span>
</li>
<li>
<a href="{{ base_path }}/{{ entity_name }}/list?page={{ num_pages }}"
class="pagination-link is-rounded {% if page == num_pages %}is-current{% endif %}"
aria-label="Goto page {{ num_pages }}">{{ num_pages }} </a>
</li>
</ul>
</nav>
{% endif %}
</div>
</div>
{% endblock content %}