parts and areas tested
This commit is contained in:
@@ -7,17 +7,17 @@ import { Button } from "@/components/ui/button"
|
||||
import { Separator } from "@/components/ui/separator"
|
||||
import { DateTimePicker } from "@/components/ui/date-time-picker"
|
||||
import { useUpdateBuildSitesMutation } from "@/pages/build-sites/update/queries"
|
||||
import { BuildAddressUpdate, buildAddressUpdateSchema } from "@/pages/build-sites/update/schema"
|
||||
import { BuildSitesUpdate, buildSitesUpdateSchema } from "@/pages/build-sites/update/schema"
|
||||
|
||||
const BuildAddressForm = ({ refetchTable, initData, selectedUuid }: { refetchTable: () => void, initData: BuildAddressUpdate, selectedUuid: string }) => {
|
||||
const BuildAddressForm = ({ refetchTable, initData, selectedUuid }: { refetchTable: () => void, initData: BuildSitesUpdate, selectedUuid: string }) => {
|
||||
|
||||
const form = useForm<BuildAddressUpdate>({ resolver: zodResolver(buildAddressUpdateSchema), defaultValues: { ...initData } })
|
||||
const form = useForm<BuildSitesUpdate>({ resolver: zodResolver(buildSitesUpdateSchema), defaultValues: { ...initData } })
|
||||
|
||||
const { handleSubmit } = form
|
||||
|
||||
const mutation = useUpdateBuildSitesMutation();
|
||||
|
||||
function onSubmit(values: BuildAddressUpdate) { mutation.mutate({ data: values as any || initData, uuid: selectedUuid }); setTimeout(() => refetchTable(), 400) }
|
||||
function onSubmit(values: BuildSitesUpdate) { mutation.mutate({ data: values as any || initData, uuid: selectedUuid }); setTimeout(() => refetchTable(), 400) }
|
||||
|
||||
return (
|
||||
<Form {...form}>
|
||||
@@ -25,7 +25,6 @@ const BuildAddressForm = ({ refetchTable, initData, selectedUuid }: { refetchTab
|
||||
|
||||
{/* ROW 1 */}
|
||||
<div className="grid grid-cols-1 md:grid-cols-2 gap-4">
|
||||
|
||||
<FormField
|
||||
control={form.control}
|
||||
name="siteNo"
|
||||
|
||||
@@ -11,22 +11,18 @@ const PageUpdateBuildSites = () => {
|
||||
const [limit, setLimit] = useState(10);
|
||||
const [sort, setSort] = useState({ createdAt: 'desc' });
|
||||
const [filters, setFilters] = useState({});
|
||||
const searchParams = useSearchParams()
|
||||
const router = useRouter()
|
||||
const searchParams = useSearchParams();
|
||||
const router = useRouter();
|
||||
const uuid = searchParams?.get('uuid') || null
|
||||
const backToBuildAddress = <>
|
||||
<div>UUID not found in search params</div>
|
||||
<Button onClick={() => router.push('/build-sites')}>Back to Build Sites</Button>
|
||||
</>
|
||||
if (!uuid) { return backToBuildAddress }
|
||||
const backToBuildSites = <><div>UUID not found in search params</div><Button onClick={() => router.push(`/build-sites`)}>Back to Build Sites</Button></>
|
||||
if (!uuid) { return backToBuildSites }
|
||||
const { data, isLoading, error, refetch } = useGraphQlBuildSitesList({ limit, skip: (page - 1) * limit, sort, filters: { ...filters, uuid } });
|
||||
const initData = data?.data?.[0] || null;
|
||||
if (!initData) { return backToBuildAddress }
|
||||
if (!initData) { return backToBuildSites }
|
||||
return (
|
||||
<>
|
||||
<BuildSitesDataTableUpdate
|
||||
data={data?.data || []} totalCount={data?.totalCount || 0} currentPage={page} pageSize={limit}
|
||||
onPageChange={setPage} onPageSizeChange={setLimit} refetchTable={refetch}
|
||||
data={data?.data || []} totalCount={data?.totalCount || 0} currentPage={page} pageSize={limit} onPageChange={setPage} onPageSizeChange={setLimit} refetchTable={refetch}
|
||||
/>
|
||||
<BuildAddressForm refetchTable={refetch} initData={initData} selectedUuid={uuid} />
|
||||
</>
|
||||
|
||||
@@ -8,7 +8,7 @@ const fetchGraphQlBuildAddressUpdate = async (record: UpdateBuildSitesUpdate, uu
|
||||
record.expiryStarts = record.expiryStarts ? toISOIfNotZ(record.expiryStarts) : undefined;
|
||||
record.expiryEnds = record.expiryEnds ? toISOIfNotZ(record.expiryEnds) : undefined;
|
||||
try {
|
||||
const res = await fetch(`/api/build-sites/update?uuid=${uuid || ''}`, { method: 'POST', cache: 'no-store', credentials: "include", body: JSON.stringify(record) });
|
||||
const res = await fetch(`/api/build-sites/update?uuid=${uuid || ''}`, { method: 'POST', cache: 'no-store', credentials: "include", body: JSON.stringify({ ...record }) });
|
||||
if (!res.ok) { const errorText = await res.text(); console.error('Test data API error:', errorText); throw new Error(`API error: ${res.status} ${res.statusText}`) }
|
||||
const data = await res.json();
|
||||
return { data: data.data, status: res.status }
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { z } from "zod"
|
||||
|
||||
export const buildAddressUpdateSchema = z.object({
|
||||
export const buildSitesUpdateSchema = z.object({
|
||||
|
||||
siteNo: z.string().optional(),
|
||||
siteName: z.string().optional(),
|
||||
@@ -9,4 +9,4 @@ export const buildAddressUpdateSchema = z.object({
|
||||
|
||||
});
|
||||
|
||||
export type BuildAddressUpdate = z.infer<typeof buildAddressUpdateSchema>;
|
||||
export type BuildSitesUpdate = z.infer<typeof buildSitesUpdateSchema>;
|
||||
|
||||
@@ -87,7 +87,7 @@ export function BuildSitesDataTableUpdate({
|
||||
pageSize: number,
|
||||
onPageChange: (page: number) => void,
|
||||
onPageSizeChange: (size: number) => void,
|
||||
refetchTable: () => void
|
||||
refetchTable: () => void,
|
||||
}) {
|
||||
|
||||
const router = useRouter();
|
||||
@@ -167,9 +167,9 @@ export function BuildSitesDataTableUpdate({
|
||||
})}
|
||||
</DropdownMenuContent>
|
||||
</DropdownMenu>
|
||||
<Button variant="outline" size="sm" onClick={() => { router.push("/build-areas") }}>
|
||||
<Button variant="outline" size="sm" onClick={() => { router.push(`/build-sites`) }}>
|
||||
<Home />
|
||||
<span className="hidden lg:inline">Back to Build Areas</span>
|
||||
<span className="hidden lg:inline">Back to Build Sites</span>
|
||||
</Button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user