From defda07c0bb4b0bd444ca8dc4fd3f89322bda0ce Mon Sep 17 00:00:00 2001 From: dujinkim Date: Fri, 3 Oct 2025 04:48:47 +0000 Subject: (๋Œ€ํ‘œ๋‹˜) edp, tbe, dolce ๋“ฑ MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/form-data/spreadJS-dialog.tsx | 71 ++++++++++++++++++++++++-------- 1 file changed, 54 insertions(+), 17 deletions(-) (limited to 'components/form-data/spreadJS-dialog.tsx') diff --git a/components/form-data/spreadJS-dialog.tsx b/components/form-data/spreadJS-dialog.tsx index af1a3dca..375c097c 100644 --- a/components/form-data/spreadJS-dialog.tsx +++ b/components/form-data/spreadJS-dialog.tsx @@ -176,13 +176,13 @@ export function TemplateViewDialog({ }, []); const determineTemplateType = React.useCallback((template: TemplateItem): 'SPREAD_LIST' | 'SPREAD_ITEM' | 'GRD_LIST' | null => { - if (template.TMPL_TYPE === "SPREAD_LIST" && (template.SPR_LST_SETUP?.CONTENT || template.SPR_ITM_LST_SETUP?.CONTENT)) { + if (template?.TMPL_TYPE === "SPREAD_LIST" && (template?.SPR_LST_SETUP?.CONTENT || template?.SPR_ITM_LST_SETUP?.CONTENT)) { return 'SPREAD_LIST'; } - if (template.TMPL_TYPE === "SPREAD_ITEM" && (template.SPR_LST_SETUP?.CONTENT || template.SPR_ITM_LST_SETUP?.CONTENT)) { + if (template?.TMPL_TYPE === "SPREAD_ITEM" && (template?.SPR_LST_SETUP?.CONTENT || template?.SPR_ITM_LST_SETUP?.CONTENT)) { return 'SPREAD_ITEM'; } - if (template.GRD_LST_SETUP && columnsJSON.length > 0) { + if (template?.GRD_LST_SETUP && columnsJSON.length > 0) { return 'GRD_LIST'; } return null; @@ -221,10 +221,10 @@ export function TemplateViewDialog({ DATA_SHEETS: [] } }; - + setAvailableTemplates([defaultGrdTemplate]); - setSelectedTemplateId('DEFAULT_GRD_LIST'); - setTemplateType('GRD_LIST'); + // setSelectedTemplateId('DEFAULT_GRD_LIST'); + // setTemplateType('GRD_LIST'); console.log('๐Ÿ“‹ Created default GRD_LIST template'); } return; @@ -238,7 +238,7 @@ export function TemplateViewDialog({ } const validTemplates = templates.filter(isValidTemplate); - + // ์œ ํšจํ•œ ํ…œํ”Œ๋ฆฟ์ด ์—†์ง€๋งŒ columnsJSON์ด ์žˆ์œผ๋ฉด ๊ธฐ๋ณธ GRD_LIST ์ถ”๊ฐ€ if (validTemplates.length === 0 && columnsJSON && columnsJSON.length > 0) { const defaultGrdTemplate: TemplateItem = { @@ -261,11 +261,11 @@ export function TemplateViewDialog({ DATA_SHEETS: [] } }; - + validTemplates.push(defaultGrdTemplate); console.log('๐Ÿ“‹ Added default GRD_LIST template to empty template list'); } - + setAvailableTemplates(validTemplates); if (validTemplates.length > 0 && !selectedTemplateId) { @@ -1251,13 +1251,13 @@ export function TemplateViewDialog({ } }); - // ๐Ÿ”ง ๋งˆ์ง€๋ง‰์— activeSheetName์œผ๋กœ ๋‹ค์‹œ ์ „ํ™˜ - if (activeSheetName && spread.getSheetFromName(activeSheetName)) { - spread.setActiveSheet(activeSheetName); - activeSheet = spread.getActiveSheet(); - } + // ๐Ÿ”ง ๋งˆ์ง€๋ง‰์— activeSheetName์œผ๋กœ ๋‹ค์‹œ ์ „ํ™˜ + if (activeSheetName && spread.getSheetFromName(activeSheetName)) { + spread.setActiveSheet(activeSheetName); + activeSheet = spread.getActiveSheet(); + } + - }); } } @@ -1292,6 +1292,32 @@ export function TemplateViewDialog({ } }, [selectedTemplate, templateType, selectedRow, tableData, updateProgress, getSafeActiveSheet, createGrdListTableOptimized, setBatchValues, setBatchStyles, setupSheetProtectionAndEvents, setCellMappings, createCellStyle, isFieldEditable, columnsJSON, setupOptimizedListValidation, parseCellAddress, ensureRowCapacity, getCellAddress]); + React.useEffect(() => { + if (!selectedTemplateId) { + const only = availableTemplates[0]; + const type = determineTemplateType(only); + + // ์„ ํƒ๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค๋ฉด ์ž๋™ ์„ ํƒ + if (selectedTemplateId !== only.TMPL_ID) { + setSelectedTemplateId(only.TMPL_ID); + setTemplateType(type); + } + + // ์ด๋ฏธ ์Šคํ”„๋ ˆ๋“œ๊ฐ€ ๋งˆ์šดํŠธ๋˜์–ด ์žˆ๋‹ค๋ฉด ์ฆ‰์‹œ ์ดˆ๊ธฐํ™”(์„ ํƒ ๋ณ€๊ฒฝ๋งŒ์œผ๋กœ๋„ ๋ฆฌ๋ Œ๋”๋˜์ง€๋งŒ ์•ˆ์ „ํ•˜๊ฒŒ ๋ณด๊ฐ•) + if (currentSpread) { + initSpread(currentSpread, only); + } + } + }, [ + availableTemplates, + selectedTemplateId, + currentSpread, + determineTemplateType, + initSpread, + setTemplateType, + setSelectedTemplateId + ]); + const handleSaveChanges = React.useCallback(async () => { if (!currentSpread || !hasChanges) { toast.info("No changes to save"); @@ -1454,6 +1480,8 @@ export function TemplateViewDialog({ const isDataValid = templateType === 'SPREAD_ITEM' ? !!selectedRow : tableData.length > 0; const dataCount = templateType === 'SPREAD_ITEM' ? 1 : tableData.length; + + return ( SEDP Template - {formCode}
- {availableTemplates.length > 1 && ( + {availableTemplates.length > 0 ? ( + // ํ…œํ”Œ๋ฆฟ์ด 2๊ฐœ ์ด์ƒ์ผ ๋•Œ: Select ๋ฐ•์Šค ํ‘œ์‹œ
Template:
- )} + ) : availableTemplates.length === 1 ? ( + // ํ…œํ”Œ๋ฆฟ์ด ์ •ํ™•ํžˆ 1๊ฐœ์ผ ๋•Œ: ํ…œํ”Œ๋ฆฟ ์ด๋ฆ„์„ ํ…์ŠคํŠธ๋กœ ํ‘œ์‹œ +
+ Template: + + {availableTemplates[0].NAME} ({availableTemplates[0].TMPL_TYPE}) + +
+ ) : null} {selectedTemplate && (
-- cgit v1.2.3