add result page

This commit is contained in:
MikanD
2025-06-01 00:52:20 +03:00
parent 48ec88df74
commit 4a5b0a9532
8 changed files with 1146 additions and 24 deletions

View File

@@ -57,7 +57,7 @@ const createQueryString = (params: Record<string, string | number | boolean | un
return filteredParams.join('&');
};
export function useDataPage<T>(application:string, endpoint: string, params:{[key:string]:string|number}={}) {
export function useDataPage<T>(application:string, endpoint: string, params:{[key:string]:string|number}={}, needLoad:boolean=true):PageControl<T> {
const [data, setData] = useState<T[]|null>(null);
// const [previousUrl, setPreviousUrl] = useState<string|undefined>(undefined)
// const [nextUrl, setNextUrl] = useState<string|undefined>(undefined)
@@ -67,7 +67,7 @@ export function useDataPage<T>(application:string, endpoint: string, params:{[ke
useEffect(
()=>{
if (data === null){
if (data === null && needLoad){
getFetch(`/${application}/${endpoint}/?${createQueryString(params)}`).then((r)=>{
if (r.success){
const pageData = r.body as PageResponse<T>;
@@ -110,8 +110,8 @@ export function useDataPage<T>(application:string, endpoint: string, params:{[ke
return {
items: data,
hasPrevious: undefined,//previousUrl !== undefined,
hasNext: undefined,//nextUrl !== undefined,
hasPrevious: false,//previousUrl !== undefined,
hasNext: false,//nextUrl !== undefined,
nextPage,
previousPage
} as PageControl<T>
@@ -119,25 +119,25 @@ export function useDataPage<T>(application:string, endpoint: string, params:{[ke
}
export function useData<T>(application:string, endpoint: string, id: string|number) {
export function useData<T>(application:string, endpoint: string, id: string|number, needLoad:boolean=true): T|null|undefined {
const [data, setData] = useState<T | null | undefined>(null);
useEffect(
()=>{
if (data === null){
if (data === null && needLoad){
getFetch(`/${application}/${endpoint}/${id}`).then((r)=>{
if (r.success){
const pageData = r.body as T;
setData(pageData);
}
else {
setData(null);
setData(undefined);
}
})
}
},
[data, application, endpoint, id]
[data, application, endpoint, id, needLoad]
)
return data;