summaryrefslogtreecommitdiff
path: root/lib/docu-list-rule/document-class/table/document-class-add-dialog.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'lib/docu-list-rule/document-class/table/document-class-add-dialog.tsx')
-rw-r--r--lib/docu-list-rule/document-class/table/document-class-add-dialog.tsx73
1 files changed, 7 insertions, 66 deletions
diff --git a/lib/docu-list-rule/document-class/table/document-class-add-dialog.tsx b/lib/docu-list-rule/document-class/table/document-class-add-dialog.tsx
index a51b0598..e2cfc39e 100644
--- a/lib/docu-list-rule/document-class/table/document-class-add-dialog.tsx
+++ b/lib/docu-list-rule/document-class/table/document-class-add-dialog.tsx
@@ -26,19 +26,12 @@ import {
FormMessage,
} from "@/components/ui/form"
import { Input } from "@/components/ui/input"
-import {
- Select,
- SelectContent,
- SelectItem,
- SelectTrigger,
- SelectValue,
-} from "@/components/ui/select"
+
import { createDocumentClassCodeGroup } from "@/lib/docu-list-rule/document-class/service"
-import { getProjectLists } from "@/lib/projects/service"
+import { useParams } from "next/navigation"
const createDocumentClassSchema = z.object({
- projectId: z.string().min(1, "프로젝트는 필수입니다."),
value: z.string().min(1, "Value는 필수입니다."),
description: z.string().optional(),
})
@@ -52,56 +45,27 @@ interface DocumentClassAddDialogProps {
export function DocumentClassAddDialog({
onSuccess,
}: DocumentClassAddDialogProps) {
+ const params = useParams()
+ const projectId = Number(params?.projectId)
const [open, setOpen] = React.useState(false)
const [isPending, startTransition] = React.useTransition()
- const [projects, setProjects] = React.useState<Array<{ id: number; code: string; name: string; type: string }>>([])
const form = useForm<CreateDocumentClassSchema>({
resolver: zodResolver(createDocumentClassSchema),
defaultValues: {
- projectId: "",
value: "",
description: "",
},
mode: "onChange"
})
- // 프로젝트 목록 로드
- React.useEffect(() => {
- if (open) {
- const loadProjects = async () => {
- try {
- const result = await getProjectLists({
- page: 1,
- perPage: 1000,
- search: "",
- sort: [],
- filters: [],
- joinOperator: "and",
- flags: [],
- code: "",
- name: "",
- type: ""
- })
- if (result.data) {
- // plant 타입의 프로젝트만 필터링
- const plantProjects = result.data.filter(project => project.type === 'plant')
- setProjects(plantProjects)
- }
- } catch (error) {
- console.error("Failed to load projects:", error)
- toast.error("프로젝트 목록을 불러오는데 실패했습니다.")
- }
- }
- loadProjects()
- }
- }, [open])
+
async function onSubmit(input: CreateDocumentClassSchema) {
startTransition(async () => {
try {
const result = await createDocumentClassCodeGroup({
- projectId: parseInt(input.projectId),
+ projectId: projectId,
value: input.value,
description: input.description,
})
@@ -144,30 +108,7 @@ export function DocumentClassAddDialog({
</DialogHeader>
<Form {...form}>
<form onSubmit={form.handleSubmit(onSubmit)} className="space-y-4">
- <FormField
- control={form.control}
- name="projectId"
- render={({ field }) => (
- <FormItem>
- <FormLabel>프로젝트 *</FormLabel>
- <Select onValueChange={field.onChange} defaultValue={field.value}>
- <FormControl>
- <SelectTrigger>
- <SelectValue placeholder="프로젝트를 선택하세요" />
- </SelectTrigger>
- </FormControl>
- <SelectContent>
- {projects.map((project) => (
- <SelectItem key={project.id} value={project.id.toString()}>
- {project.code} - {project.name}
- </SelectItem>
- ))}
- </SelectContent>
- </Select>
- <FormMessage />
- </FormItem>
- )}
- />
+
<FormField
control={form.control}