Fix QC Kak Inno Admin, Fix QC Keano UI User, Fix QC Pak jun tabel apbdes
This commit is contained in:
@@ -7,6 +7,7 @@ import {
|
||||
Box,
|
||||
Button,
|
||||
Group,
|
||||
Loader,
|
||||
Paper,
|
||||
Select,
|
||||
Stack,
|
||||
@@ -24,12 +25,18 @@ export default function EditLembaga() {
|
||||
const { id } = useParams<{ id: string }>();
|
||||
const state = useProxy(infoSekolahPaud.lembagaPendidikan);
|
||||
const jenjangPendidikanList = infoSekolahPaud.jenjangPendidikan.findMany.data;
|
||||
const [isSubmitting, setIsSubmitting] = useState(false);
|
||||
|
||||
const [form, setForm] = useState({
|
||||
nama: '',
|
||||
jenjangId: '',
|
||||
});
|
||||
|
||||
const [originalData, setOriginalData] = useState({
|
||||
nama: '',
|
||||
jenjangId: '',
|
||||
});
|
||||
|
||||
// Load jenjang pendidikan dan data lembaga
|
||||
useEffect(() => {
|
||||
infoSekolahPaud.jenjangPendidikan.findMany.load();
|
||||
@@ -41,6 +48,10 @@ export default function EditLembaga() {
|
||||
nama: data.nama,
|
||||
jenjangId: data.jenjangId,
|
||||
});
|
||||
setOriginalData({
|
||||
nama: data.nama,
|
||||
jenjangId: data.jenjangId,
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -50,21 +61,37 @@ export default function EditLembaga() {
|
||||
setForm((prev) => ({ ...prev, [field]: value }));
|
||||
};
|
||||
|
||||
const handleResetForm = () => {
|
||||
setForm({
|
||||
nama: originalData.nama,
|
||||
jenjangId: originalData.jenjangId,
|
||||
});
|
||||
toast.info('Form dikembalikan ke data awal');
|
||||
};
|
||||
|
||||
const handleSubmit = async () => {
|
||||
if (!form.nama || !form.jenjangId) {
|
||||
toast.warn('Nama dan jenjang pendidikan harus diisi');
|
||||
return;
|
||||
}
|
||||
try {
|
||||
setIsSubmitting(true);
|
||||
if (!form.nama || !form.jenjangId) {
|
||||
toast.warn('Nama dan jenjang pendidikan harus diisi');
|
||||
return;
|
||||
}
|
||||
|
||||
// Update global state hanya saat submit
|
||||
state.edit.id = id;
|
||||
state.edit.form = form;
|
||||
// Update global state hanya saat submit
|
||||
state.edit.id = id;
|
||||
state.edit.form = form;
|
||||
|
||||
const result = await state.edit.update();
|
||||
const result = await state.edit.update();
|
||||
|
||||
if (result) {
|
||||
toast.success('Data berhasil diperbarui');
|
||||
router.push('/admin/pendidikan/info-sekolah/lembaga');
|
||||
if (result) {
|
||||
toast.success('Data berhasil diperbarui');
|
||||
router.push('/admin/pendidikan/info-sekolah/lembaga');
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Error updating lembaga:', error);
|
||||
toast.error('Gagal memperbarui lembaga');
|
||||
} finally {
|
||||
setIsSubmitting(false);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -119,6 +146,17 @@ export default function EditLembaga() {
|
||||
/>
|
||||
|
||||
<Group justify="right">
|
||||
<Button
|
||||
variant="outline"
|
||||
color="gray"
|
||||
radius="md"
|
||||
size="md"
|
||||
onClick={handleResetForm}
|
||||
>
|
||||
Batal
|
||||
</Button>
|
||||
|
||||
{/* Tombol Simpan */}
|
||||
<Button
|
||||
onClick={handleSubmit}
|
||||
radius="md"
|
||||
@@ -129,7 +167,7 @@ export default function EditLembaga() {
|
||||
boxShadow: '0 4px 15px rgba(79, 172, 254, 0.4)',
|
||||
}}
|
||||
>
|
||||
Simpan
|
||||
{isSubmitting ? <Loader size="sm" color="white" /> : 'Simpan'}
|
||||
</Button>
|
||||
</Group>
|
||||
</Stack>
|
||||
|
||||
@@ -5,6 +5,7 @@ import {
|
||||
Box,
|
||||
Button,
|
||||
Group,
|
||||
Loader,
|
||||
Paper,
|
||||
Select,
|
||||
Stack,
|
||||
@@ -14,13 +15,15 @@ import {
|
||||
} from '@mantine/core';
|
||||
import { IconArrowBack } from '@tabler/icons-react';
|
||||
import { useRouter } from 'next/navigation';
|
||||
import { useEffect } from 'react';
|
||||
import { useEffect, useState } from 'react';
|
||||
import { useProxy } from 'valtio/utils';
|
||||
import infoSekolahPaud from '../../../../_state/pendidikan/info-sekolah-paud';
|
||||
import { toast } from 'react-toastify';
|
||||
|
||||
function CreateLembaga() {
|
||||
const router = useRouter();
|
||||
const stateLembaga = useProxy(infoSekolahPaud.lembagaPendidikan);
|
||||
const [isSubmitting, setIsSubmitting] = useState(false);
|
||||
|
||||
useEffect(() => {
|
||||
stateLembaga.findMany.load();
|
||||
@@ -35,9 +38,17 @@ function CreateLembaga() {
|
||||
};
|
||||
|
||||
const handleSubmit = async () => {
|
||||
await stateLembaga.create.create();
|
||||
resetForm();
|
||||
router.push('/admin/pendidikan/info-sekolah/lembaga');
|
||||
try {
|
||||
setIsSubmitting(true);
|
||||
await stateLembaga.create.create();
|
||||
resetForm();
|
||||
router.push('/admin/pendidikan/info-sekolah/lembaga');
|
||||
} catch (error) {
|
||||
console.error('Error creating lembaga:', error);
|
||||
toast.error('Gagal menambahkan lembaga');
|
||||
} finally {
|
||||
setIsSubmitting(false);
|
||||
}
|
||||
};
|
||||
|
||||
return (
|
||||
@@ -63,7 +74,7 @@ function CreateLembaga() {
|
||||
>
|
||||
<Stack gap="md">
|
||||
<TextInput
|
||||
defaultValue={stateLembaga.create.form.nama}
|
||||
value={stateLembaga.create.form.nama}
|
||||
onChange={(val) => {
|
||||
stateLembaga.create.form.nama = val.target.value;
|
||||
}}
|
||||
@@ -90,6 +101,17 @@ function CreateLembaga() {
|
||||
/>
|
||||
|
||||
<Group justify="right">
|
||||
<Button
|
||||
variant="outline"
|
||||
color="gray"
|
||||
radius="md"
|
||||
size="md"
|
||||
onClick={resetForm}
|
||||
>
|
||||
Reset
|
||||
</Button>
|
||||
|
||||
{/* Tombol Simpan */}
|
||||
<Button
|
||||
onClick={handleSubmit}
|
||||
radius="md"
|
||||
@@ -100,7 +122,7 @@ function CreateLembaga() {
|
||||
boxShadow: '0 4px 15px rgba(79, 172, 254, 0.4)',
|
||||
}}
|
||||
>
|
||||
Simpan
|
||||
{isSubmitting ? <Loader size="sm" color="white" /> : 'Simpan'}
|
||||
</Button>
|
||||
</Group>
|
||||
</Stack>
|
||||
|
||||
Reference in New Issue
Block a user