mirror of
https://gitlab.com/mbugroup/lti-web-client.git
synced 2026-05-25 07:45:47 +00:00
refactor(FE): Set uniformity week from recording data
This commit is contained in:
@@ -5,7 +5,6 @@ import { useFormik } from 'formik';
|
|||||||
import { useRouter } from 'next/navigation';
|
import { useRouter } from 'next/navigation';
|
||||||
import { Icon } from '@iconify/react';
|
import { Icon } from '@iconify/react';
|
||||||
import { toast } from 'react-hot-toast';
|
import { toast } from 'react-hot-toast';
|
||||||
import moment from 'moment';
|
|
||||||
import DrawerHeader from '@/components/helper/drawer/DrawerHeader';
|
import DrawerHeader from '@/components/helper/drawer/DrawerHeader';
|
||||||
import { useUiStore } from '@/stores/ui/ui.store';
|
import { useUiStore } from '@/stores/ui/ui.store';
|
||||||
import { useUniformityStore } from '@/stores/uniformity/uniformity.store';
|
import { useUniformityStore } from '@/stores/uniformity/uniformity.store';
|
||||||
@@ -28,6 +27,7 @@ import { LocationApi } from '@/services/api/master-data';
|
|||||||
import {
|
import {
|
||||||
ProjectFlockApi,
|
ProjectFlockApi,
|
||||||
ProjectFlockKandangApi,
|
ProjectFlockKandangApi,
|
||||||
|
RecordingApi,
|
||||||
} from '@/services/api/production';
|
} from '@/services/api/production';
|
||||||
import { UniformityApi } from '@/services/api/uniformity';
|
import { UniformityApi } from '@/services/api/uniformity';
|
||||||
import { isResponseError, isResponseSuccess } from '@/lib/api-helper';
|
import { isResponseError, isResponseSuccess } from '@/lib/api-helper';
|
||||||
@@ -40,6 +40,7 @@ import {
|
|||||||
ProjectFlockKandangLookup,
|
ProjectFlockKandangLookup,
|
||||||
ProjectFlock,
|
ProjectFlock,
|
||||||
} from '@/types/api/production/project-flock';
|
} from '@/types/api/production/project-flock';
|
||||||
|
import { Recording } from '@/types/api/production/recording';
|
||||||
import { Kandang } from '@/types/api/master-data/kandang';
|
import { Kandang } from '@/types/api/master-data/kandang';
|
||||||
import UniformityPreviewForm from '@/components/pages/production/uniformity/form/UniformityPreviewForm';
|
import UniformityPreviewForm from '@/components/pages/production/uniformity/form/UniformityPreviewForm';
|
||||||
import UniformityResultForm from '@/components/pages/production/uniformity/form/UniformityResultForm';
|
import UniformityResultForm from '@/components/pages/production/uniformity/form/UniformityResultForm';
|
||||||
@@ -200,6 +201,20 @@ const UniformityForm = ({
|
|||||||
? projectFlockKandangLookupData.data
|
? projectFlockKandangLookupData.data
|
||||||
: undefined;
|
: undefined;
|
||||||
|
|
||||||
|
// ===== RECORDINGS DATA (FOR WEEK CALCULATION) =====
|
||||||
|
const recordingsUrl = useMemo(() => {
|
||||||
|
const params = new URLSearchParams({
|
||||||
|
page: '1',
|
||||||
|
limit: '100',
|
||||||
|
});
|
||||||
|
return `${RecordingApi.basePath}?${params.toString()}`;
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
const { data: recordingsData } = useSWR(
|
||||||
|
recordingsUrl,
|
||||||
|
RecordingApi.getAllFetcher
|
||||||
|
);
|
||||||
|
|
||||||
// ===== FORM CONFIGURATION =====
|
// ===== FORM CONFIGURATION =====
|
||||||
const formikInitialValues = useMemo<UniformityFormValues>(
|
const formikInitialValues = useMemo<UniformityFormValues>(
|
||||||
() => getUniformityFormInitialValues(initialValues),
|
() => getUniformityFormInitialValues(initialValues),
|
||||||
@@ -383,14 +398,24 @@ const UniformityForm = ({
|
|||||||
|
|
||||||
// ===== SIDE EFFECTS =====
|
// ===== SIDE EFFECTS =====
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (formik.values.date) {
|
if (
|
||||||
const date = moment(formik.values.date);
|
projectFlockKandangLookup?.project_flock_kandang_id &&
|
||||||
const weekNumber = date.week() - moment(date).startOf('month').week() + 1;
|
isResponseSuccess(recordingsData) &&
|
||||||
const adjustedWeekNumber = weekNumber <= 0 ? weekNumber + 52 : weekNumber;
|
recordingsData.data
|
||||||
|
) {
|
||||||
|
const matchingRecording = recordingsData.data.find(
|
||||||
|
(recording: Recording) =>
|
||||||
|
recording.project_flock?.project_flock_kandang_id ===
|
||||||
|
projectFlockKandangLookup.project_flock_kandang_id
|
||||||
|
);
|
||||||
|
|
||||||
formik.setFieldValue('week', adjustedWeekNumber);
|
if (matchingRecording?.project_flock?.production_standart?.week) {
|
||||||
|
const weekValue =
|
||||||
|
matchingRecording.project_flock.production_standart.week;
|
||||||
|
formik.setFieldValue('week', weekValue);
|
||||||
}
|
}
|
||||||
}, [formik.values.date]);
|
}
|
||||||
|
}, [projectFlockKandangLookup?.project_flock_kandang_id, recordingsData]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const unsub = subscribeValidate(() => {
|
const unsub = subscribeValidate(() => {
|
||||||
|
|||||||
Reference in New Issue
Block a user