implemented pagination for training reports

This commit is contained in:
2025-12-16 00:23:59 -05:00
parent 627f6bfe3d
commit 9e469013c7
4 changed files with 132 additions and 38 deletions

View File

@@ -1,15 +1,34 @@
import { Course, CourseAttendeeRole, CourseEventDetails, CourseEventSummary } from '@shared/types/course'
import { PagedData } from '@shared/types/pagination';
//@ts-ignore
const addr = import.meta.env.VITE_APIHOST;
export async function getTrainingReports(sortMode: string, search: string): Promise<CourseEventSummary[]> {
const res = await fetch(`${addr}/courseEvent?sort=${sortMode}&search=${search}`, {
export async function getTrainingReports(sortMode?: string, search?: string, page?: number, pageSize?: number): Promise<PagedData<CourseEventSummary>> {
const params = new URLSearchParams();
if (page !== undefined) {
params.set("page", page.toString());
}
if (pageSize !== undefined) {
params.set("pageSize", pageSize.toString());
}
if (sortMode !== undefined) {
params.set("sort", sortMode.toString());
}
if (search !== undefined || search !== "") {
params.set("search", search.toString());
}
const res = await fetch(`${addr}/courseEvent?${params}`, {
credentials: 'include',
});
if (res.ok) {
return await res.json() as Promise<CourseEventSummary[]>;
return await res.json() as Promise<PagedData<CourseEventSummary>>;
} else {
console.error("Something went wrong");
throw new Error("Failed to load training reports");
@@ -31,7 +50,7 @@ export async function getTrainingReport(id: number): Promise<CourseEventDetails>
export async function getAllTrainings(): Promise<Course[]> {
const res = await fetch(`${addr}/course`, {
credentials: 'include',
credentials: 'include',
});
if (res.ok) {