From 524d08b62068e8a129114c77d8181205defb3ce1 Mon Sep 17 00:00:00 2001 From: bicochan Date: Thu, 17 Apr 2025 14:10:47 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=EB=AA=A8=EB=93=88=20API=20=EA=B6=8C?= =?UTF-8?q?=ED=95=9C=20=EA=B4=80=EB=A6=AC=20=EC=9E=91=EC=97=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../model/menu-authority-table-columns.tsx | 2 +- .../ui/management-authority-dialog.tsx | 4 +-- apps/cs/middleware.ts | 1 + .../model/menu-authority-table-columns.tsx | 2 +- .../ui/management-authority-dialog.tsx | 4 +-- .../banner/model/banner-table-columns.tsx | 2 +- apps/cs/src/pages/banner/ui/banner-page.tsx | 4 +-- .../cs/src/pages/file/model/table-columns.tsx | 2 +- apps/cs/src/pages/file/ui/file-page.tsx | 4 +-- .../model/role-authorizations-interface.ts | 2 ++ .../role-authorizations-table-columns.tsx | 32 +++++++++++++------ .../module/ui/management-authority-dialog.tsx | 13 ++++++-- 12 files changed, 48 insertions(+), 24 deletions(-) diff --git a/apps/common/feature/src/entities/menu-authority/model/menu-authority-table-columns.tsx b/apps/common/feature/src/entities/menu-authority/model/menu-authority-table-columns.tsx index 90bff735d..1a9863e15 100644 --- a/apps/common/feature/src/entities/menu-authority/model/menu-authority-table-columns.tsx +++ b/apps/common/feature/src/entities/menu-authority/model/menu-authority-table-columns.tsx @@ -7,7 +7,7 @@ import type { MenuAuthorityPayloadData, } from "./menu-authority-interface"; -export const columns = ( +export const createColumns = ( form: UseFormReturn, ): ColumnDef[] => { const getCurrentRow = (i: number) => form.watch("menuAuthority")[i]; diff --git a/apps/common/feature/src/entities/menu-authority/ui/management-authority-dialog.tsx b/apps/common/feature/src/entities/menu-authority/ui/management-authority-dialog.tsx index 8b940634a..62915e2ed 100644 --- a/apps/common/feature/src/entities/menu-authority/ui/management-authority-dialog.tsx +++ b/apps/common/feature/src/entities/menu-authority/ui/management-authority-dialog.tsx @@ -21,7 +21,7 @@ import { type MenuAuthorityFormData, type MenuAuthorityPayloadData, } from "../model/menu-authority-interface"; -import { columns } from "../model/menu-authority-table-columns"; +import { createColumns } from "../model/menu-authority-table-columns"; import { MenuAuthorityApi } from "../api/menu-authority-service"; type ManagementAuthorityDialogProps = { @@ -58,7 +58,7 @@ function ManagementAuthorityDialog({ const table = useReactTable({ data: menuAuthorityList?.content ?? [], - columns: columns(form), + columns: createColumns(form), getCoreRowModel: getCoreRowModel(), }); diff --git a/apps/cs/middleware.ts b/apps/cs/middleware.ts index 493699bb2..923069eb9 100644 --- a/apps/cs/middleware.ts +++ b/apps/cs/middleware.ts @@ -13,6 +13,7 @@ export function middleware(req: NextRequest) { const newUrl = `${serverApiUrl}${pathname.replace("/server", "")}${ queryParams ? `?${queryParams}` : "" }`; + console.log("Rewriting to >>>>", newUrl); return NextResponse.rewrite(new URL(newUrl)); } diff --git a/apps/cs/src/entities/menu-authority/model/menu-authority-table-columns.tsx b/apps/cs/src/entities/menu-authority/model/menu-authority-table-columns.tsx index 90bff735d..1a9863e15 100644 --- a/apps/cs/src/entities/menu-authority/model/menu-authority-table-columns.tsx +++ b/apps/cs/src/entities/menu-authority/model/menu-authority-table-columns.tsx @@ -7,7 +7,7 @@ import type { MenuAuthorityPayloadData, } from "./menu-authority-interface"; -export const columns = ( +export const createColumns = ( form: UseFormReturn, ): ColumnDef[] => { const getCurrentRow = (i: number) => form.watch("menuAuthority")[i]; diff --git a/apps/cs/src/entities/menu-authority/ui/management-authority-dialog.tsx b/apps/cs/src/entities/menu-authority/ui/management-authority-dialog.tsx index 8b940634a..62915e2ed 100644 --- a/apps/cs/src/entities/menu-authority/ui/management-authority-dialog.tsx +++ b/apps/cs/src/entities/menu-authority/ui/management-authority-dialog.tsx @@ -21,7 +21,7 @@ import { type MenuAuthorityFormData, type MenuAuthorityPayloadData, } from "../model/menu-authority-interface"; -import { columns } from "../model/menu-authority-table-columns"; +import { createColumns } from "../model/menu-authority-table-columns"; import { MenuAuthorityApi } from "../api/menu-authority-service"; type ManagementAuthorityDialogProps = { @@ -58,7 +58,7 @@ function ManagementAuthorityDialog({ const table = useReactTable({ data: menuAuthorityList?.content ?? [], - columns: columns(form), + columns: createColumns(form), getCoreRowModel: getCoreRowModel(), }); diff --git a/apps/cs/src/pages/banner/model/banner-table-columns.tsx b/apps/cs/src/pages/banner/model/banner-table-columns.tsx index 9b36a54fc..74da7c31c 100644 --- a/apps/cs/src/pages/banner/model/banner-table-columns.tsx +++ b/apps/cs/src/pages/banner/model/banner-table-columns.tsx @@ -9,7 +9,7 @@ import { AttachmentApi } from "@/entities/attachment"; import { ENDPOINT } from "@/shared/config"; import type { Banner } from "./banner-interface"; -export const columns = ( +export const createColumns = ( imageRefs: React.MutableRefObject>, ): ColumnDef[] => [ { diff --git a/apps/cs/src/pages/banner/ui/banner-page.tsx b/apps/cs/src/pages/banner/ui/banner-page.tsx index 3f0cf5242..baa372b5f 100644 --- a/apps/cs/src/pages/banner/ui/banner-page.tsx +++ b/apps/cs/src/pages/banner/ui/banner-page.tsx @@ -13,7 +13,7 @@ import { Button, DataTable, Input, Label } from "@common/components"; import { POSTING_TYPE, PostingDialog } from "@/entities/posting"; import { ENDPOINT } from "@/shared/config"; import { BannerApi } from "../api/banner-service"; -import { columns } from "../model/banner-table-columns"; +import { createColumns } from "../model/banner-table-columns"; import { type Banner, type BannerParams } from "../model/banner-interface"; import { PreviewBannerDialog } from "./preview-banner-dialog"; @@ -47,7 +47,7 @@ function BannerPage() { const table = useReactTable({ data: bannerList?.content ?? [], - columns: columns(imageRefs), + columns: createColumns(imageRefs), state: { pagination, rowSelection, diff --git a/apps/cs/src/pages/file/model/table-columns.tsx b/apps/cs/src/pages/file/model/table-columns.tsx index c3a5385f0..2a73bf54a 100644 --- a/apps/cs/src/pages/file/model/table-columns.tsx +++ b/apps/cs/src/pages/file/model/table-columns.tsx @@ -5,7 +5,7 @@ import { type ColumnDef } from "@tanstack/react-table"; import { Button } from "@common/components"; import type { Attachment } from "@/entities/attachment/model/attachment-interface"; -export const columns = ( +export const createColumns = ( handleDeleteAttachment: (atflId: string) => void, ): ColumnDef[] => [ { diff --git a/apps/cs/src/pages/file/ui/file-page.tsx b/apps/cs/src/pages/file/ui/file-page.tsx index a331c6648..c896531bb 100644 --- a/apps/cs/src/pages/file/ui/file-page.tsx +++ b/apps/cs/src/pages/file/ui/file-page.tsx @@ -13,7 +13,7 @@ import type { AttachmentParams } from "@/entities/attachment/model/attachment-in import { AttachmentApi } from "@/entities/attachment/api/attachment-service"; import { useAlertStore } from "@/shared/lib/use-alert-store"; import { ENDPOINT } from "@/shared/config"; -import { columns } from "../model/table-columns"; +import { createColumns } from "../model/table-columns"; function FilePage() { const { confirm } = useConfirm(); @@ -55,7 +55,7 @@ function FilePage() { const table = useReactTable({ data: attachmentsList?.content ?? [], - columns: columns(handleDeleteAttachment), + columns: createColumns(handleDeleteAttachment), rowCount: attachmentsList?.totalElements ?? 0, state: { pagination, diff --git a/apps/cs/src/pages/module/model/role-authorizations-interface.ts b/apps/cs/src/pages/module/model/role-authorizations-interface.ts index ea6b29808..a2352346e 100644 --- a/apps/cs/src/pages/module/model/role-authorizations-interface.ts +++ b/apps/cs/src/pages/module/model/role-authorizations-interface.ts @@ -13,11 +13,13 @@ export interface RoleAuthorizations { roleContent: string; useYn: string; authorizationNo: number; + authYn: string; } export const roleAuthorizationsSchema = z.object({ roleId: z.string(), authorizationNo: z.number(), + authYn: z.string(), }); export const roleAuthorizationsFormSchema = z.object({ diff --git a/apps/cs/src/pages/module/model/role-authorizations-table-columns.tsx b/apps/cs/src/pages/module/model/role-authorizations-table-columns.tsx index 24198d4a1..e9a9a6d4d 100644 --- a/apps/cs/src/pages/module/model/role-authorizations-table-columns.tsx +++ b/apps/cs/src/pages/module/model/role-authorizations-table-columns.tsx @@ -1,25 +1,39 @@ import { type ColumnDef } from "@tanstack/react-table"; import type { RoleAuthorizations } from "./role-authorizations-interface"; import { Checkbox } from "@common/components/ui"; +import type { UseFormReturn } from "react-hook-form"; +import type { RoleAuthorizationsFormData } from "./role-authorizations-interface"; -export const columns: ColumnDef[] = [ +export const createColumns = ( + form: UseFormReturn, +): ColumnDef[] => [ { id: "select", header: ({ table }) => ( e.stopPropagation()} - onCheckedChange={(checked) => - table.toggleAllPageRowsSelected(!!checked) - } + checked={form + .watch("roleAuthorizations") + .every((role) => role.authYn === "Y")} + onCheckedChange={(checked) => { + table.getRowModel().rows.forEach((row, index) => { + form.setValue( + `roleAuthorizations.${index}.authYn`, + checked ? "Y" : "N", + ); + }); + }} className="h-4 w-4 rounded border-gray-300" /> ), cell: ({ row }) => ( e.stopPropagation()} - onCheckedChange={(checked) => row.toggleSelected(!!checked)} + checked={form.watch(`roleAuthorizations.${row.index}.authYn`) === "Y"} + onCheckedChange={(checked) => { + form.setValue( + `roleAuthorizations.${row.index}.authYn`, + checked ? "Y" : "N", + ); + }} className="h-4 w-4 rounded border-gray-300" /> ), diff --git a/apps/cs/src/pages/module/ui/management-authority-dialog.tsx b/apps/cs/src/pages/module/ui/management-authority-dialog.tsx index 5a84e068b..02320c25a 100644 --- a/apps/cs/src/pages/module/ui/management-authority-dialog.tsx +++ b/apps/cs/src/pages/module/ui/management-authority-dialog.tsx @@ -32,7 +32,7 @@ import { type RoleAuthorizationsFormData, type RoleAuthorizationsData, } from "../model/role-authorizations-interface"; -import { columns } from "../model/role-authorizations-table-columns"; +import { createColumns } from "../model/role-authorizations-table-columns"; import type { Authorizations } from "../model/authorizations-interface"; import { RoleAuthorizationsApi } from "../api/role-authorization-service"; @@ -70,13 +70,20 @@ function ManagementAuthorityDialog({ const form = useForm({ resolver: zodResolver(roleAuthorizationsFormSchema), values: { - roleAuthorizations: roleAuthorizationList?.content ?? [], + roleAuthorizations: + roleAuthorizationList?.content.map( + ({ roleId, authorizationNo, useYn }) => ({ + roleId, + authorizationNo, + authYn: useYn, + }), + ) ?? [], }, }); const table = useReactTable({ data: roleAuthorizationList?.content ?? [], - columns, + columns: createColumns(form), state: { rowSelection, },