모달열기 기능 통합

This commit is contained in:
kjs
2026-01-05 18:22:46 +09:00
parent a34230ae90
commit 6295b52e87
3 changed files with 329 additions and 37 deletions

View File

@@ -2629,25 +2629,10 @@ export class ButtonActionExecutor {
dataSourceId = dataSourceId || context.tableName || "default";
console.log("🔍 [handleModal] 데이터 조회 시도:", {
dataSourceId,
autoDetectDataSource,
hasAllComponents: !!context.allComponents,
allComponentsCount: context.allComponents?.length,
});
// modalDataStore에서 데이터 가져오기
try {
const { useModalDataStore } = await import("@/stores/modalDataStore");
const dataRegistry = useModalDataStore.getState().dataRegistry;
console.log("📦 [handleModal] modalDataStore 상태:", {
registryKeys: Object.keys(dataRegistry),
targetKey: dataSourceId,
hasData: !!dataRegistry[dataSourceId],
dataLength: dataRegistry[dataSourceId]?.length || 0,
});
const modalData = dataRegistry[dataSourceId] || [];
if (modalData.length === 0) {
@@ -2658,15 +2643,19 @@ export class ButtonActionExecutor {
selectedData = modalData.map((item: any) => item.originalData || item);
const rawParentData = modalData[0]?.originalData || modalData[0] || {};
parentData = { ...rawParentData };
// 필드 매핑 적용
if (config.fieldMappings?.length) {
// 매핑이 있으면 매핑된 필드만 전달
parentData = {};
config.fieldMappings.forEach((mapping) => {
if (mapping.sourceField && mapping.targetField && rawParentData[mapping.sourceField] !== undefined) {
parentData[mapping.targetField] = rawParentData[mapping.sourceField];
}
});
} else {
// 매핑이 없으면 모든 필드 전달 (동일 컬럼명 자동 매핑)
parentData = { ...rawParentData };
}
} catch (error) {
console.error("❌ 데이터 확인 실패:", error);
@@ -2676,16 +2665,20 @@ export class ButtonActionExecutor {
} else {
// 2-2. 기본 모드: context에서 직접 가져오기
selectedData = context.selectedRowsData || [];
parentData = context.splitPanelParentData || {};
const rawParentData = context.splitPanelParentData || selectedData[0] || {};
// 필드 매핑 적용
if (config.fieldMappings?.length && selectedData.length > 0) {
const rawParentData = selectedData[0] || {};
// 매핑이 있으면 매핑된 필드만 전달
parentData = {};
config.fieldMappings.forEach((mapping) => {
if (mapping.sourceField && mapping.targetField && rawParentData[mapping.sourceField] !== undefined) {
parentData[mapping.targetField] = rawParentData[mapping.sourceField];
}
});
} else {
// 매핑이 없으면 모든 필드 전달 (동일 컬럼명 자동 매핑)
parentData = { ...rawParentData };
}
}
}
@@ -2749,14 +2742,6 @@ export class ButtonActionExecutor {
}
// 4. 모달 열기 이벤트 발생
console.log("🚀 [handleModal] 모달 열기 이벤트 발생:", {
screenId: config.targetScreenId,
title: finalTitle,
selectedDataCount: selectedData.length,
parentDataKeys: Object.keys(parentData),
parentData: parentData,
});
// passSelectedData가 true이면 editData로 전달 (수정 모드처럼 모든 필드 표시)
const isPassDataMode = passSelectedData && selectedData.length > 0;