Add custom items per page dropdowns

This commit is contained in:
headlessdev
2025-04-25 23:34:52 +02:00
parent d81d8c04ad
commit 677d1c5a58
6 changed files with 470 additions and 34 deletions

View File

@@ -40,7 +40,8 @@ export async function POST(request: NextRequest) {
return NextResponse.json({
applications: applicationsWithServers,
servers: servers_all,
maxPage
maxPage,
totalItems: totalCount
});
} catch (error: unknown) {
const message = error instanceof Error ? error.message : "Unknown error";

View File

@@ -4,6 +4,7 @@ import { prisma } from "@/lib/prisma";
interface RequestBody {
timespan?: number;
page?: number;
itemsPerPage?: number;
}
@@ -100,8 +101,7 @@ const getIntervalKey = (date: Date, timespan: number) => {
export async function POST(request: NextRequest) {
try {
const { timespan = 1, page = 1 }: RequestBody = await request.json();
const itemsPerPage = 5;
const { timespan = 1, page = 1, itemsPerPage = 5 }: RequestBody = await request.json();
const skip = (page - 1) * itemsPerPage;
// Get paginated and sorted applications

View File

@@ -233,8 +233,9 @@ export async function POST(request: NextRequest) {
// Only calculate maxPage when not requesting a specific server
let maxPage = 1;
let totalHosts = 0;
if (!serverId) {
const totalHosts = await prisma.server.count({
totalHosts = await prisma.server.count({
where: { OR: [{ hostServer: 0 }, { hostServer: null }] }
});
maxPage = Math.ceil(totalHosts / ITEMS_PER_PAGE);
@@ -242,7 +243,8 @@ export async function POST(request: NextRequest) {
return NextResponse.json({
servers: hostsWithVms,
maxPage
maxPage,
totalItems: totalHosts
});
} catch (error: any) {
return NextResponse.json({ error: error.message }, { status: 500 });