Merge branch 'main' into feature/screen-management
This commit is contained in:
@@ -166,18 +166,28 @@ export default function CopyScreenModal({
|
||||
|
||||
// linkedScreens 로딩이 완료되면 화면 코드 생성
|
||||
useEffect(() => {
|
||||
// 모달 화면들의 코드가 모두 설정되었는지 확인
|
||||
const allModalCodesSet = linkedScreens.length === 0 ||
|
||||
linkedScreens.every(screen => screen.newScreenCode);
|
||||
|
||||
console.log("🔍 코드 생성 조건 체크:", {
|
||||
targetCompanyCode,
|
||||
loadingLinkedScreens,
|
||||
screenCode,
|
||||
linkedScreensCount: linkedScreens.length,
|
||||
allModalCodesSet,
|
||||
});
|
||||
|
||||
if (targetCompanyCode && !loadingLinkedScreens && !screenCode) {
|
||||
// 조건: 회사 코드가 있고, 로딩이 완료되고, (메인 코드가 없거나 모달 코드가 없을 때)
|
||||
const needsCodeGeneration = targetCompanyCode &&
|
||||
!loadingLinkedScreens &&
|
||||
(!screenCode || (linkedScreens.length > 0 && !allModalCodesSet));
|
||||
|
||||
if (needsCodeGeneration) {
|
||||
console.log("✅ 화면 코드 생성 시작 (linkedScreens 개수:", linkedScreens.length, ")");
|
||||
generateScreenCodes();
|
||||
}
|
||||
}, [targetCompanyCode, loadingLinkedScreens, screenCode]);
|
||||
}, [targetCompanyCode, loadingLinkedScreens, screenCode, linkedScreens]);
|
||||
|
||||
// 회사 목록 조회
|
||||
const loadCompanies = async () => {
|
||||
|
||||
@@ -678,12 +678,13 @@ export const EditModal: React.FC<EditModalProps> = ({ className }) => {
|
||||
}
|
||||
|
||||
// 화면관리에서 설정한 크기 = 컨텐츠 영역 크기
|
||||
// 실제 모달 크기 = 컨텐츠 + 헤더 + gap + padding
|
||||
// 실제 모달 크기 = 컨텐츠 + 헤더 + gap + padding + 라벨 공간
|
||||
const headerHeight = 52; // DialogHeader (타이틀 + border-b + py-3)
|
||||
const dialogGap = 16; // DialogContent gap-4
|
||||
const extraPadding = 24; // 추가 여백 (안전 마진)
|
||||
const labelSpace = 30; // 입력 필드 위 라벨 공간 (-top-6 = 24px + 여유)
|
||||
|
||||
const totalHeight = screenDimensions.height + headerHeight + dialogGap + extraPadding;
|
||||
const totalHeight = screenDimensions.height + headerHeight + dialogGap + extraPadding + labelSpace;
|
||||
|
||||
return {
|
||||
className: "overflow-hidden p-0",
|
||||
@@ -729,7 +730,7 @@ export const EditModal: React.FC<EditModalProps> = ({ className }) => {
|
||||
className="relative bg-white"
|
||||
style={{
|
||||
width: screenDimensions?.width || 800,
|
||||
height: screenDimensions?.height || 600,
|
||||
height: (screenDimensions?.height || 600) + 30, // 라벨 공간 추가
|
||||
transformOrigin: "center center",
|
||||
maxWidth: "100%",
|
||||
maxHeight: "100%",
|
||||
@@ -739,13 +740,14 @@ export const EditModal: React.FC<EditModalProps> = ({ className }) => {
|
||||
// 컴포넌트 위치를 offset만큼 조정
|
||||
const offsetX = screenDimensions?.offsetX || 0;
|
||||
const offsetY = screenDimensions?.offsetY || 0;
|
||||
const labelSpace = 30; // 라벨 공간 (입력 필드 위 -top-6 라벨용)
|
||||
|
||||
const adjustedComponent = {
|
||||
...component,
|
||||
position: {
|
||||
...component.position,
|
||||
x: parseFloat(component.position?.x?.toString() || "0") - offsetX,
|
||||
y: parseFloat(component.position?.y?.toString() || "0") - offsetY,
|
||||
y: parseFloat(component.position?.y?.toString() || "0") - offsetY + labelSpace, // 라벨 공간 추가
|
||||
},
|
||||
};
|
||||
|
||||
@@ -759,12 +761,27 @@ export const EditModal: React.FC<EditModalProps> = ({ className }) => {
|
||||
});
|
||||
}
|
||||
|
||||
// 🔑 첨부파일 컴포넌트가 행(레코드) 단위로 파일을 저장할 수 있도록 tableName 추가
|
||||
const enrichedFormData = {
|
||||
...(groupData.length > 0 ? groupData[0] : formData),
|
||||
tableName: screenData.screenInfo?.tableName, // 테이블명 추가
|
||||
screenId: modalState.screenId, // 화면 ID 추가
|
||||
};
|
||||
|
||||
// 🔍 디버깅: enrichedFormData 확인
|
||||
console.log("🔑 [EditModal] enrichedFormData 생성:", {
|
||||
"screenData.screenInfo": screenData.screenInfo,
|
||||
"screenData.screenInfo?.tableName": screenData.screenInfo?.tableName,
|
||||
"enrichedFormData.tableName": enrichedFormData.tableName,
|
||||
"enrichedFormData.id": enrichedFormData.id,
|
||||
});
|
||||
|
||||
return (
|
||||
<InteractiveScreenViewerDynamic
|
||||
key={component.id}
|
||||
component={adjustedComponent}
|
||||
allComponents={screenData.components}
|
||||
formData={groupData.length > 0 ? groupData[0] : formData}
|
||||
formData={enrichedFormData}
|
||||
onFormDataChange={(fieldName, value) => {
|
||||
// 🆕 그룹 데이터가 있으면 처리
|
||||
if (groupData.length > 0) {
|
||||
|
||||
Reference in New Issue
Block a user