mirror of
https://github.com/okieselbach/AutopilotMonitor.git
synced 2026-10-24 20:53:06 +00:00
added session list entries selection
This commit is contained in:
@@ -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
Reference in New Issue
Block a user