{% comment %} Reusable paginated data table with Alpine-rendered rows. Expects parent Alpine scope: tableLoading, totalCount, currentPage, hasPrev, hasNext, firstPage, prevPage, nextPage, lastPage Plus: rows (via rows_key), page size (via page_size_key). For run tables: cols, colsOpen. Params: rows_key - Alpine variable name for rows array (e.g. "tableTraces", "tableGoldSets", "tableRuns") page_size_key - Alpine variable name for page size (e.g. "pageSize", "tableLimit") columns - list of {key, header, visible_key?, cell_class?, cell_class_key?, cell_url_key?} title - card header text row_click_url_key - key in row for row click URL (default: "detail_url") show_actions - optional, show actions column actions - optional list of {label, url_key, variant?} column_picker_template - optional path for column picker include empty_message - optional custom empty state message selectable - optional, enable checkbox row selection with bulk actions bulk_delete_fn - optional, function name for bulk delete (e.g. "bulkDeleteRuns") {% endcomment %} {% with col_count=columns|length %}
{{ title|default:"" }}
{% if column_picker_template %} {% include column_picker_template %} {% endif %} {% if export_url %}
Export
{% if not export_formats or "csv" in export_formats %} {% endif %} {% if not export_formats or "json" in export_formats %} {% endif %} {% if not export_formats or "xlsx" in export_formats %} {% endif %}
{% endif %}
{% if selectable %}
{% if bulk_delete_fn %} {% endif %}
{% endif %}
{% if selectable %} {% endif %} {% for col in columns %} {% endfor %} {% if show_actions %} {% endif %}
{{ col.header }}Actions
Loading…
{{ empty_message|default:"No results." }}
{% endwith %}