diff options
Diffstat (limited to 'components/form-data/spreadJS-dialog.tsx')
| -rw-r--r-- | components/form-data/spreadJS-dialog.tsx | 71 |
1 files changed, 54 insertions, 17 deletions
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 ( <Dialog open={isOpen} onOpenChange={onClose}> <DialogContent @@ -1463,7 +1491,8 @@ export function TemplateViewDialog({ <DialogTitle>SEDP Template - {formCode}</DialogTitle> <DialogDescription> <div className="space-y-3"> - {availableTemplates.length > 1 && ( + {availableTemplates.length > 0 ? ( + // ํ
ํ๋ฆฟ์ด 2๊ฐ ์ด์์ผ ๋: Select ๋ฐ์ค ํ์ <div className="flex items-center gap-4"> <span className="text-sm font-medium">Template:</span> <Select value={selectedTemplateId} onValueChange={handleTemplateChange}> @@ -1479,7 +1508,15 @@ export function TemplateViewDialog({ </SelectContent> </Select> </div> - )} + ) : availableTemplates.length === 1 ? ( + // ํ
ํ๋ฆฟ์ด ์ ํํ 1๊ฐ์ผ ๋: ํ
ํ๋ฆฟ ์ด๋ฆ์ ํ
์คํธ๋ก ํ์ + <div className="flex items-center gap-4"> + <span className="text-sm font-medium">Template:</span> + <span className="text-sm text-blue-600 font-medium"> + {availableTemplates[0].NAME} ({availableTemplates[0].TMPL_TYPE}) + </span> + </div> + ) : null} {selectedTemplate && ( <div className="flex items-center gap-4 text-sm"> |
