feat(FE-102) create master data flock and add LTI theme

This commit is contained in:
randy-ar
2025-10-15 20:01:41 +07:00
parent 302da65c59
commit e2b35e765c
13 changed files with 677 additions and 2 deletions
+11
View File
@@ -0,0 +1,11 @@
import FlockForm from "@/components/pages/master-data/flock/form/FlockForm";
const AddFlock = () => {
return (
<section className="w-full p-4 flex flex-row justify-center">
<FlockForm />
</section>
);
}
export default AddFlock;
@@ -0,0 +1,47 @@
import FlockForm from "@/components/pages/master-data/flock/form/FlockForm";
import { isResponseError, isResponseSuccess } from "@/lib/api-helper";
import { FlockApi } from "@/services/api/master-data";
import { useRouter, useSearchParams } from "next/navigation";
import useSWR from "swr";
const FlockEdit = () => {
const router = useRouter();
const searchParams = useSearchParams();
// Get Query Params
const flockId = searchParams.get('flockId');
// Fetch Data
const { data: flock, isLoading: isLoadingFlock } = useSWR(
flockId,
(id: number) => FlockApi.getSingle(id)
);
if (!flockId) {
router.back();
return (
<div className='w-full flex flex-row justify-center items-center p-4'>
<span className='loading loading-spinner loading-xl' />
</div>
);
}
if (!isLoadingFlock && (!flock || isResponseError(flock))) {
router.replace('/404');
return;
}
return (
<div className='w-full p-4 flex flex-row justify-center'>
{isLoadingFlock && (
<span className='loading loading-spinner loading-xl' />
)}
{!isLoadingFlock && isResponseSuccess(flock) && (
<FlockForm formType='edit' initialValues={flock.data} />
)}
</div>
);
}
export default FlockEdit;
+44
View File
@@ -0,0 +1,44 @@
import FlockForm from "@/components/pages/master-data/flock/form/FlockForm";
import { isResponseError, isResponseSuccess } from "@/lib/api-helper";
import { FlockApi } from "@/services/api/master-data";
import { useRouter, useSearchParams } from "next/navigation";
import useSWR from "swr";
const FlockDetail = () => {
const router = useRouter();
const searchParams = useSearchParams();
// Get Query Params
const flockId = searchParams.get('flockId');
// Fetch Data
const { data: flock, isLoading: isLoadingFlock } = useSWR(flockId, (id: number) => FlockApi.getSingle(id));
if(!flockId){
router.back();
return (
<div className="w-full flex flex-row justify-center items-center p-4">
<span className="loading loading-spinner loading-xl" />
</div>
);
}
if(!isLoadingFlock && (!flock || isResponseError(flock))){
router.replace('/404');
return;
}
return (
<div className="w-full p-4 flex flex-row justify-center">
{isLoadingFlock && (
<span className="loading loading-spinner loading-xl" />
)}
{!isLoadingFlock && isResponseSuccess(flock) && (
<FlockForm formType="detail" initialValues={flock.data} />
)}
</div>
);
}
export default FlockDetail;
+11
View File
@@ -0,0 +1,11 @@
import FlockTable from "@/components/pages/master-data/flock/FlocksTable";
const Flock = () => {
return (
<section className="w-full p-4">
<FlockTable/>
</section>
);
}
export default Flock;