diff --git a/apps/sn/app/(map-layout)/map/featureClickEventPopup.tsx b/apps/sn/app/(map-layout)/map/components/popupComponent/featureClickEventPopup.tsx similarity index 84% rename from apps/sn/app/(map-layout)/map/featureClickEventPopup.tsx rename to apps/sn/app/(map-layout)/map/components/popupComponent/featureClickEventPopup.tsx index e9a4f9e9a..679122d6b 100644 --- a/apps/sn/app/(map-layout)/map/featureClickEventPopup.tsx +++ b/apps/sn/app/(map-layout)/map/components/popupComponent/featureClickEventPopup.tsx @@ -5,13 +5,13 @@ import { VerticalTable } from "@/components/ui/verticalTable"; import { useGisContext } from "@common/business_components/ui/map/Gis"; import { Button } from "@common/components/ui"; import { useEffect, useRef, useState, useCallback, useMemo } from "react"; -import { getLayerContentComponent } from "./components/common"; -import { SwtrmtFcltCol, SwtrmtFcltCol2, SwtrmtPrcsZoneCol, SwtrmtPrcsZoneCol2, untrtSwgRainCol1, untrtSwgRainCol2, MsSwagePplCol, MsSwagePplCol2, ExclnSewagePumpCol, ExclnSewagePumpCol2, DrtwSewagePumpCol, DrtwSewagePumpCol2, MsSwageMhlCol, MsSwageMhlCol2, stofcbrCol, stofcbrCol2, MS_SWAGE_MHL_CODES, DRTW_SEWAGE_PUMP_USE_CODES } from "./components/common/table"; -import InfilChart from './components/popupComponent/chart/infilChart'; -import RdiiChart from './components/popupComponent/chart/rdiiChart'; -import { useInfilChartModalStore, useRdiiChartModalStore } from "./components/popupComponent/chartModalStore"; +import { getLayerContentComponent } from "../common"; +import { SwtrmtFcltCol, SwtrmtFcltCol2, SwtrmtPrcsZoneCol, SwtrmtPrcsZoneCol2, untrtSwgRainCol1, untrtSwgRainCol2, MsSwagePplCol, MsSwagePplCol2, ExclnSewagePumpCol, ExclnSewagePumpCol2, DrtwSewagePumpCol, DrtwSewagePumpCol2, MsSwageMhlCol, MsSwageMhlCol2, stofcbrCol, stofcbrCol2, MS_SWAGE_MHL_CODES, DRTW_SEWAGE_PUMP_USE_CODES } from "../common/table"; +import InfilChart from './chart/infilChart'; +import RdiiChart from './chart/rdiiChart'; +import { useInfilChartModalStore, useRdiiChartModalStore } from "./chartModalStore"; import { formatDisplayData } from '@/components/lib/utils/formatDisplayValue'; -import { codeMapper } from "./components/common/codeMapper"; +import { codeMapper } from "../common/codeMapper"; import { searchUpperPpls } from '@common/business_components/ui/map/Gis'; import LoadingOverlay from '@/components/ui/LoadingBar'; @@ -33,9 +33,10 @@ const FeatureClickEventPopup = ({ onClose, featureData }: { onClose: () => void, // ๐ŸŽฏ InfilChart ๋ฐ RdiiChart ๊ด€๋ จ ์ƒํƒœ ์ถ”๊ฐ€ const { setIsOpen: setIsModalInfil } = useInfilChartModalStore(); const { setIsOpen: setIsModalRdii } = useRdiiChartModalStore(); - const [curPage, setCurPage] = useState(1); // ํ˜„์žฌ ํŽ˜์ด์ง€ ์ƒํƒœ const [isClicked, setIsClicked] = useState(true); // ํด๋ฆญ ์—ฌ๋ถ€ ์ƒํƒœ const [isLoading, setIsLoading] = useState(false); // ๋กœ๋”ฉ ์ƒํƒœ + const [chmbrXcnts, setChmbrXcnts] = useState(); // ๋กœ๋”ฉ ์ƒํƒœ + const [chmbrYdnts, setChmbrYdnts] = useState(); // ๋กœ๋”ฉ ์ƒํƒœ // ๐ŸŽฏ ๊ด€๋กœ๊ด€๋ฆฌ๋ฒˆํ˜ธ ์ถ”์ถœ const pplMngNo = featureData?.values_?.fclt_mng_no || ""; @@ -263,18 +264,9 @@ const FeatureClickEventPopup = ({ onClose, featureData }: { onClose: () => void, data: { ...processedFormattedData } })); - // ๊ฐ•์šฐ/์ธก์ • ์ •๋ณด ๋ฐ์ดํ„ฐ ํ˜ธ์ถœ - if (tableData?.chmbr_xcnts && tableData?.chmbr_ydnts) { - fetchRainMeasureData(tableData.chmbr_xcnts, tableData.chmbr_ydnts) - .then(response => { - console.log('additionalResponse', response); - setRainMeasureData(response || []); - }) - .catch(error => { - console.error('์ถ”๊ฐ€ ๋ฐ์ดํ„ฐ ๋กœ๋”ฉ ์‹คํŒจ:', error); - setRainMeasureData([]); - }); - } + setChmbrXcnts(data.chmbr_xcnts); + setChmbrYdnts(data.chmbr_ydnts); + break; default: break; @@ -317,76 +309,6 @@ const FeatureClickEventPopup = ({ onClose, featureData }: { onClose: () => void, fetchData(); }, [featureId, processedData]); - // ๐ŸŽฏ ์ถ”๊ฐ€ ๋ฐ์ดํ„ฐ API ํ˜ธ์ถœ ํ•จ์ˆ˜ - const fetchRainMeasureData = useCallback(async (chmbrXcnts: string, chmbrYdnts: string) => { - if (!chmbrXcnts || !chmbrYdnts) { - console.warn('์ถ”๊ฐ€ ๋ฐ์ดํ„ฐ ํ˜ธ์ถœ ์‹คํŒจ: ํ•„์ˆ˜ ๋งค๊ฐœ๋ณ€์ˆ˜ ๋ˆ„๋ฝ', { chmbrXcnts, chmbrYdnts }); - return []; - } - - try { - const queryParams = new URLSearchParams({ - chmbrXcnts: chmbrXcnts, - chmbrYdnts: chmbrYdnts, - pageable: `{}`, - }); - - console.log(`์ถ”๊ฐ€ ๋ฐ์ดํ„ฐ API ํ˜ธ์ถœ ์‹œ์ž‘: v1/onsemiro/getSwgRainsByGeomety?${queryParams.toString()}`); - - const result = await getData(`v1/onsemiro/getSwgRainsByGeomety?${queryParams.toString()}`); - - console.log('์ถ”๊ฐ€ ๋ฐ์ดํ„ฐ API ํ˜ธ์ถœ ์„ฑ๊ณต:', result); - - // ๐ŸŽฏ result๊ฐ€ ํŽ˜์ด์ง€๋„ค์ด์…˜ ๊ฐ์ฒด์ธ ๊ฒฝ์šฐ content ๋ฐฐ์—ด ์ถ”์ถœ - let dataArray: any[] = []; - if (result && typeof result === 'object' && 'content' in result && Array.isArray(result.content)) { - dataArray = result.content; - } else if (Array.isArray(result)) { - dataArray = result; - } else { - console.warn('์˜ˆ์ƒ์น˜ ๋ชปํ•œ API ์‘๋‹ต ํ˜•์‹:', result); - return []; - } - - // ๐ŸŽฏ ๊ฐ ์•„์ดํ…œ์„ ์ „์ฒ˜๋ฆฌํ•˜์—ฌ ๋ฐ˜ํ™˜ - const processedDataArray = dataArray.map((data: any) => { - // ๐ŸŽฏ formatDisplayData๋กœ ๊ธฐ๋ณธ ํฌ๋งทํŒ… ์ ์šฉ - const formattedItem = formatDisplayData(data); - - // ๐ŸŽฏ ์ถ”๊ฐ€ ๋ฐ์ดํ„ฐ ์กฐํ•ฉ - return { - ...formattedItem, - flwmtrCombined: `${data.flwmtrMesureTpEtc || '-'} / ${data.flwmtrKnd || '-'}`, - }; - }); - - return processedDataArray; - } catch (error) { - console.error('์ถ”๊ฐ€ ๋ฐ์ดํ„ฐ ๋กœ๋”ฉ ์‹คํŒจ:', error); - return []; - } - }, []); - - // ๐ŸŽฏ ์ถ”๊ฐ€ ๋ฐ์ดํ„ฐ๋Š” ๋ณ„๋„ useEffect๋กœ ๋น„๋™๊ธฐ ๋กœ๋”ฉ - useEffect(() => { - if (layerNm === '์ค‘์ ์šฐ์ˆ˜ํ† ์‹ค' && featureData?.values_) { - const data = featureData.values_; - - if (data?.chmbr_xcnts && data?.chmbr_ydnts) { - // ๐ŸŽฏ ์ถ”๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ๋น„๋™๊ธฐ๋กœ ๋กœ๋”ฉ (UI ๋ธ”๋กœํ‚น ์—†์Œ) - fetchRainMeasureData(data.chmbr_xcnts, data.chmbr_ydnts) - .then(response => { - console.log('์ถ”๊ฐ€ ๋ฐ์ดํ„ฐ ๋กœ๋”ฉ ์™„๋ฃŒ:', response); - setRainMeasureData(response || []); - }) - .catch(error => { - console.error('์ถ”๊ฐ€ ๋ฐ์ดํ„ฐ ์ตœ์ข… ๋กœ๋”ฉ ์‹คํŒจ:', error); - setRainMeasureData([]); - }); - } - } - }, [layerNm, featureData?.values_, fetchRainMeasureData]); - // ์ €์žฅ ์‹œ ๋ชจ๋‹ฌ ๋„์šฐ๊ธฐ const handleSaveClick = () => { setIsModalOpen(true); // ๋ชจ๋‹ฌ ์—ด๊ธฐ @@ -555,8 +477,10 @@ const FeatureClickEventPopup = ({ onClose, featureData }: { onClose: () => void, featureData={fetchData} isMainSsc={isMainSsc} isDrtwSewagePump={isDrtwSewagePump} - rainMeasureData={rainMeasureData} + // rainMeasureData={rainMeasureData} onSaveClick={handleSaveClick} + chmbrXcnts={chmbrXcnts} + chmbrYdnts={chmbrYdnts} /> }