restapi 버튼 동작

This commit is contained in:
kjs
2025-09-29 12:17:10 +09:00
parent cedb5e3ec3
commit c9afdec09f
19 changed files with 1910 additions and 81 deletions

View File

@@ -37,7 +37,7 @@ interface RelationshipOption {
* 🔥 버튼 제어관리 설정 패널 (Phase 1: 간편 모드만)
*
* 성능 최적화를 위해 간편 모드만 구현:
* - 기존 관계 선택
* - 기존 관계 선택
* - "after" 타이밍만 지원
* - 복잡한 고급 모드는 Phase 2에서
*/
@@ -57,14 +57,14 @@ export const ButtonDataflowConfigPanel: React.FC<ButtonDataflowConfigPanelProps>
const [relationshipOpen, setRelationshipOpen] = useState(false);
const [previewData, setPreviewData] = useState<any>(null);
// 🔥 관계 목록 로딩
// 🔥 관계 목록 로딩
useEffect(() => {
if (config.enableDataflowControl) {
loadDiagrams();
}
}, [config.enableDataflowControl]);
// 🔥 관계 변경 시 관계 목록 로딩
// 🔥 관계 변경 시 관계 목록 로딩
useEffect(() => {
if (dataflowConfig.selectedDiagramId) {
loadRelationships(dataflowConfig.selectedDiagramId);
@@ -72,12 +72,12 @@ export const ButtonDataflowConfigPanel: React.FC<ButtonDataflowConfigPanelProps>
}, [dataflowConfig.selectedDiagramId]);
/**
* 🔥 관계 목록 로딩 (캐시 활용)
* 🔥 관계 목록 로딩 (캐시 활용)
*/
const loadDiagrams = async () => {
try {
setDiagramsLoading(true);
console.log("🔍 데이터플로우 관계 목록 로딩...");
console.log("🔍 데이터플로우 관계 목록 로딩...");
const response = await apiClient.get("/test-button-dataflow/diagrams");
@@ -90,10 +90,10 @@ export const ButtonDataflowConfigPanel: React.FC<ButtonDataflowConfigPanelProps>
}));
setDiagrams(diagramList);
console.log(`✅ 관계 ${diagramList.length}개 로딩 완료`);
console.log(`✅ 관계 ${diagramList.length}개 로딩 완료`);
}
} catch (error) {
console.error("❌ 관계 목록 로딩 실패:", error);
console.error("❌ 관계 목록 로딩 실패:", error);
setDiagrams([]);
} finally {
setDiagramsLoading(false);
@@ -106,7 +106,7 @@ export const ButtonDataflowConfigPanel: React.FC<ButtonDataflowConfigPanelProps>
const loadRelationships = async (diagramId: number) => {
try {
setRelationshipsLoading(true);
console.log(`🔍 관계 ${diagramId} 관계 목록 로딩...`);
console.log(`🔍 관계 ${diagramId} 관계 목록 로딩...`);
const response = await apiClient.get(`/test-button-dataflow/diagrams/${diagramId}/relationships`);
@@ -216,7 +216,7 @@ export const ButtonDataflowConfigPanel: React.FC<ButtonDataflowConfigPanelProps>
}
};
// 선택된 관계 정보
// 선택된 관계 정보
const selectedDiagram = diagrams.find((d) => d.id === dataflowConfig.selectedDiagramId);
const selectedRelationship = relationships.find((r) => r.id === dataflowConfig.selectedRelationshipId);
@@ -324,7 +324,7 @@ export const ButtonDataflowConfigPanel: React.FC<ButtonDataflowConfigPanelProps>
<SelectValue placeholder="제어 모드를 선택하세요" />
</SelectTrigger>
<SelectContent>
<SelectItem value="simple"> ( )</SelectItem>
<SelectItem value="simple"> ( )</SelectItem>
<SelectItem value="advanced" disabled>
()
</SelectItem>
@@ -335,11 +335,11 @@ export const ButtonDataflowConfigPanel: React.FC<ButtonDataflowConfigPanelProps>
{/* 간편 모드 설정 */}
{(dataflowConfig.controlMode === "simple" || !dataflowConfig.controlMode) && (
<div className="space-y-3 rounded border bg-gray-50 p-3">
<h4 className="text-sm font-medium text-gray-700"> </h4>
<h4 className="text-sm font-medium text-gray-700"> </h4>
{/* 관계 선택 */}
{/* 관계 선택 */}
<div>
<Label className="text-xs"></Label>
<Label className="text-xs"></Label>
<Popover open={diagramOpen} onOpenChange={setDiagramOpen}>
<PopoverTrigger asChild>
<Button
@@ -357,7 +357,7 @@ export const ButtonDataflowConfigPanel: React.FC<ButtonDataflowConfigPanelProps>
</Badge>
</div>
) : (
"관계를 선택하세요"
"관계를 선택하세요"
)}
<ChevronsUpDown className="ml-2 h-4 w-4 shrink-0 opacity-50" />
</Button>
@@ -365,9 +365,9 @@ export const ButtonDataflowConfigPanel: React.FC<ButtonDataflowConfigPanelProps>
<PopoverContent className="w-80 p-0">
<div className="p-2">
{diagramsLoading ? (
<div className="p-4 text-center text-sm text-gray-500"> ...</div>
<div className="p-4 text-center text-sm text-gray-500"> ...</div>
) : diagrams.length === 0 ? (
<div className="p-4 text-center text-sm text-gray-500"> </div>
<div className="p-4 text-center text-sm text-gray-500"> </div>
) : (
<div className="max-h-60 overflow-y-auto">
{diagrams.map((diagram) => (
@@ -377,7 +377,7 @@ export const ButtonDataflowConfigPanel: React.FC<ButtonDataflowConfigPanelProps>
className="h-auto w-full justify-start p-2"
onClick={() => {
onUpdateProperty("webTypeConfig.dataflowConfig.selectedDiagramId", diagram.id);
// 관계 변경 시 기존 관계 선택 초기화
// 관계 변경 시 기존 관계 선택 초기화
onUpdateProperty("webTypeConfig.dataflowConfig.selectedRelationshipId", null);
setDiagramOpen(false);
}}
@@ -435,7 +435,7 @@ export const ButtonDataflowConfigPanel: React.FC<ButtonDataflowConfigPanelProps>
<div className="p-4 text-center text-sm text-gray-500"> ...</div>
) : relationships.length === 0 ? (
<div className="p-4 text-center text-sm text-gray-500">
</div>
) : (
<div className="max-h-60 overflow-y-auto">