From 6f0467918b790229ccd0f741e91b3f91ea4a35d3 Mon Sep 17 00:00:00 2001 From: rstubryan Date: Wed, 15 Oct 2025 09:50:21 +0700 Subject: [PATCH] feat(FE-114): add tanggal_recording field to RecordingForm and update schema validation --- .../recording/form/RecordingForm.schema.ts | 6 +++ .../flock/recording/form/RecordingForm.tsx | 51 ++++++++++++++++++- src/types/api/flock/recording.d.ts | 4 +- 3 files changed, 58 insertions(+), 3 deletions(-) diff --git a/src/components/pages/flock/recording/form/RecordingForm.schema.ts b/src/components/pages/flock/recording/form/RecordingForm.schema.ts index ffd9e2bd..90d91c4f 100644 --- a/src/components/pages/flock/recording/form/RecordingForm.schema.ts +++ b/src/components/pages/flock/recording/form/RecordingForm.schema.ts @@ -8,6 +8,9 @@ export const RecordingFormSchema = Yup.object({ label: Yup.string().required(), }).nullable(), flock_id: Yup.number().required('Flock wajib diisi!'), + tanggal_recording: Yup.date() + .required('Tanggal recording wajib diisi') + .typeError('Format tanggal tidak valid'), data_pakan: Yup.array() .of( Yup.object({ @@ -84,6 +87,9 @@ export const getRecordingFormInitialValues = ( } : null, flock_id: initialValues?.flock?.id ?? 0, + tanggal_recording: initialValues?.tanggal_recording + ? new Date(initialValues.tanggal_recording) + : new Date(), data_pakan: initialValues?.data_pakan ?? [ { nama_pakan: '', diff --git a/src/components/pages/flock/recording/form/RecordingForm.tsx b/src/components/pages/flock/recording/form/RecordingForm.tsx index 1b09b274..cb291720 100644 --- a/src/components/pages/flock/recording/form/RecordingForm.tsx +++ b/src/components/pages/flock/recording/form/RecordingForm.tsx @@ -67,6 +67,7 @@ const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => { setRecordingFormErrorMessage(''); const payload: CreateRecordingPayload = { flock_id: values.flock_id, + tanggal_recording: values.tanggal_recording.toISOString(), data_pakan: (values.data_pakan ?? []).map((p) => ({ nama_pakan: p.nama_pakan, qty_pakan: p.qty_pakan, @@ -230,6 +231,33 @@ const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => {
+ {/* {*/} + {/* formik.setFieldValue(*/} + {/* 'flock_id',*/} + {/* (val as OptionType)?.value*/} + {/* );*/} + {/* }}*/} + {/* options={flockOptions}*/} + {/* onInputChange={setFlockSelectInputValue}*/} + {/* isLoading={isLoadingFlocks}*/} + {/* isError={*/} + {/* formik.touched.flock_id && Boolean(formik.errors.flock_id)*/} + {/* }*/} + {/* errorMessage={formik.errors.flock_id as string}*/} + {/* isDisabled={type === 'detail'}*/} + {/* isClearable*/} + {/*/>*/} { }} options={flockOptions} onInputChange={(val) => { - // Filter options locally instead of API call return val; }} - isLoading={false} // Remove isLoadingFlocks + isLoading={false} isError={ formik.touched.flock_id && Boolean(formik.errors.flock_id) } @@ -254,6 +281,26 @@ const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => { isDisabled={type === 'detail'} isClearable /> + { + const date = new Date(e.target.value); + formik.setFieldValue('tanggal_recording', date); + }} + onBlur={formik.handleBlur} + isError={ + formik.touched.tanggal_recording && + Boolean(formik.errors.tanggal_recording) + } + errorMessage={formik.errors.tanggal_recording as string} + readOnly={type === 'detail'} + />
diff --git a/src/types/api/flock/recording.d.ts b/src/types/api/flock/recording.d.ts index 7fc873ef..69c2b0b5 100644 --- a/src/types/api/flock/recording.d.ts +++ b/src/types/api/flock/recording.d.ts @@ -4,10 +4,11 @@ import { Flock } from '@/types/api/flock/flock'; export type BaseRecording = { id: number; flock: Flock; + tanggal_recording: string; data_pakan: { nama_pakan: string; qty_pakan: number; - stock_pakan; + stock_pakan: number; }[]; bobot_badan: { berat_ayam: number; @@ -29,6 +30,7 @@ export type Recording = BaseMetadata & BaseRecording; export type CreateRecordingPayload = { flock_id: number; + tanggal_recording: string; data_pakan: { nama_pakan: string; qty_pakan: number;