feat(FE-338): Slicing UI Halaman Reporting BOP & API integration & refactor debounce input: adding useEffect for sync value

This commit is contained in:
randy-ar
2025-12-11 18:23:55 +07:00
parent d0abc0e9ff
commit 9c09395677
11 changed files with 1795 additions and 0 deletions
+11
View File
@@ -0,0 +1,11 @@
import SuspenseHelper from '@/components/helper/SuspenseHelper';
const Layout = ({
children,
}: Readonly<{
children: React.ReactNode;
}>) => {
return <SuspenseHelper>{children}</SuspenseHelper>;
};
export default Layout;
+5
View File
@@ -0,0 +1,5 @@
const ReportExpenseDetail = () => {
return <div>ReportExpenseDetail</div>;
};
export default ReportExpenseDetail;
+52
View File
@@ -0,0 +1,52 @@
'use client';
import { useState } from 'react';
import useSWR from 'swr';
import ReportExpenseTable from '@/components/pages/report/expense/ReportExpenseTable';
import { ReportExpenseApi } from '@/services/api/report';
import { isResponseSuccess } from '@/lib/api-helper';
import { ReportExpenseSearchParams } from '@/types/api/report/report-expense';
const ReportExpense = () => {
const [params, setParams] = useState<ReportExpenseSearchParams>({
locationId: null,
supplierId: null,
kandangId: null,
startDate: null,
endDate: null,
category: null,
period: '',
search: '',
});
const reportUrl = `${ReportExpenseApi.basePath}?${new URLSearchParams({
location_id: params.locationId ?? '',
supplier_id: params.supplierId ?? '',
kandang_id: params.kandangId ?? '',
start_date: params.startDate ?? '',
end_date: params.endDate ?? '',
category: params.category ?? '',
period: params.period.toString(),
search: params.search,
})}`;
const { data: reportExpenses } = useSWR(reportUrl, () =>
ReportExpenseApi.getAllFetcher(reportUrl)
);
const onSearch = (searchParams: ReportExpenseSearchParams) => {
setParams(searchParams);
};
return (
<div className='w-full p-4'>
<ReportExpenseTable
reportExpenses={
isResponseSuccess(reportExpenses) ? reportExpenses.data : []
}
onSearch={onSearch}
/>
</div>
);
};
export default ReportExpense;