mirror of
https://github.com/crocofied/CoreControl.git
synced 2025-12-18 16:07:10 +00:00
Servers ITEMS_PER_PAGE
This commit is contained in:
parent
0a8ea98dae
commit
8fc4fea687
@ -2,15 +2,16 @@ import { NextResponse, NextRequest } from "next/server";
|
|||||||
import { prisma } from "@/lib/prisma";
|
import { prisma } from "@/lib/prisma";
|
||||||
|
|
||||||
interface GetRequest {
|
interface GetRequest {
|
||||||
page: number;
|
page?: number;
|
||||||
|
ITEMS_PER_PAGE?: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
const ITEMS_PER_PAGE = 5;
|
|
||||||
|
|
||||||
export async function POST(request: NextRequest) {
|
export async function POST(request: NextRequest) {
|
||||||
try {
|
try {
|
||||||
const body: GetRequest = await request.json();
|
const body: GetRequest = await request.json();
|
||||||
const page = Math.max(1, body.page || 1);
|
const page = Math.max(1, body.page || 1);
|
||||||
|
const ITEMS_PER_PAGE = body.ITEMS_PER_PAGE || 4;
|
||||||
|
|
||||||
const servers = await prisma.server.findMany({
|
const servers = await prisma.server.findMany({
|
||||||
skip: (page - 1) * ITEMS_PER_PAGE,
|
skip: (page - 1) * ITEMS_PER_PAGE,
|
||||||
|
|||||||
@ -107,6 +107,7 @@ export default function Dashboard() {
|
|||||||
|
|
||||||
const [currentPage, setCurrentPage] = useState<number>(1);
|
const [currentPage, setCurrentPage] = useState<number>(1);
|
||||||
const [maxPage, setMaxPage] = useState<number>(1);
|
const [maxPage, setMaxPage] = useState<number>(1);
|
||||||
|
const [itemsPerPage, setItemsPerPage] = useState<number>(4);
|
||||||
const [servers, setServers] = useState<Server[]>([]);
|
const [servers, setServers] = useState<Server[]>([]);
|
||||||
const [isGridLayout, setIsGridLayout] = useState<boolean>(false);
|
const [isGridLayout, setIsGridLayout] = useState<boolean>(false);
|
||||||
const [loading, setLoading] = useState<boolean>(true);
|
const [loading, setLoading] = useState<boolean>(true);
|
||||||
@ -126,7 +127,9 @@ export default function Dashboard() {
|
|||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const savedLayout = Cookies.get("layoutPreference-servers");
|
const savedLayout = Cookies.get("layoutPreference-servers");
|
||||||
setIsGridLayout(savedLayout === "grid");
|
const layout_bool = savedLayout === "grid";
|
||||||
|
setIsGridLayout(layout_bool);
|
||||||
|
setItemsPerPage(layout_bool ? 6 : 4);
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
const toggleLayout = () => {
|
const toggleLayout = () => {
|
||||||
@ -137,6 +140,7 @@ export default function Dashboard() {
|
|||||||
path: "/",
|
path: "/",
|
||||||
sameSite: "strict",
|
sameSite: "strict",
|
||||||
});
|
});
|
||||||
|
setItemsPerPage(newLayout ? 6 : 4);
|
||||||
};
|
};
|
||||||
|
|
||||||
const add = async () => {
|
const add = async () => {
|
||||||
@ -164,6 +168,7 @@ export default function Dashboard() {
|
|||||||
"/api/servers/get",
|
"/api/servers/get",
|
||||||
{
|
{
|
||||||
page: currentPage,
|
page: currentPage,
|
||||||
|
ITEMS_PER_PAGE: itemsPerPage,
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
setServers(response.data.servers);
|
setServers(response.data.servers);
|
||||||
@ -176,7 +181,7 @@ export default function Dashboard() {
|
|||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
getServers();
|
getServers();
|
||||||
}, [currentPage]);
|
}, [currentPage, itemsPerPage]);
|
||||||
|
|
||||||
const handlePrevious = () => {
|
const handlePrevious = () => {
|
||||||
setCurrentPage((prev) => Math.max(1, prev - 1));
|
setCurrentPage((prev) => Math.max(1, prev - 1));
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user