데이터전달 모달열기 액션에 컬럼 매핑기능 추가

This commit is contained in:
kjs
2025-12-08 15:50:58 +09:00
parent 274078ef2c
commit ec65ad6b9e
4 changed files with 324 additions and 8 deletions

View File

@@ -59,6 +59,7 @@ export interface ButtonActionConfig {
popupWidth?: number;
popupHeight?: number;
dataSourceId?: string; // 🆕 modalDataStore에서 데이터를 가져올 ID (openModalWithData용)
fieldMappings?: Array<{ sourceField: string; targetField: string }>; // 🆕 필드 매핑 (openModalWithData용)
// 확인 메시지
confirmMessage?: string;
@@ -1548,10 +1549,27 @@ export class ButtonActionExecutor {
}
// 🆕 부모 화면의 선택된 데이터 가져오기 (excludeFilter에서 사용)
const parentData = dataRegistry[dataSourceId]?.[0]?.originalData || dataRegistry[dataSourceId]?.[0] || {};
const rawParentData = dataRegistry[dataSourceId]?.[0]?.originalData || dataRegistry[dataSourceId]?.[0] || {};
// 🆕 필드 매핑 적용 (소스 컬럼 → 타겟 컬럼)
let parentData = { ...rawParentData };
if (config.fieldMappings && Array.isArray(config.fieldMappings) && config.fieldMappings.length > 0) {
console.log("🔄 [openModalWithData] 필드 매핑 적용:", config.fieldMappings);
config.fieldMappings.forEach((mapping: { sourceField: string; targetField: string }) => {
if (mapping.sourceField && mapping.targetField && rawParentData[mapping.sourceField] !== undefined) {
// 타겟 필드에 소스 필드 값 복사
parentData[mapping.targetField] = rawParentData[mapping.sourceField];
console.log(`${mapping.sourceField}${mapping.targetField}: ${rawParentData[mapping.sourceField]}`);
}
});
}
console.log("📦 [openModalWithData] 부모 데이터 전달:", {
dataSourceId,
parentData,
rawParentData,
mappedParentData: parentData,
fieldMappings: config.fieldMappings,
});
// 🆕 전역 모달 상태 업데이트를 위한 이벤트 발생 (URL 파라미터 포함)