diff --git a/frontend/app/(admin)/admin/doc-control/drawings/contract/categories/page.tsx b/frontend/app/(admin)/admin/doc-control/drawings/contract/categories/page.tsx index 2334a54..557b336 100644 --- a/frontend/app/(admin)/admin/doc-control/drawings/contract/categories/page.tsx +++ b/frontend/app/(admin)/admin/doc-control/drawings/contract/categories/page.tsx @@ -101,7 +101,12 @@ export default function ContractCategoriesPage() { title="Contract Drawing Categories" description="Manage main categories (หมวดหมู่หลัก) for contract drawings" queryKey={['contract-drawing-categories', String(selectedProjectId)]} - fetchFn={() => drawingMasterDataService.getContractCategories(selectedProjectId)} + fetchFn={async () => { + console.log(`Fetching Contract Categories for project ${selectedProjectId}`); + const data = await drawingMasterDataService.getContractCategories(selectedProjectId); + console.log('Contract Categories Data:', data); + return data; + }} createFn={(data) => drawingMasterDataService.createContractCategory({ ...data, projectId: selectedProjectId })} updateFn={(id, data) => drawingMasterDataService.updateContractCategory(id, data)} deleteFn={(id) => drawingMasterDataService.deleteContractCategory(id)} @@ -259,21 +264,23 @@ function ManageMappings({ projectId }: { projectId: number }) {
No sub-categories mapped yet.
) : (
- {mappings.map((m: { id: number; subCategory: ContractSubCategory }) => ( -
- - {m.subCategory.subCatCode} - {m.subCategory.subCatName} - - -
- ))} + {mappings + .filter((m: any) => m && m.subCategory) + .map((m: { id: number; subCategory: ContractSubCategory }) => ( +
+ + {m.subCategory?.subCatCode ?? '?'} - {m.subCategory?.subCatName ?? 'Unknown'} + + +
+ ))}
)} diff --git a/frontend/app/(admin)/admin/doc-control/drawings/contract/sub-categories/page.tsx b/frontend/app/(admin)/admin/doc-control/drawings/contract/sub-categories/page.tsx index 07a4a53..c42e77b 100644 --- a/frontend/app/(admin)/admin/doc-control/drawings/contract/sub-categories/page.tsx +++ b/frontend/app/(admin)/admin/doc-control/drawings/contract/sub-categories/page.tsx @@ -1,19 +1,13 @@ -"use client"; +'use client'; -import { useState } from "react"; -import { GenericCrudTable } from "@/components/admin/reference/generic-crud-table"; -import { ColumnDef } from "@tanstack/react-table"; -import { - Select, - SelectContent, - SelectItem, - SelectTrigger, - SelectValue, -} from "@/components/ui/select"; -import { Loader2 } from "lucide-react"; -import { useProjects } from "@/hooks/use-master-data"; -import { drawingMasterDataService } from "@/lib/services/drawing-master-data.service"; -import { Badge } from "@/components/ui/badge"; +import { useState } from 'react'; +import { GenericCrudTable } from '@/components/admin/reference/generic-crud-table'; +import { ColumnDef } from '@tanstack/react-table'; +import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select'; +import { Loader2 } from 'lucide-react'; +import { useProjects } from '@/hooks/use-master-data'; +import { drawingMasterDataService } from '@/lib/services/drawing-master-data.service'; +import { Badge } from '@/components/ui/badge'; interface SubCategory { id: number; @@ -29,33 +23,27 @@ export default function ContractSubCategoriesPage() { const columns: ColumnDef[] = [ { - accessorKey: "subCatCode", - header: "Code", + accessorKey: 'subCatCode', + header: 'Code', cell: ({ row }) => ( - {row.getValue("subCatCode")} + {row.getValue('subCatCode')} ), }, { - accessorKey: "subCatName", - header: "Sub-category Name", + accessorKey: 'subCatName', + header: 'Sub-category Name', }, { - accessorKey: "description", - header: "Description", - cell: ({ row }) => ( - - {row.getValue("description") || "-"} - - ), + accessorKey: 'description', + header: 'Description', + cell: ({ row }) => {row.getValue('description') || '-'}, }, { - accessorKey: "sortOrder", - header: "Order", - cell: ({ row }) => ( - {row.getValue("sortOrder")} - ), + accessorKey: 'sortOrder', + header: 'Order', + cell: ({ row }) => {row.getValue('sortOrder')}, }, ]; @@ -63,7 +51,7 @@ export default function ContractSubCategoriesPage() {
Project: setSelectedProjectId(v ? parseInt(v) : undefined)} > @@ -101,9 +88,7 @@ export default function ShopMainCategoriesPage() {

Shop Drawing Main Categories

-

- Manage main categories (หมวดหมู่หลัก) for shop drawings -

+

Manage main categories (หมวดหมู่หลัก) for shop drawings

{projectFilter}
@@ -119,25 +104,34 @@ export default function ShopMainCategoriesPage() { entityName="Main Category" title="Shop Drawing Main Categories" description="Manage main categories (หมวดหมู่หลัก) for shop drawings" - queryKey={["shop-drawing-main-categories", String(selectedProjectId)]} - fetchFn={() => drawingMasterDataService.getShopMainCategories(selectedProjectId)} - createFn={(data) => drawingMasterDataService.createShopMainCategory({ - ...data, - projectId: selectedProjectId, - isActive: data.isActive === "true" || data.isActive === true - })} - updateFn={(id, data) => drawingMasterDataService.updateShopMainCategory(id, { - ...data, - isActive: data.isActive === "true" || data.isActive === true - })} + queryKey={['shop-drawing-main-categories', String(selectedProjectId)]} + fetchFn={async () => { + console.log(`Fetching Shop Main Categories for project ${selectedProjectId}`); + const data = await drawingMasterDataService.getShopMainCategories(selectedProjectId); + console.log('Shop Main Categories Data:', data); + return data; + }} + createFn={(data) => + drawingMasterDataService.createShopMainCategory({ + ...data, + projectId: selectedProjectId, + isActive: data.isActive === 'true' || data.isActive === true, + }) + } + updateFn={(id, data) => + drawingMasterDataService.updateShopMainCategory(id, { + ...data, + isActive: data.isActive === 'true' || data.isActive === true, + }) + } deleteFn={(id) => drawingMasterDataService.deleteShopMainCategory(id)} columns={columns} fields={[ - { name: "mainCategoryCode", label: "Category Code", type: "text", required: true }, - { name: "mainCategoryName", label: "Category Name", type: "text", required: true }, - { name: "description", label: "Description", type: "textarea" }, - { name: "isActive", label: "Active", type: "checkbox" }, - { name: "sortOrder", label: "Sort Order", type: "text", required: true }, + { name: 'mainCategoryCode', label: 'Category Code', type: 'text', required: true }, + { name: 'mainCategoryName', label: 'Category Name', type: 'text', required: true }, + { name: 'description', label: 'Description', type: 'textarea' }, + { name: 'isActive', label: 'Active', type: 'checkbox' }, + { name: 'sortOrder', label: 'Sort Order', type: 'text', required: true }, ]} filters={projectFilter} /> diff --git a/frontend/app/(admin)/admin/doc-control/drawings/shop/sub-categories/page.tsx b/frontend/app/(admin)/admin/doc-control/drawings/shop/sub-categories/page.tsx index 95a0e02..5459d17 100644 --- a/frontend/app/(admin)/admin/doc-control/drawings/shop/sub-categories/page.tsx +++ b/frontend/app/(admin)/admin/doc-control/drawings/shop/sub-categories/page.tsx @@ -107,7 +107,12 @@ export default function ShopSubCategoriesPage() { title="Shop Drawing Sub-categories" description="Manage sub-categories (หมวดหมู่ย่อย) for shop drawings" queryKey={['shop-drawing-sub-categories', String(selectedProjectId)]} - fetchFn={() => drawingMasterDataService.getShopSubCategories(selectedProjectId)} + fetchFn={async () => { + console.log(`Fetching Shop Sub-Categories for project ${selectedProjectId}`); + const data = await drawingMasterDataService.getShopSubCategories(selectedProjectId); + console.log('Shop Sub-Categories Data:', data); + return data; + }} createFn={(data) => drawingMasterDataService.createShopSubCategory({ ...data,