mirror of
https://gitlab.com/mbugroup/lti-web-client.git
synced 2026-05-25 15:55:48 +00:00
refactor(FE-170,174,175): add layout component and enhance API data fetching limits
This commit is contained in:
@@ -0,0 +1,11 @@
|
|||||||
|
import SuspenseHelper from '@/components/helper/SuspenseHelper';
|
||||||
|
|
||||||
|
const Layout = ({
|
||||||
|
children,
|
||||||
|
}: Readonly<{
|
||||||
|
children: React.ReactNode;
|
||||||
|
}>) => {
|
||||||
|
return <SuspenseHelper>{children}</SuspenseHelper>;
|
||||||
|
};
|
||||||
|
|
||||||
|
export default Layout;
|
||||||
@@ -265,6 +265,7 @@ const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => {
|
|||||||
// ===== API DATA FETCHING =====
|
// ===== API DATA FETCHING =====
|
||||||
const locationsUrl = `${LocationApi.basePath}?${new URLSearchParams({
|
const locationsUrl = `${LocationApi.basePath}?${new URLSearchParams({
|
||||||
search: locationSearchValue || '',
|
search: locationSearchValue || '',
|
||||||
|
limit: '100',
|
||||||
}).toString()}`;
|
}).toString()}`;
|
||||||
const { data: locations, isLoading: isLoadingLocations } = useSWR(
|
const { data: locations, isLoading: isLoadingLocations } = useSWR(
|
||||||
locationsUrl,
|
locationsUrl,
|
||||||
@@ -273,6 +274,7 @@ const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => {
|
|||||||
|
|
||||||
const projectFlocksUrl = `${ProjectFlockApi.basePath}?${new URLSearchParams({
|
const projectFlocksUrl = `${ProjectFlockApi.basePath}?${new URLSearchParams({
|
||||||
search: projectFlockSearchValue || '',
|
search: projectFlockSearchValue || '',
|
||||||
|
limit: '100',
|
||||||
...(selectedLocation
|
...(selectedLocation
|
||||||
? { location_id: selectedLocation.value.toString() }
|
? { location_id: selectedLocation.value.toString() }
|
||||||
: {}),
|
: {}),
|
||||||
@@ -371,6 +373,7 @@ const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => {
|
|||||||
const existingRecordingsUrl = useMemo(() => {
|
const existingRecordingsUrl = useMemo(() => {
|
||||||
const params = new URLSearchParams({
|
const params = new URLSearchParams({
|
||||||
record_date: today,
|
record_date: today,
|
||||||
|
limit: '100',
|
||||||
});
|
});
|
||||||
return `${RecordingApi.basePath}?${params.toString()}`;
|
return `${RecordingApi.basePath}?${params.toString()}`;
|
||||||
}, [today]);
|
}, [today]);
|
||||||
@@ -413,6 +416,24 @@ const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => {
|
|||||||
ProductWarehouseApi.getAllFetcher
|
ProductWarehouseApi.getAllFetcher
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const approvedProjectFlockKandangsUrl = useMemo(() => {
|
||||||
|
const params = new URLSearchParams({
|
||||||
|
step_name: 'Disetujui',
|
||||||
|
limit: '100',
|
||||||
|
});
|
||||||
|
return `${ProjectFlockKandangApi.basePath}?${params.toString()}`;
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
const { data: approvedProjectFlockKandangsData } = useSWR(
|
||||||
|
approvedProjectFlockKandangsUrl,
|
||||||
|
ProjectFlockKandangApi.getAllFetcher
|
||||||
|
);
|
||||||
|
|
||||||
|
const approvedProjectFlockKandangs = useMemo(() => {
|
||||||
|
if (!isResponseSuccess(approvedProjectFlockKandangsData)) return [];
|
||||||
|
return approvedProjectFlockKandangsData.data;
|
||||||
|
}, [approvedProjectFlockKandangsData]);
|
||||||
|
|
||||||
// ===== APPROVAL DATA FETCHING =====
|
// ===== APPROVAL DATA FETCHING =====
|
||||||
const approvalHistoryUrl = useMemo(() => {
|
const approvalHistoryUrl = useMemo(() => {
|
||||||
if (!initialValues?.id || type !== 'detail') return null;
|
if (!initialValues?.id || type !== 'detail') return null;
|
||||||
@@ -420,6 +441,7 @@ const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => {
|
|||||||
module_name: 'RECORDINGS',
|
module_name: 'RECORDINGS',
|
||||||
module_id: initialValues.id.toString(),
|
module_id: initialValues.id.toString(),
|
||||||
group_step_number: 'true',
|
group_step_number: 'true',
|
||||||
|
limit: '100',
|
||||||
});
|
});
|
||||||
return `${ApprovalApi.basePath}?${params.toString()}`;
|
return `${ApprovalApi.basePath}?${params.toString()}`;
|
||||||
}, [initialValues?.id, type]);
|
}, [initialValues?.id, type]);
|
||||||
@@ -686,12 +708,21 @@ const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => {
|
|||||||
);
|
);
|
||||||
|
|
||||||
if (selectedProjectFlockData?.kandangs) {
|
if (selectedProjectFlockData?.kandangs) {
|
||||||
const kandangOptions = selectedProjectFlockData.kandangs.map(
|
const approvedKandangIds = approvedProjectFlockKandangs
|
||||||
(kandang: Kandang) => ({
|
.filter((pfk) => pfk.project_flock_id === selectedProjectFlock.value)
|
||||||
|
.map((pfk) => pfk.kandang_id);
|
||||||
|
|
||||||
|
const kandangOptions = selectedProjectFlockData.kandangs
|
||||||
|
.filter((kandang: Kandang) => {
|
||||||
|
if (type === 'add') {
|
||||||
|
return approvedKandangIds.includes(kandang.id);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
})
|
||||||
|
.map((kandang: Kandang) => ({
|
||||||
value: kandang.id,
|
value: kandang.id,
|
||||||
label: kandang.name || '',
|
label: kandang.name || '',
|
||||||
})
|
}));
|
||||||
);
|
|
||||||
options = options.concat(kandangOptions);
|
options = options.concat(kandangOptions);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -710,7 +741,13 @@ const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return options;
|
return options;
|
||||||
}, [selectedProjectFlock, projectFlocks, projectFlockKandangDetail, type]);
|
}, [
|
||||||
|
selectedProjectFlock,
|
||||||
|
projectFlocks,
|
||||||
|
projectFlockKandangDetail,
|
||||||
|
type,
|
||||||
|
approvedProjectFlockKandangs,
|
||||||
|
]);
|
||||||
|
|
||||||
const recordedProjectFlockKandangIds = useMemo(() => {
|
const recordedProjectFlockKandangIds = useMemo(() => {
|
||||||
if (!isResponseSuccess(existingRecordings)) return new Set<number>();
|
if (!isResponseSuccess(existingRecordings)) return new Set<number>();
|
||||||
|
|||||||
@@ -0,0 +1,11 @@
|
|||||||
|
import { BaseApiService } from '@/services/api/base';
|
||||||
|
import {
|
||||||
|
BaseProjectFlockKandang,
|
||||||
|
ProjectFlockKandang,
|
||||||
|
} from '@/types/api/production/project-flock-kandang';
|
||||||
|
|
||||||
|
export const ProjectFlockKandangApi = new BaseApiService<
|
||||||
|
BaseProjectFlockKandang,
|
||||||
|
ProjectFlockKandang,
|
||||||
|
unknown
|
||||||
|
>('project-flock-kandang');
|
||||||
Reference in New Issue
Block a user