import { dateFields, numberFields, yearMonthFields, dateTimeFields } from "../../../(map-layout)/map/components/common/table"; import { isValidDateString, formatDateString } from "./date"; // 🎯 데이터 객체 전체λ₯Ό ν¬λ§·νŒ…ν•˜λŠ” ν•¨μˆ˜ export const formatDisplayData = (data: { [key: string]: any }): { [key: string]: string } => { if (!data) return {}; const formattedData: { [key: string]: string } = {}; Object.keys(data).forEach(fieldId => { const value = data[fieldId]; if (value === null || value === undefined || value === "") { formattedData[fieldId] = "-"; return; } // 🎯 μ—°μ›” ν¬λ§·νŒ… (yyyymm -> yyyyλ…„ mμ›”) if (yearMonthFields.includes(fieldId)) { const dateStr = String(value).trim(); if (/^\d{6}$/.test(dateStr)) { const year = dateStr.substring(0, 4); const month = parseInt(dateStr.substring(4, 6)); formattedData[fieldId] = `${year}λ…„ ${month}μ›”`; } else { formattedData[fieldId] = String(value); } return; } // 🎯 λ‚ μ§œμ‹œκ°„ ν¬λ§·νŒ… (yyyy-mm-dd hh:mm:ss -> yyyyλ…„ mμ›” d일 hh:mm) if (dateTimeFields.includes(fieldId)) { const dateTimeStr = String(value).trim(); // yyyy-mm-dd hh:mm:ss ν˜•μ‹ 확인 const dateTimeRegex = /^(\d{4})-(\d{2})-(\d{2})\s+(\d{2}):(\d{2}):(\d{2})$/; const match = dateTimeStr.match(dateTimeRegex); if (match && match.length >= 6) { const year = match[1]; const month = match[2]; const day = match[3]; const hour = match[4]; const minute = match[5]; const second = match[6]; // 🎯 undefined 체크 ν›„ parseInt 적용 if (year && month && day && hour && minute) { const formattedMonth = parseInt(month); const formattedDay = parseInt(day); formattedData[fieldId] = `${year}λ…„ ${formattedMonth}μ›” ${formattedDay}일 ${hour}μ‹œ ${minute}λΆ„ ${second}초`; } else { formattedData[fieldId] = String(value); } } else { formattedData[fieldId] = String(value); } return; } // 🎯 κΈ°μ‘΄ λ‚ μ§œ ν¬λ§·νŒ… (yyyymmdd -> yyyyλ…„ mμ›” d일) if (dateFields.includes(fieldId)) { const dateStr = String(value).trim(); // 숫자 νƒ€μž…μ΄κ±°λ‚˜ 숫자둜만 κ΅¬μ„±λœ λ¬Έμžμ—΄μΈμ§€ 확인 if (/^\d+$/.test(dateStr)) { formattedData[fieldId] = formatDateString(dateStr); } else { formattedData[fieldId] = String(value); } return; } // 🎯 숫자 ν•„λ“œλŠ” 천 λ‹¨μœ„ κ΅¬λΆ„μž μΆ”κ°€ if (numberFields.includes(fieldId)) { const numValue = Number(value); if (!isNaN(numValue) && isFinite(numValue)) { formattedData[fieldId] = numValue.toLocaleString('ko-KR'); } else { formattedData[fieldId] = String(value); } return; } // λ‚˜λ¨Έμ§€λŠ” λ¬Έμžμ—΄λ‘œ 처리 formattedData[fieldId] = String(value); }); return formattedData; }; // 🎯 단일 κ°’λ§Œ ν¬λ§·νŒ…ν•˜λŠ” ν•¨μˆ˜ (κΈ°μ‘΄ ν˜Έν™˜μ„±μ„ μœ„ν•΄ μœ μ§€) export const formatDisplayValue = (value: any, fieldId: string): string => { const tempData = { [fieldId]: value }; const formatted = formatDisplayData(tempData); return formatted[fieldId] || String(value); };