diff --git a/frontend/components/screen/EditModal.tsx b/frontend/components/screen/EditModal.tsx index 7c722ad6..48bf898f 100644 --- a/frontend/components/screen/EditModal.tsx +++ b/frontend/components/screen/EditModal.tsx @@ -33,6 +33,7 @@ interface EditModalState { dataflowConfig?: any; dataflowTiming?: string; }; // ๐Ÿ†• ๋ชจ๋‹ฌ ๋‚ด๋ถ€ ์ €์žฅ ๋ฒ„ํŠผ์˜ ์ œ์–ด๋กœ์ง ์„ค์ • + menuObjid?: number; // ๐Ÿ†• ๋ฉ”๋‰ด OBJID (์นดํ…Œ๊ณ ๋ฆฌ ์Šค์ฝ”ํ”„์šฉ) } interface EditModalProps { @@ -91,6 +92,7 @@ export const EditModal: React.FC = ({ className }) => { buttonConfig: undefined, buttonContext: undefined, saveButtonConfig: undefined, + menuObjid: undefined, }); const [screenData, setScreenData] = useState<{ @@ -234,7 +236,7 @@ export const EditModal: React.FC = ({ className }) => { // ์ „์—ญ ๋ชจ๋‹ฌ ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ useEffect(() => { const handleOpenEditModal = async (event: CustomEvent) => { - const { screenId, title, description, modalSize, editData, onSave, groupByColumns, tableName, isCreateMode, buttonConfig, buttonContext } = event.detail; + const { screenId, title, description, modalSize, editData, onSave, groupByColumns, tableName, isCreateMode, buttonConfig, buttonContext, menuObjid } = event.detail; // ๐Ÿ†• ๋ชจ๋‹ฌ ๋‚ด๋ถ€ ์ €์žฅ ๋ฒ„ํŠผ์˜ ์ œ์–ด๋กœ์ง ์„ค์ • ์กฐํšŒ let saveButtonConfig: EditModalState["saveButtonConfig"] = undefined; @@ -258,6 +260,7 @@ export const EditModal: React.FC = ({ className }) => { buttonConfig, // ๐Ÿ†• ๋ฒ„ํŠผ ์„ค์ • buttonContext, // ๐Ÿ†• ๋ฒ„ํŠผ ์ปจํ…์ŠคํŠธ saveButtonConfig, // ๐Ÿ†• ๋ชจ๋‹ฌ ๋‚ด๋ถ€ ์ €์žฅ ๋ฒ„ํŠผ์˜ ์ œ์–ด๋กœ์ง ์„ค์ • + menuObjid, // ๐Ÿ†• ๋ฉ”๋‰ด OBJID (์นดํ…Œ๊ณ ๋ฆฌ ์Šค์ฝ”ํ”„์šฉ) }); // ํŽธ์ง‘ ๋ฐ์ดํ„ฐ๋กœ ํผ ๋ฐ์ดํ„ฐ ์ดˆ๊ธฐํ™” @@ -1079,6 +1082,8 @@ export const EditModal: React.FC = ({ className }) => { id: modalState.screenId!, tableName: screenData.screenInfo?.tableName, }} + // ๐Ÿ†• ๋ฉ”๋‰ด OBJID ์ „๋‹ฌ (์นดํ…Œ๊ณ ๋ฆฌ ์Šค์ฝ”ํ”„์šฉ) + menuObjid={modalState.menuObjid} // ๐Ÿ†• ๊ทธ๋ฃน ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๊ฑฐ๋‚˜ UniversalFormModal์ด ์—†์œผ๋ฉด EditModal.handleSave ์‚ฌ์šฉ // groupData๊ฐ€ ์žˆ์œผ๋ฉด ์ผ๊ด„ ์ €์žฅ์„ ์œ„ํ•ด ๋ฐ˜๋“œ์‹œ EditModal.handleSave ์‚ฌ์šฉ onSave={shouldUseEditModalSave ? handleSave : undefined} diff --git a/frontend/components/screen/InteractiveDataTable.tsx b/frontend/components/screen/InteractiveDataTable.tsx index 8c4c95ce..e872e587 100644 --- a/frontend/components/screen/InteractiveDataTable.tsx +++ b/frontend/components/screen/InteractiveDataTable.tsx @@ -1213,13 +1213,14 @@ export const InteractiveDataTable: React.FC = ({ description: editModalDescription, modalSize: "lg", editData: initialData, + menuObjid, // ๐Ÿ†• ๋ฉ”๋‰ด OBJID ์ „๋‹ฌ (์นดํ…Œ๊ณ ๋ฆฌ ์Šค์ฝ”ํ”„์šฉ) onSave: () => { loadData(); // ํ…Œ์ด๋ธ” ๋ฐ์ดํ„ฐ ์ƒˆ๋กœ๊ณ ์นจ }, }, }); window.dispatchEvent(event); - }, [selectedRows, data, getDisplayColumns, component.addModalConfig, component.editModalConfig, loadData]); + }, [selectedRows, data, getDisplayColumns, component.addModalConfig, component.editModalConfig, loadData, menuObjid]); // ์ˆ˜์ • ํผ ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ ํ•ธ๋“ค๋Ÿฌ const handleEditFormChange = useCallback((columnName: string, value: any) => { @@ -2720,6 +2721,7 @@ export const InteractiveDataTable: React.FC = ({ screenId={saveModalScreenId} modalSize={component.addModalConfig?.modalSize || "lg"} initialData={saveModalData} + menuObjid={menuObjid} // ๐Ÿ†• ๋ฉ”๋‰ด OBJID ์ „๋‹ฌ (์นดํ…Œ๊ณ ๋ฆฌ ์Šค์ฝ”ํ”„์šฉ) onSaveSuccess={() => { // ์ €์žฅ ์„ฑ๊ณต ์‹œ ํ…Œ์ด๋ธ” ์ƒˆ๋กœ๊ณ ์นจ loadData(currentPage, searchValues); // ํ˜„์žฌ ํŽ˜์ด์ง€๋กœ ๋‹ค์‹œ ๋กœ๋“œ diff --git a/frontend/components/screen/SaveModal.tsx b/frontend/components/screen/SaveModal.tsx index 88ca2534..61b2e2c5 100644 --- a/frontend/components/screen/SaveModal.tsx +++ b/frontend/components/screen/SaveModal.tsx @@ -19,6 +19,7 @@ interface SaveModalProps { modalSize?: "sm" | "md" | "lg" | "xl" | "full"; initialData?: any; // ์ˆ˜์ • ๋ชจ๋“œ์ผ ๋•Œ ๊ธฐ์กด ๋ฐ์ดํ„ฐ onSaveSuccess?: () => void; // ์ €์žฅ ์„ฑ๊ณต ์‹œ ์ฝœ๋ฐฑ (ํ…Œ์ด๋ธ” ์ƒˆ๋กœ๊ณ ์นจ์šฉ) + menuObjid?: number; // ๐Ÿ†• ๋ฉ”๋‰ด OBJID (์นดํ…Œ๊ณ ๋ฆฌ ์Šค์ฝ”ํ”„์šฉ) } /** @@ -33,6 +34,7 @@ export const SaveModal: React.FC = ({ modalSize = "lg", initialData, onSaveSuccess, + menuObjid, }) => { const { user, userName } = useAuth(); // ํ˜„์žฌ ์‚ฌ์šฉ์ž ์ •๋ณด ๊ฐ€์ ธ์˜ค๊ธฐ const [formData, setFormData] = useState>(initialData || {}); @@ -373,6 +375,7 @@ export const SaveModal: React.FC = ({ })); }} hideLabel={false} + menuObjid={menuObjid} // ๐Ÿ†• ๋ฉ”๋‰ด OBJID ์ „๋‹ฌ (์นดํ…Œ๊ณ ๋ฆฌ ์Šค์ฝ”ํ”„์šฉ) /> ) : ( = ({ }} screenId={screenId} tableName={screenData.tableName} + menuObjid={menuObjid} // ๐Ÿ†• ๋ฉ”๋‰ด OBJID ์ „๋‹ฌ (์นดํ…Œ๊ณ ๋ฆฌ ์Šค์ฝ”ํ”„์šฉ) userId={user?.userId} // โœ… ์‚ฌ์šฉ์ž ID ์ „๋‹ฌ userName={user?.userName} // โœ… ์‚ฌ์šฉ์ž ์ด๋ฆ„ ์ „๋‹ฌ companyCode={user?.companyCode} // โœ… ํšŒ์‚ฌ ์ฝ”๋“œ ์ „๋‹ฌ diff --git a/frontend/lib/registry/components/select-basic/SelectBasicComponent.tsx b/frontend/lib/registry/components/select-basic/SelectBasicComponent.tsx index c896e1f2..697e0f69 100644 --- a/frontend/lib/registry/components/select-basic/SelectBasicComponent.tsx +++ b/frontend/lib/registry/components/select-basic/SelectBasicComponent.tsx @@ -299,12 +299,14 @@ const SelectBasicComponent: React.FC = ({ tableName: component.tableName, columnName: component.columnName, webType, + menuObjid, // ๐Ÿ†• menuObjid ๋กœ๊น… ์ถ”๊ฐ€ }); setIsLoadingCategories(true); import("@/lib/api/tableCategoryValue").then(({ getCategoryValues }) => { - getCategoryValues(component.tableName!, component.columnName!) + // ๐Ÿ†• menuObjid๋ฅผ 4๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ „๋‹ฌ (์นดํ…Œ๊ณ ๋ฆฌ ์Šค์ฝ”ํ”„ ์ ์šฉ) + getCategoryValues(component.tableName!, component.columnName!, false, menuObjid) .then((response) => { console.log("๐Ÿ” [SelectBasic] ์นดํ…Œ๊ณ ๋ฆฌ API ์‘๋‹ต:", response); @@ -324,6 +326,7 @@ const SelectBasicComponent: React.FC = ({ activeValuesCount: activeValues.length, options, sampleOption: options[0], + menuObjid, // ๐Ÿ†• menuObjid ๋กœ๊น… ์ถ”๊ฐ€ }); setCategoryOptions(options); @@ -339,7 +342,7 @@ const SelectBasicComponent: React.FC = ({ }); }); } - }, [webType, component.tableName, component.columnName]); + }, [webType, component.tableName, component.columnName, menuObjid]); // ๐Ÿ†• menuObjid ์˜์กด์„ฑ ์ถ”๊ฐ€ // ๋””๋ฒ„๊น…: menuObjid๊ฐ€ ์ œ๋Œ€๋กœ ์ „๋‹ฌ๋˜๋Š”์ง€ ํ™•์ธ useEffect(() => {