From 229e6d9e53085ff400a68781823e367f8e483958 Mon Sep 17 00:00:00 2001 From: Meleki Date: Sun, 15 Mar 2026 10:20:59 +0100 Subject: [PATCH] =?UTF-8?q?DB=20Explorer:=20Standardm=C3=A4=C3=9Fig=20zur?= =?UTF-8?q?=20letzten=20Seite=20springen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Backend: page=-1 wird als 'letzte Seite' interpretiert (COUNT + Berechnung) - Frontend: Tabellen-Klick ruft page=-1 auf statt page=1 - Aufgelöster page-Wert aus API-Response für korrekte Anzeige (34/34 statt -1/34) --- Endpoints/DatabaseExplorerEndpoint.cs | 15 +++++++++++++-- wwwroot/js/pages/db-explorer-page.js | 3 ++- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/Endpoints/DatabaseExplorerEndpoint.cs b/Endpoints/DatabaseExplorerEndpoint.cs index c033d4c..30cb64b 100644 --- a/Endpoints/DatabaseExplorerEndpoint.cs +++ b/Endpoints/DatabaseExplorerEndpoint.cs @@ -67,11 +67,22 @@ public static class DatabaseExplorerEndpoint // Pagination var page = 1; var pageSize = 1000; - if (ctx.Request.Query.TryGetValue("page", out var pageStr) && int.TryParse(pageStr, out var p) && p > 0) - page = p; + if (ctx.Request.Query.TryGetValue("page", out var pageStr) && int.TryParse(pageStr, out var p)) + page = p; // p == -1 → letzte Seite if (ctx.Request.Query.TryGetValue("pageSize", out var psStr) && int.TryParse(psStr, out var ps) && ps > 0 && ps <= 10000) pageSize = ps; + // Bei page == -1 → letzte Seite berechnen + if (page == -1) + { + var count = conn.ExecuteScalar($"SELECT COUNT(*) FROM \"{name}\""); + page = Math.Max(1, (int)Math.Ceiling((double)count / pageSize)); + } + else if (page < 1) + { + page = 1; + } + var offset = (page - 1) * pageSize; // Spalten-Info diff --git a/wwwroot/js/pages/db-explorer-page.js b/wwwroot/js/pages/db-explorer-page.js index ce868a6..90bd19c 100644 --- a/wwwroot/js/pages/db-explorer-page.js +++ b/wwwroot/js/pages/db-explorer-page.js @@ -51,7 +51,7 @@ registerPage('db-explorer', { tr.appendChild(tdRows); tr.addEventListener('click', function() { - loadTableData(t.name, 1); + loadTableData(t.name, -1); }); tbody.appendChild(tr); @@ -77,6 +77,7 @@ registerPage('db-explorer', { try { var resp = await fetch('/api/admin/db/tables/' + encodeURIComponent(name) + '?page=' + page + '&pageSize=1000'); var data = await resp.json(); + page = data.pagination.page; contentEl.innerHTML = '';