ERP-node/frontend/lib/utils/getConfigPanelComponent.ts

62 lines
2.9 KiB
TypeScript
Raw Normal View History

2025-09-09 15:42:04 +09:00
// 설정 패널 컴포넌트 동적 매핑
import React from "react";
import { DateTypeConfigPanel } from "@/components/screen/panels/webtype-configs/DateTypeConfigPanel";
import { NumberTypeConfigPanel } from "@/components/screen/panels/webtype-configs/NumberTypeConfigPanel";
import { SelectTypeConfigPanel } from "@/components/screen/panels/webtype-configs/SelectTypeConfigPanel";
import { TextTypeConfigPanel } from "@/components/screen/panels/webtype-configs/TextTypeConfigPanel";
import { TextareaTypeConfigPanel } from "@/components/screen/panels/webtype-configs/TextareaTypeConfigPanel";
import { CheckboxTypeConfigPanel } from "@/components/screen/panels/webtype-configs/CheckboxTypeConfigPanel";
import { RadioTypeConfigPanel } from "@/components/screen/panels/webtype-configs/RadioTypeConfigPanel";
import { FileTypeConfigPanel } from "@/components/screen/panels/webtype-configs/FileTypeConfigPanel";
import { CodeTypeConfigPanel } from "@/components/screen/panels/webtype-configs/CodeTypeConfigPanel";
import { EntityTypeConfigPanel } from "@/components/screen/panels/webtype-configs/EntityTypeConfigPanel";
import { RatingTypeConfigPanel } from "@/components/screen/panels/webtype-configs/RatingTypeConfigPanel";
// 설정 패널 컴포넌트 타입
export type ConfigPanelComponent = React.ComponentType<{
config: any;
onConfigChange: (config: any) => void;
}>;
// 설정 패널 이름으로 직접 매핑하는 함수 (DB의 config_panel 필드용)
export const getConfigPanelComponent = (panelName: string): ConfigPanelComponent | null => {
console.log(`🔧 getConfigPanelComponent 호출: panelName="${panelName}"`);
// "none"이나 빈 값은 null 반환 (기본 설정)
if (!panelName || panelName === "none") {
console.log(`🔧 빈 값 또는 "none" → null 반환`);
return null;
}
switch (panelName) {
case "DateTypeConfigPanel":
return DateTypeConfigPanel;
case "NumberTypeConfigPanel":
return NumberTypeConfigPanel;
case "SelectTypeConfigPanel":
return SelectTypeConfigPanel;
case "TextTypeConfigPanel":
return TextTypeConfigPanel;
case "TextareaTypeConfigPanel":
return TextareaTypeConfigPanel;
case "CheckboxTypeConfigPanel":
return CheckboxTypeConfigPanel;
case "RadioTypeConfigPanel":
return RadioTypeConfigPanel;
case "FileTypeConfigPanel":
return FileTypeConfigPanel;
case "CodeTypeConfigPanel":
return CodeTypeConfigPanel;
case "EntityTypeConfigPanel":
return EntityTypeConfigPanel;
case "RatingTypeConfigPanel":
console.log(`🔧 RatingTypeConfigPanel 컴포넌트 반환`);
console.log(`🔧 RatingTypeConfigPanel 타입:`, typeof RatingTypeConfigPanel);
console.log(`🔧 RatingTypeConfigPanel 내용:`, RatingTypeConfigPanel);
return RatingTypeConfigPanel;
default:
console.warn(`🔧 알 수 없는 설정 패널: ${panelName}, 기본 설정 사용`);
return null; // 기본 설정 (패널 없음)
}
};