feat, refactor:

- 중점우수토실 위경도 소수점 아래 네자리까지만 표시
- 중점우수토실 위경도 변수 타입 선언
This commit is contained in:
swcho
2025-07-31 17:08:28 +09:00
parent 62a7dc7451
commit 416677dcf4
4 changed files with 16 additions and 13 deletions
@@ -12,6 +12,8 @@ type LayerComponentProps = {
rainMeasureData?: any;
onSaveClick?: () => void;
onFormDataChange?: (data: any) => void; // 추가
chmbrXcnts: string;
chmbrYdnts: string;
};
type LayerContentMap = {
[key: string]: {
@@ -686,5 +686,6 @@ export const numberFields = [
'swrPplEqpAr', 'swrTrtPopl', 'weirHg', 'weirLt',
'precdngDry', 'rainFall', 'cntncTime', 'rainIn',
'mesureIntrvl', 'qltwtrCo', 'rnysnFvlc', 'clarFvlc',
'bizAmt', 'count'
'bizAmt', 'count',
'chmbr_xcnts', 'chmbr_ydnts'
];
@@ -21,7 +21,6 @@ const FeatureClickEventPopup = ({ onClose, featureData }: { onClose: () => void,
const [layerNm, setLayerNm] = useState<string>(""); // 레이어 이름 상태
const [layerSpecificNm, setLayerSpecificNm] = useState<string>(""); // 레이어 이름 상태
const [tableData, setTableData] = useState<any>(null); // 피처 데이터
const [rainMeasureData, setRainMeasureData] = useState<any[]>([]); // 강우/측정 측정 정보
const [headlist, setHeadlist] = useState<{ id: string; title: string; }[]>([]); // 컬럼리스트 변경상태
const [headlist2, setHeadlist2] = useState<{ id: string; title: string; }[]>([]); // 컬럼리스트 변경상태
const [buttonChk, setButtonChk] = useState(true)
@@ -35,8 +34,8 @@ const FeatureClickEventPopup = ({ onClose, featureData }: { onClose: () => void,
const { setIsOpen: setIsModalRdii } = useRdiiChartModalStore();
const [isClicked, setIsClicked] = useState(true); // 클릭 여부 상태
const [isLoading, setIsLoading] = useState(false); // 로딩 상태
const [chmbrXcnts, setChmbrXcnts] = useState(); // 로딩 상태
const [chmbrYdnts, setChmbrYdnts] = useState(); // 로딩 상태
const [chmbrXcnts, setChmbrXcnts] = useState<string>(''); // 로딩 상태
const [chmbrYdnts, setChmbrYdnts] = useState<string>(''); // 로딩 상태
// 🎯 관로관리번호 추출
const pplMngNo = featureData?.values_?.fclt_mng_no || "";
@@ -406,7 +405,7 @@ const FeatureClickEventPopup = ({ onClose, featureData }: { onClose: () => void,
</h3>
</div>
<div className="flex items-center space-x-3">
{/* 🎯 하수관로일 때만 Infil/RDII 버튼 표시 */}
{/* 하수관로일 때만 Infil/RDII 버튼 표시 */}
{layerNm === '하수관로' && (
<>
<Button onClick={() => setIsModalInfil(true)}
@@ -442,9 +441,7 @@ const FeatureClickEventPopup = ({ onClose, featureData }: { onClose: () => void,
</div>
<Button
onClick={onClose}
// className="text-white hover:text-gray-300 focus:outline-none"
className="flex items-center space-x-4 text-white hover:text-gray-300 focus:outline-none"
// className="absolute top-8 right-4 text-white hover:text-gray-300 focus:outline-none"
size="xs"
>
✕
@@ -477,7 +474,6 @@ const FeatureClickEventPopup = ({ onClose, featureData }: { onClose: () => void,
featureData={fetchData}
isMainSsc={isMainSsc}
isDrtwSewagePump={isDrtwSewagePump}
// rainMeasureData={rainMeasureData}
onSaveClick={handleSaveClick}
chmbrXcnts={chmbrXcnts}
chmbrYdnts={chmbrYdnts}
@@ -485,7 +481,6 @@ const FeatureClickEventPopup = ({ onClose, featureData }: { onClose: () => void,
}
</div>
{/* 🎯 InfilChart 및 RdiiChart 컴포넌트 추가 */}
<InfilChart pplMngNo={pplMngNo} />
<RdiiChart pplMngNo={pplMngNo} />
</div>
@@ -34,7 +34,7 @@ export const formatDisplayData = (data: { [key: string]: any }): { [key: string]
// 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];
@@ -42,7 +42,7 @@ export const formatDisplayData = (data: { [key: string]: any }): { [key: string]
const hour = match[4];
const minute = match[5];
const second = match[6];
// 🎯 undefined 체크 후 parseInt 적용
if (year && month && day && hour && minute) {
// const formattedMonth = parseInt(month);
@@ -61,7 +61,7 @@ export const formatDisplayData = (data: { [key: string]: any }): { [key: string]
// 🎯 기존 날짜 포맷팅 (yyyymmdd -> yyyy년 m월 d일)
if (dateFields.includes(fieldId)) {
const dateStr = String(value).trim();
// 숫자 타입이거나 숫자로만 구성된 문자열인지 확인
if (/^\d+$/.test(dateStr)) {
formattedData[fieldId] = formatDateString(dateStr);
@@ -75,7 +75,12 @@ export const formatDisplayData = (data: { [key: string]: any }): { [key: string]
if (numberFields.includes(fieldId)) {
const numValue = Number(value);
if (!isNaN(numValue) && isFinite(numValue)) {
formattedData[fieldId] = numValue.toLocaleString('ko-KR');
// 소수점이 있는 경우 4자리까지 표시
if (!Number.isInteger(numValue)) {
formattedData[fieldId] = numValue.toLocaleString('ko-KR', { maximumFractionDigits: 4 });
} else {
formattedData[fieldId] = numValue.toLocaleString('ko-KR');
}
} else {
formattedData[fieldId] = String(value);
}