DB Explorer: Standardmäßig zur letzten Seite springen

- 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)
This commit is contained in:
Meleki committed 2026-03-15 10:20:59 +01:00
1 parent fea605dfe5
commit 229e6d9e53
2 files changed
+15 -3

No files matched your search

+13 -2
View File
@@ -67,11 +67,22 @@ public static class DatabaseExplorerEndpoint
// Pagination // Pagination
var page = 1; var page = 1;
var pageSize = 1000; var pageSize = 1000;
if (ctx.Request.Query.TryGetValue("page", out var pageStr) && int.TryParse(pageStr, out var p) && p > 0) if (ctx.Request.Query.TryGetValue("page", out var pageStr) && int.TryParse(pageStr, out var p))
page = 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) if (ctx.Request.Query.TryGetValue("pageSize", out var psStr) && int.TryParse(psStr, out var ps) && ps > 0 && ps <= 10000)
pageSize = ps; pageSize = ps;
// Bei page == -1 → letzte Seite berechnen
if (page == -1)
{
var count = conn.ExecuteScalar<long>($"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; var offset = (page - 1) * pageSize;
// Spalten-Info // Spalten-Info
+2 -1
View File
@@ -51,7 +51,7 @@ registerPage('db-explorer', {
tr.appendChild(tdRows); tr.appendChild(tdRows);
tr.addEventListener('click', function() { tr.addEventListener('click', function() {
loadTableData(t.name, 1); loadTableData(t.name, -1);
}); });
tbody.appendChild(tr); tbody.appendChild(tr);
@@ -77,6 +77,7 @@ registerPage('db-explorer', {
try { try {
var resp = await fetch('/api/admin/db/tables/' + encodeURIComponent(name) + '?page=' + page + '&pageSize=1000'); var resp = await fetch('/api/admin/db/tables/' + encodeURIComponent(name) + '?page=' + page + '&pageSize=1000');
var data = await resp.json(); var data = await resp.json();
page = data.pagination.page;
contentEl.innerHTML = ''; contentEl.innerHTML = '';