엔티티타입 연쇄관계관리 설정 추가
This commit is contained in:
@@ -16,9 +16,16 @@ declare global {
|
||||
masterData: Record<string, any> | null;
|
||||
config: RelatedDataButtonsConfig | null;
|
||||
};
|
||||
// 🆕 RelatedDataButtons가 대상으로 하는 테이블 목록 (전역 레지스트리)
|
||||
__relatedButtonsTargetTables?: Set<string>;
|
||||
}
|
||||
}
|
||||
|
||||
// 전역 레지스트리 초기화
|
||||
if (typeof window !== "undefined" && !window.__relatedButtonsTargetTables) {
|
||||
window.__relatedButtonsTargetTables = new Set();
|
||||
}
|
||||
|
||||
interface RelatedDataButtonsComponentProps {
|
||||
config: RelatedDataButtonsConfig;
|
||||
className?: string;
|
||||
@@ -59,11 +66,54 @@ export const RelatedDataButtonsComponent: React.FC<RelatedDataButtonsComponentPr
|
||||
setMasterData(null);
|
||||
setButtons([]);
|
||||
setSelectedId(null);
|
||||
setSelectedItem(null);
|
||||
|
||||
// 🆕 좌측 데이터가 없을 때 대상 테이블에 빈 상태 알림
|
||||
if (config.events?.targetTable) {
|
||||
window.dispatchEvent(new CustomEvent("related-button-select", {
|
||||
detail: {
|
||||
targetTable: config.events.targetTable,
|
||||
filterColumn: config.events.targetFilterColumn,
|
||||
filterValue: null, // null로 설정하여 빈 상태 표시
|
||||
selectedData: null,
|
||||
},
|
||||
}));
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
setMasterData(splitPanelContext.selectedLeftData);
|
||||
}, [splitPanelContext?.selectedLeftData]);
|
||||
}, [splitPanelContext?.selectedLeftData, config.events]);
|
||||
|
||||
// 🆕 컴포넌트 마운트 시 대상 테이블에 필터 필요 알림
|
||||
useEffect(() => {
|
||||
if (config.events?.targetTable) {
|
||||
// 전역 레지스트리에 등록
|
||||
window.__relatedButtonsTargetTables?.add(config.events.targetTable);
|
||||
|
||||
// 이벤트도 발생 (이미 마운트된 테이블 컴포넌트를 위해)
|
||||
window.dispatchEvent(new CustomEvent("related-button-register", {
|
||||
detail: {
|
||||
targetTable: config.events.targetTable,
|
||||
filterColumn: config.events.targetFilterColumn,
|
||||
},
|
||||
}));
|
||||
console.log("📝 [RelatedDataButtons] 대상 테이블에 필터 등록:", config.events.targetTable);
|
||||
}
|
||||
|
||||
return () => {
|
||||
// 컴포넌트 언마운트 시 등록 해제
|
||||
if (config.events?.targetTable) {
|
||||
window.__relatedButtonsTargetTables?.delete(config.events.targetTable);
|
||||
|
||||
window.dispatchEvent(new CustomEvent("related-button-unregister", {
|
||||
detail: {
|
||||
targetTable: config.events.targetTable,
|
||||
},
|
||||
}));
|
||||
}
|
||||
};
|
||||
}, [config.events?.targetTable, config.events?.targetFilterColumn]);
|
||||
|
||||
// 버튼 데이터 로드
|
||||
const loadButtons = useCallback(async () => {
|
||||
|
||||
Reference in New Issue
Block a user