diff --git a/packages/common/business_components/src/ui/map/Gis.js b/packages/common/business_components/src/ui/map/Gis.js index 2ca7ed051..3d810b48d 100644 --- a/packages/common/business_components/src/ui/map/Gis.js +++ b/packages/common/business_components/src/ui/map/Gis.js @@ -123,8 +123,8 @@ function Gis({ orderedLayers = [], checkInterval = 3000, height: height = "h-[calc(100vh-5rem)]", - onOpenPopup=(data)=>{} - + onOpenPopup = (data) => { }, + droughtDates = { startYmd: '', endYmd: '' } }) { const mapRef = useRef(); const [mapObject, setMapObject] = useState({}); @@ -283,6 +283,17 @@ function Gis({ GisApp.layerCode = layerCode; // 전역 레이어 코드 설정 }, [treeData]); + // droughtDates를 전역(GisApp)에 반영 + useEffect(() => { + if (typeof window === "undefined") return; + if (droughtDates?.startYmd && droughtDates?.endYmd) { + GisApp.DROUGHT_DATES = { + startYmd: String(droughtDates.startYmd), + endYmd: String(droughtDates.endYmd), + }; + } + }, [droughtDates?.startYmd, droughtDates?.endYmd]); + const getLayerItems = (layerCode) => { const layerItems = Object.entries(layerCode) .filter(([key, obj], idx) => obj?.updtPsblYn === "Y") diff --git a/packages/common/business_components/src/ui/map/lib/gis.core.js b/packages/common/business_components/src/ui/map/lib/gis.core.js index d2379e417..5a6e705da 100644 --- a/packages/common/business_components/src/ui/map/lib/gis.core.js +++ b/packages/common/business_components/src/ui/map/lib/gis.core.js @@ -27,6 +27,8 @@ const GisApp = {}; */ //레이어 정보 GisApp.layerInfos = []; +// 가뭄 레이어 날짜 전역 보관소 추가 +GisApp.DROUGHT_DATES = { startYmd: '', endYmd: '' }; //기본정보 GisApp.GEOSERVER_URL = '/geoserver/hasudo/ows'; GisApp.GEOSERVER_WMS_URL = '/geoserver/hasudo/wms'; diff --git a/packages/common/business_components/src/ui/map/lib/gis.layer.js b/packages/common/business_components/src/ui/map/lib/gis.layer.js index 2d436ed12..6cbc054f8 100644 --- a/packages/common/business_components/src/ui/map/lib/gis.layer.js +++ b/packages/common/business_components/src/ui/map/lib/gis.layer.js @@ -112,7 +112,7 @@ GisOlLayer.prototype = { let toProj = GisApp.TO_PROJ; let lyrTyNm = options.lyrTyNm; let typename = this.storageNm + lyrTyNm; - let filter = options?.flterSql && options.flterSql && options.flterSql.trim() !== '' + let filter = options?.flterSql && options.flterSql && options.flterSql.trim() !== ''; let params = {}; params['TYPENAME'] = typename; @@ -122,6 +122,10 @@ GisOlLayer.prototype = { params['SRS'] = toProj; params['OUTPUTFORMAT'] = 'application/json'; if (filter) params['CQL_FILTER'] = filter; + else if (GisApp.DROUGHT_DATES) { + params['START_YMD'] = GisApp.DROUGHT_DATES.startYmd; + params['END_YMD'] = GisApp.DROUGHT_DATES.endYmd; + } let strParams = new URLSearchParams(params).toString(); let source = new VectorSource({ diff --git a/packages/common/business_components/src/ui/map/searchBar/comboSearchBar.tsx b/packages/common/business_components/src/ui/map/searchBar/comboSearchBar.tsx index 999b46569..3289ae53f 100644 --- a/packages/common/business_components/src/ui/map/searchBar/comboSearchBar.tsx +++ b/packages/common/business_components/src/ui/map/searchBar/comboSearchBar.tsx @@ -54,30 +54,25 @@ export const ComboSearchBar = ({ //시도, 시군구 조회 const fetchSido = async () => { - const url = `/cms-service/api/v1/code/cache/ADSTDSTRCD/Y`; - const res = await fetch(url); - const json = await res.json(); - const sidoList = json - .filter( - (item: any) => - typeof item.lwpoCd === "string" && item.lwpoCd.length === 2, - ) - .map((feature: any) => ({ - val: feature.lwpoCd, - text: feature.lwpoCdNm, - })); - setSidoData([{ text: "선택", val: "0" }, ...sidoList]); + const url = `/geoserver/hasudo/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=hasudo:tb_ms_ctpv&outputFormat=application/json&propertyName=mctpv_korn_nm,mctpv_cd`; + const res = await fetch(url).then(res => res.json()); - const sigunList = json - .filter( - (item: any) => - typeof item.lwpoCd === "string" && item.lwpoCd.length !== 2, - ) - .map((feature: any) => ({ - val: feature.lwpoCd, - text: feature.lwpoCdNm, - })); - setSigunData(sigunList); + const list = res.features.map((f: any) => ({ + text: f.properties.mctpv_korn_nm, + val: f.properties.mctpv_cd, + })); + setSidoData([{ text: "선택", val: "0" }, ...list]); + }; + + const fetchSigungu = async () => { + const url = `/geoserver/hasudo/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=hasudo:tb_ms_sgg&outputFormat=application/json&propertyName=sgg_cd,sgg_korn_nm`; + const res = await fetch(url).then(res => res.json()); + + const list = res.features.map((f: any) => ({ + text: f.properties.sgg_korn_nm, + val: f.properties.sgg_cd, + })); + setSigunData(list); }; //시설명 콤보박스 조회 @@ -170,6 +165,7 @@ export const ComboSearchBar = ({ //시도, 시군구 초기 데이터 조회 useEffect(() => { fetchSido(); + fetchSigungu(); }, []); //시군구 데이터 초기화 diff --git a/packages/common/business_components/src/ui/map/searchBar/procSearchBar.tsx b/packages/common/business_components/src/ui/map/searchBar/procSearchBar.tsx index b5f00d07b..dbded59af 100644 --- a/packages/common/business_components/src/ui/map/searchBar/procSearchBar.tsx +++ b/packages/common/business_components/src/ui/map/searchBar/procSearchBar.tsx @@ -39,32 +39,26 @@ export const ProcSearchBar = ({ gisMaps, facilityTypes }: SearchBarProps) => { : "0", ); - //시도, 시군구 조회 const fetchSido = async () => { - const url = `/cms-service/api/v1/code/cache/ADSTDSTRCD/Y`; - const res = await fetch(url); - const json = await res.json(); - const sidoList = json - .filter( - (item: any) => - typeof item.lwpoCd === "string" && item.lwpoCd.length === 2, - ) - .map((feature: any) => ({ - val: feature.lwpoCd, - text: feature.lwpoCdNm, - })); - setSidoData([{ text: "시도", val: "0" }, ...sidoList]); + const url = `/geoserver/hasudo/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=hasudo:tb_ms_ctpv&outputFormat=application/json&propertyName=mctpv_korn_nm,mctpv_cd`; + const res = await fetch(url).then(res => res.json()); - const sigunList = json - .filter( - (item: any) => - typeof item.lwpoCd === "string" && item.lwpoCd.length !== 2, - ) - .map((feature: any) => ({ - val: feature.lwpoCd, - text: feature.lwpoCdNm, - })); - setSigunData(sigunList); + const list = res.features.map((f: any) => ({ + text: f.properties.mctpv_korn_nm, + val: f.properties.mctpv_cd, + })); + setSidoData([{ text: "선택", val: "0" }, ...list]); + }; + + const fetchSigungu = async () => { + const url = `/geoserver/hasudo/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=hasudo:tb_ms_sgg&outputFormat=application/json&propertyName=sgg_cd,sgg_korn_nm`; + const res = await fetch(url).then(res => res.json()); + + const list = res.features.map((f: any) => ({ + text: f.properties.sgg_korn_nm, + val: f.properties.sgg_cd, + })); + setSigunData(list); }; //시설명 콤보박스 조회 @@ -157,6 +151,7 @@ export const ProcSearchBar = ({ gisMaps, facilityTypes }: SearchBarProps) => { //시도, 시군구 초기 데이터 조회 useEffect(() => { fetchSido(); + fetchSigungu(); }, []); //시군구 데이터 초기화