62 lines
2.9 KiB
TypeScript
62 lines
2.9 KiB
TypeScript
// 설정 패널 컴포넌트 동적 매핑
|
|
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; // 기본 설정 (패널 없음)
|
|
}
|
|
};
|