added session list entries selection

This commit is contained in:
Oliver Kieselbach
2026-03-17 19:28:26 +01:00
parent f2c5d43efc
commit e0944852f0
3 changed files with 33 additions and 4 deletions
@@ -64,6 +64,8 @@ interface SessionTableProps {
totalPages: number;
onPreviousPage: () => void;
onNextPage: () => void;
sessionsPerPage: number;
onSessionsPerPageChange: (value: number) => void;
hasMore: boolean;
loadingMore: boolean;
onLoadMore: () => void;
@@ -98,6 +100,8 @@ export function SessionTable({
totalPages,
onPreviousPage,
onNextPage,
sessionsPerPage,
onSessionsPerPageChange,
hasMore,
loadingMore,
onLoadMore,
@@ -201,6 +205,18 @@ export function SessionTable({
)}
</h2>
<div className="flex items-center gap-2">
{/* Page Size Selector */}
<select
value={sessionsPerPage}
onChange={(e) => onSessionsPerPageChange(Number(e.target.value))}
className="px-2 py-1.5 rounded-lg text-xs font-medium text-gray-600 bg-gray-100 hover:bg-gray-200 border border-gray-200 transition-colors cursor-pointer focus:outline-none focus:ring-2 focus:ring-blue-500"
title="Sessions per page"
>
{[10, 15, 20, 50, 100].map((n) => (
<option key={n} value={n}>{n} per page</option>
))}
</select>
{/* Column Selector */}
<div className="relative" ref={columnSelectorRef}>
<button
@@ -38,7 +38,13 @@ export default function Home() {
const [sortDirection, setSortDirection] = useState<"asc" | "desc">("asc");
const [columnFilters, setColumnFilters] = useState<Record<string, Set<string>>>({});
const [currentPage, setCurrentPage] = useState(1);
const sessionsPerPage = 7;
const [sessionsPerPage, setSessionsPerPage] = useState(() => {
if (typeof window !== 'undefined') {
const stored = localStorage.getItem('sessionsPerPage');
if (stored) return parseInt(stored, 10);
}
return 10;
});
const [showDeleteConfirm, setShowDeleteConfirm] = useState(false);
const [sessionToDelete, setSessionToDelete] = useState<{ sessionId: string; tenantId: string; deviceName?: string } | null>(null);
const [showBlockConfirm, setShowBlockConfirm] = useState(false);
@@ -408,10 +414,15 @@ export default function Home() {
fetchSessions();
}, [galacticAdminMode]);
// Reset to page 1 when search query, status filter, or sort changes
// Reset to page 1 when search query, status filter, sort, or page size changes
useEffect(() => {
setCurrentPage(1);
}, [searchQuery, statusFilter, sortColumn, sortDirection, columnFilters]);
}, [searchQuery, statusFilter, sortColumn, sortDirection, columnFilters, sessionsPerPage]);
const handleSessionsPerPageChange = (value: number) => {
setSessionsPerPage(value);
localStorage.setItem('sessionsPerPage', String(value));
};
const applyTenantIdFilter = (value: string) => {
setTenantIdFilter(value);
@@ -756,6 +767,8 @@ export default function Home() {
totalPages={totalPages}
onPreviousPage={handlePreviousPage}
onNextPage={handleNextPage}
sessionsPerPage={sessionsPerPage}
onSessionsPerPageChange={handleSessionsPerPageChange}
hasMore={hasMore}
loadingMore={loadingMore}
onLoadMore={loadMore}
File diff suppressed because one or more lines are too long