parts and areas tested

This commit is contained in:
2025-11-24 21:04:14 +03:00
parent a5a7a7e7b5
commit eedfed1a65
131 changed files with 5429 additions and 471 deletions

View File

@@ -3,6 +3,8 @@ import { useState } from 'react';
import { BuildSitesForm } from '@/pages/build-sites/add/form';
import { BuildSitesDataTableAdd } from './table/data-table';
import { useGraphQlBuildSitesList } from '@/pages/build-sites/queries';
import { useSearchParams, useRouter } from 'next/navigation';
import { Button } from '@/components/ui/button';
const PageAddBuildSites = () => {
const [page, setPage] = useState(1);
@@ -10,7 +12,12 @@ const PageAddBuildSites = () => {
const [sort, setSort] = useState({ createdAt: 'desc' });
const [filters, setFilters] = useState({});
const { data, isLoading, error, refetch } = useGraphQlBuildSitesList({ limit, skip: (page - 1) * limit, sort, filters });
const searchParams = useSearchParams();
const router = useRouter();
const buildId = searchParams?.get('build');
const noUUIDFound = <><div>Back To Builds. No uuid is found on headers</div><Button onClick={() => router.push('/builds')}>Back to Builds</Button></>
if (!buildId) { return noUUIDFound };
const { data, isLoading, error, refetch } = useGraphQlBuildSitesList({ limit, skip: (page - 1) * limit, sort, filters: { ...filters, buildID: buildId } });
return (
<>

View File

@@ -78,7 +78,8 @@ export function BuildSitesDataTable({
pageSize = 10,
onPageChange,
onPageSizeChange,
refetchTable
refetchTable,
buildId
}: {
data: schemaType[],
totalCount: number,
@@ -87,6 +88,7 @@ export function BuildSitesDataTable({
onPageChange: (page: number) => void,
onPageSizeChange: (size: number) => void,
refetchTable: () => void,
buildId?: string
}) {
const router = useRouter();
@@ -163,7 +165,7 @@ export function BuildSitesDataTable({
})}
</DropdownMenuContent>
</DropdownMenu>
<Button variant="outline" size="sm" onClick={() => { router.push("/build-sites/add") }}>
<Button variant="outline" size="sm" onClick={() => { router.push(`/build-sites/add`) }}>
<IconPlus />
<span className="hidden lg:inline">Add Build Sites</span>
</Button>

View File

@@ -2,6 +2,8 @@
import { BuildSitesDataTable } from './list/data-table';
import { useGraphQlBuildSitesList } from './queries';
import { useState } from 'react';
import { useRouter, useSearchParams } from 'next/navigation';
import { Button } from '@/components/ui/button';
const PageBuildSites = () => {
@@ -10,14 +12,16 @@ const PageBuildSites = () => {
const [sort, setSort] = useState({ createdAt: 'desc' });
const [filters, setFilters] = useState({});
const { data, isLoading, error, refetch } = useGraphQlBuildSitesList({ limit, skip: (page - 1) * limit, sort, filters });
const searchParams = useSearchParams();
const router = useRouter();
const noUUIDFound = <><div>Back To Builds. No uuid is found on headers</div><Button onClick={() => router.push('/builds')}>Back to Builds</Button></>
const handlePageChange = (newPage: number) => { setPage(newPage) };
const handlePageSizeChange = (newSize: number) => { setLimit(newSize); setPage(1) };
const { data, isLoading, error, refetch } = useGraphQlBuildSitesList({ limit, skip: (page - 1) * limit, sort, filters: { ...filters } });
if (isLoading) { return <div className="flex items-center justify-center p-8">Loading...</div> }
if (error) { return <div className="flex items-center justify-center p-8 text-red-500">Error loading build sites</div> }
return <BuildSitesDataTable data={data?.data || []} totalCount={data?.totalCount || 0} currentPage={page} pageSize={limit} onPageChange={handlePageChange} onPageSizeChange={handlePageSizeChange} refetchTable={refetch} />;
};

View File

@@ -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"

View File

@@ -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} />
</>

View File

@@ -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 }

View File

@@ -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>;

View File

@@ -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>