diff options
| author | 0-Zz-ang <s1998319@gmail.com> | 2025-08-08 17:15:22 +0900 |
|---|---|---|
| committer | 0-Zz-ang <s1998319@gmail.com> | 2025-08-08 17:15:22 +0900 |
| commit | 7cdedf2cf8e807eeea9134888dc9bd1586978ea8 (patch) | |
| tree | e6b2eefda385ecbb6ae17494b9e05ccd8985e24d /lib/docu-list-rule/combo-box-settings | |
| parent | a6335760fc8e56d192f002eb0c3f26d1210d07a2 (diff) | |
(박서영)combo box 옵션 및 number type config Add에러 수정
Diffstat (limited to 'lib/docu-list-rule/combo-box-settings')
3 files changed, 21 insertions, 7 deletions
diff --git a/lib/docu-list-rule/combo-box-settings/service.ts b/lib/docu-list-rule/combo-box-settings/service.ts index 96daefe4..7a003327 100644 --- a/lib/docu-list-rule/combo-box-settings/service.ts +++ b/lib/docu-list-rule/combo-box-settings/service.ts @@ -4,7 +4,7 @@ import { revalidatePath } from "next/cache" import db from "@/db/db" import { codeGroups, comboBoxSettings } from "@/db/schema/docu-list-rule" import { projects } from "@/db/schema/projects" -import { eq, sql, count } from "drizzle-orm" +import { eq, sql } from "drizzle-orm" import { unstable_noStore } from "next/cache" // Control Type이 combobox인 Code Groups 목록 조회 @@ -153,7 +153,7 @@ export async function getComboBoxOptions(codeGroupId: number, input?: { const { page = 1, perPage = 10, sort, search } = input || {} const offset = (page - 1) * perPage - // 기본 조건: codeGroupId + // 기본 조건: codeGroupId만으로 조회 (projectId는 codeGroups를 통해 간접 참조) let whereConditions = eq(comboBoxSettings.codeGroupId, codeGroupId) // 검색 조건 @@ -195,12 +195,12 @@ export async function getComboBoxOptions(codeGroupId: number, input?: { remark: comboBoxSettings.remark, createdAt: comboBoxSettings.createdAt, updatedAt: comboBoxSettings.updatedAt, - projectId: comboBoxSettings.projectId, projectCode: projects.code, projectName: projects.name, }) .from(comboBoxSettings) - .leftJoin(projects, eq(comboBoxSettings.projectId, projects.id)) + .leftJoin(codeGroups, eq(comboBoxSettings.codeGroupId, codeGroups.id)) + .leftJoin(projects, eq(codeGroups.projectId, projects.id)) .where(whereConditions) .orderBy(orderBy) .limit(perPage) @@ -210,12 +210,14 @@ export async function getComboBoxOptions(codeGroupId: number, input?: { const totalCountResult = await db .select({ count: sql<number>`count(*)` }) .from(comboBoxSettings) - .leftJoin(projects, eq(comboBoxSettings.projectId, projects.id)) + .leftJoin(codeGroups, eq(comboBoxSettings.codeGroupId, codeGroups.id)) + .leftJoin(projects, eq(codeGroups.projectId, projects.id)) .where(whereConditions) const totalCount = totalCountResult[0]?.count || 0 return { + success: true, data, totalCount, pageCount: Math.ceil(totalCount / perPage), @@ -223,9 +225,11 @@ export async function getComboBoxOptions(codeGroupId: number, input?: { } catch (error) { console.error("Error fetching combo box options:", error) return { + success: false, data: [], totalCount: 0, pageCount: 0, + error: "Failed to fetch combo box options" } } } @@ -240,7 +244,9 @@ export async function createComboBoxOption(input: { try { // 해당 Code Group의 정보 가져오기 const codeGroup = await db - .select({ description: codeGroups.description }) + .select({ + description: codeGroups.description + }) .from(codeGroups) .where(eq(codeGroups.id, input.codeGroupId)) .limit(1) diff --git a/lib/docu-list-rule/combo-box-settings/table/combo-box-options-add-dialog.tsx b/lib/docu-list-rule/combo-box-settings/table/combo-box-options-add-dialog.tsx index a0535b43..9a3f8a86 100644 --- a/lib/docu-list-rule/combo-box-settings/table/combo-box-options-add-dialog.tsx +++ b/lib/docu-list-rule/combo-box-settings/table/combo-box-options-add-dialog.tsx @@ -59,6 +59,7 @@ export function ComboBoxOptionsAddDialog({ codeGroupId, onSuccess }: ComboBoxOpt const handleCodeChange = (value: string) => { form.setValue("code", value) form.setValue("description", value) // 코드값을 description에도 자동 설정 + form.trigger() // 폼 유효성 검사 트리거 } const handleSubmit = (data: CreateOptionSchema) => { @@ -155,7 +156,10 @@ export function ComboBoxOptionsAddDialog({ codeGroupId, onSuccess }: ComboBoxOpt <Button type="button" variant="outline" onClick={handleCancel}> 취소 </Button> - <Button type="submit" disabled={isPending || !form.formState.isValid}> + <Button + type="submit" + disabled={isPending || !form.formState.isValid || !form.watch("code")} + > 추가 </Button> </DialogFooter> diff --git a/lib/docu-list-rule/combo-box-settings/table/combo-box-options-detail-sheet.tsx b/lib/docu-list-rule/combo-box-settings/table/combo-box-options-detail-sheet.tsx index 22806ae8..286acfbf 100644 --- a/lib/docu-list-rule/combo-box-settings/table/combo-box-options-detail-sheet.tsx +++ b/lib/docu-list-rule/combo-box-settings/table/combo-box-options-detail-sheet.tsx @@ -61,16 +61,20 @@ export function ComboBoxOptionsDetailSheet({ filters: [], joinOperator: "and", }) + console.log("getComboBoxOptions result:", result) if (result.success && result.data) { // isActive 필드가 없는 경우 기본값 true로 설정 const optionsWithIsActive = result.data.map(option => ({ ...option, isActive: (option as any).isActive ?? true })) + console.log("Processed data:", optionsWithIsActive) setRawData({ data: optionsWithIsActive, pageCount: result.pageCount || 1 }) + } else { + console.log("No data or error:", result) } } catch (error) { console.error("Error refreshing data:", error) |
