mirror of
https://gitlab.com/mbugroup/lti-web-client.git
synced 2026-05-25 15:55:48 +00:00
Merge branch 'fix/adjustment-recording-form' into 'development'
[FIX/FE] Adjustment Zero Restriction on Jumlah Pakai (>0. value) and Add Refetch (Invalidate) at Recording Detail Page See merge request mbugroup/lti-web-client!372
This commit is contained in:
@@ -45,3 +45,6 @@ next-env.d.ts
|
|||||||
|
|
||||||
# claude
|
# claude
|
||||||
.claude
|
.claude
|
||||||
|
|
||||||
|
# rtk
|
||||||
|
rtk.exe
|
||||||
|
|||||||
@@ -11,10 +11,13 @@ const RecordingEdit = () => {
|
|||||||
const searchParams = useSearchParams();
|
const searchParams = useSearchParams();
|
||||||
|
|
||||||
const recordingId = searchParams.get('recordingId');
|
const recordingId = searchParams.get('recordingId');
|
||||||
|
const recordingDetailKey = recordingId
|
||||||
|
? ['recording-detail', recordingId]
|
||||||
|
: null;
|
||||||
|
|
||||||
const { data: recording, isLoading: isLoadingRecording } = useSWR(
|
const { data: recording, isLoading: isLoadingRecording } = useSWR(
|
||||||
recordingId,
|
recordingDetailKey,
|
||||||
(id: string) => RecordingApi.getSingle(parseInt(id))
|
([, id]: [string, string]) => RecordingApi.getSingle(parseInt(id))
|
||||||
);
|
);
|
||||||
|
|
||||||
if (!recordingId) {
|
if (!recordingId) {
|
||||||
|
|||||||
@@ -11,10 +11,13 @@ const RecordingDetail = () => {
|
|||||||
const searchParams = useSearchParams();
|
const searchParams = useSearchParams();
|
||||||
|
|
||||||
const recordingId = searchParams.get('recordingId');
|
const recordingId = searchParams.get('recordingId');
|
||||||
|
const recordingDetailKey = recordingId
|
||||||
|
? ['recording-detail', recordingId]
|
||||||
|
: null;
|
||||||
|
|
||||||
const { data: recording, isLoading: isLoadingRecording } = useSWR(
|
const { data: recording, isLoading: isLoadingRecording } = useSWR(
|
||||||
recordingId,
|
recordingDetailKey,
|
||||||
(id: string) => RecordingApi.getSingle(parseInt(id))
|
([, id]: [string, string]) => RecordingApi.getSingle(parseInt(id))
|
||||||
);
|
);
|
||||||
|
|
||||||
if (!recordingId) {
|
if (!recordingId) {
|
||||||
|
|||||||
@@ -71,7 +71,7 @@ const StockObjectSchema: Yup.ObjectSchema<StockSchema> = Yup.object({
|
|||||||
.typeError('Produk harus berupa angka!'),
|
.typeError('Produk harus berupa angka!'),
|
||||||
qty: Yup.number()
|
qty: Yup.number()
|
||||||
.required('Jumlah penggunaan wajib diisi!')
|
.required('Jumlah penggunaan wajib diisi!')
|
||||||
.min(1, 'Jumlah penggunaan tidak boleh 0!')
|
.moreThan(0, 'Jumlah penggunaan harus lebih dari 0!')
|
||||||
.typeError('Jumlah penggunaan harus berupa angka!'),
|
.typeError('Jumlah penggunaan harus berupa angka!'),
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import { useMemo, useState, useEffect, useCallback } from 'react';
|
|||||||
import { useRouter } from 'next/navigation';
|
import { useRouter } from 'next/navigation';
|
||||||
|
|
||||||
import { useFormik } from 'formik';
|
import { useFormik } from 'formik';
|
||||||
import useSWR from 'swr';
|
import useSWR, { useSWRConfig } from 'swr';
|
||||||
|
|
||||||
import { Icon } from '@iconify/react';
|
import { Icon } from '@iconify/react';
|
||||||
import Button from '@/components/Button';
|
import Button from '@/components/Button';
|
||||||
@@ -183,6 +183,7 @@ const productionStandardColumns: ColumnDef<StandardDetails>[] = [
|
|||||||
const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => {
|
const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => {
|
||||||
// ===== HOOKS & ROUTER =====
|
// ===== HOOKS & ROUTER =====
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
|
const { mutate } = useSWRConfig();
|
||||||
|
|
||||||
// ===== STATE MANAGEMENT =====
|
// ===== STATE MANAGEMENT =====
|
||||||
const [selectedRecordDate, setSelectedRecordDate] = useState<string>(
|
const [selectedRecordDate, setSelectedRecordDate] = useState<string>(
|
||||||
@@ -319,11 +320,12 @@ const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => {
|
|||||||
setRecordingFormErrorMessage(res.message);
|
setRecordingFormErrorMessage(res.message);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
await mutate(['recording-detail', recordingId.toString()]);
|
||||||
toast.success(res?.message as string);
|
toast.success(res?.message as string);
|
||||||
router.refresh();
|
router.refresh();
|
||||||
router.push('/production/recording');
|
router.push('/production/recording');
|
||||||
},
|
},
|
||||||
[router]
|
[mutate, router]
|
||||||
);
|
);
|
||||||
|
|
||||||
const deleteRecordingClickHandler = useCallback(() => {
|
const deleteRecordingClickHandler = useCallback(() => {
|
||||||
|
|||||||
Reference in New Issue
Block a user