From c1a75a98095ed993c2b30f1306daa47aabea9019 Mon Sep 17 00:00:00 2001 From: Christoph Marzell Date: Sun, 19 Jul 2026 05:27:22 +0200 Subject: [PATCH] add row count --- app/views/entries/index.html.erb | 56 ++++++++++++++++++++++++++++---- 1 file changed, 49 insertions(+), 7 deletions(-) diff --git a/app/views/entries/index.html.erb b/app/views/entries/index.html.erb index 5be5526..5fb1e7b 100644 --- a/app/views/entries/index.html.erb +++ b/app/views/entries/index.html.erb @@ -369,6 +369,14 @@ +
+ Aktuell angezeigt: 0 · Gesamt: 0 +
+ <%= link_to "Export als CSV", export_csv_entries_path(format: :csv), class: "btn btn-outline-secondary mt-3 w-100 w-md-auto" %> @@ -402,8 +410,16 @@ const minYearFilter = document.getElementById("minYearFilter"); const maxYearFilter = document.getElementById("maxYearFilter"); const columnToggleMenu = document.getElementById("columnToggleMenu"); + const entriesCount = document.getElementById("entriesCount"); - if (!tbody || !textFilter || !minYearFilter || !maxYearFilter || !columnToggleMenu) return; + if ( + !tbody || + !textFilter || + !minYearFilter || + !maxYearFilter || + !columnToggleMenu || + !entriesCount + ) return; const headers = Array.from(table.querySelectorAll("thead th")); const sortableHeaders = headers.filter(header => header.classList.contains("sortable")); @@ -527,19 +543,45 @@ .join(" "); }; + const updateEntriesCount = () => { + const rows = getRows(); + + const visibleRows = rows.filter(row => { + return row.style.display !== "none"; + }).length; + + entriesCount.textContent = + `Aktuell angezeigt: ${visibleRows} · Gesamt: ${rows.length}`; + }; + const applyFilters = () => { const query = textFilter.value.trim().toLowerCase(); - const minYear = minYearFilter.value ? Number(minYearFilter.value) : null; - const maxYear = maxYearFilter.value ? Number(maxYearFilter.value) : null; + const minYear = minYearFilter.value + ? Number(minYearFilter.value) + : null; + const maxYear = maxYearFilter.value + ? Number(maxYearFilter.value) + : null; getRows().forEach(row => { const rowYear = Number(row.dataset.year); - const matchesQuery = !query || getVisibleRowText(row).includes(query); - const matchesMinYear = !minYear || rowYear >= minYear; - const matchesMaxYear = !maxYear || rowYear <= maxYear; - row.style.display = (matchesQuery && matchesMinYear && matchesMaxYear) ? "" : "none"; + const matchesQuery = + !query || getVisibleRowText(row).includes(query); + + const matchesMinYear = + minYear === null || rowYear >= minYear; + + const matchesMaxYear = + maxYear === null || rowYear <= maxYear; + + row.style.display = + matchesQuery && matchesMinYear && matchesMaxYear + ? "" + : "none"; }); + + updateEntriesCount(); }; const parseNumeric = (value) => {