Merge remote-tracking branch 'origin/iipbs/common/main' into iipbs/wr/drgtPopup

This commit is contained in:
swcho
2025-08-09 23:05:49 +09:00
5 changed files with 58 additions and 50 deletions
@@ -123,8 +123,8 @@ function Gis({
orderedLayers = [], orderedLayers = [],
checkInterval = 3000, checkInterval = 3000,
height: height = "h-[calc(100vh-5rem)]", height: height = "h-[calc(100vh-5rem)]",
onOpenPopup=(data)=>{} onOpenPopup = (data) => { },
droughtDates = { startYmd: '', endYmd: '' }
}) { }) {
const mapRef = useRef(); const mapRef = useRef();
const [mapObject, setMapObject] = useState({}); const [mapObject, setMapObject] = useState({});
@@ -283,6 +283,17 @@ function Gis({
GisApp.layerCode = layerCode; // 전역 레이어 코드 설정 GisApp.layerCode = layerCode; // 전역 레이어 코드 설정
}, [treeData]); }, [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 getLayerItems = (layerCode) => {
const layerItems = Object.entries(layerCode) const layerItems = Object.entries(layerCode)
.filter(([key, obj], idx) => obj?.updtPsblYn === "Y") .filter(([key, obj], idx) => obj?.updtPsblYn === "Y")
@@ -27,6 +27,8 @@ const GisApp = {};
*/ */
//레이어 정보 //레이어 정보
GisApp.layerInfos = []; GisApp.layerInfos = [];
// 가뭄 레이어 날짜 전역 보관소 추가
GisApp.DROUGHT_DATES = { startYmd: '', endYmd: '' };
//기본정보 //기본정보
GisApp.GEOSERVER_URL = '/geoserver/hasudo/ows'; GisApp.GEOSERVER_URL = '/geoserver/hasudo/ows';
GisApp.GEOSERVER_WMS_URL = '/geoserver/hasudo/wms'; GisApp.GEOSERVER_WMS_URL = '/geoserver/hasudo/wms';
@@ -112,7 +112,7 @@ GisOlLayer.prototype = {
let toProj = GisApp.TO_PROJ; let toProj = GisApp.TO_PROJ;
let lyrTyNm = options.lyrTyNm; let lyrTyNm = options.lyrTyNm;
let typename = this.storageNm + 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 = {}; let params = {};
params['TYPENAME'] = typename; params['TYPENAME'] = typename;
@@ -122,6 +122,10 @@ GisOlLayer.prototype = {
params['SRS'] = toProj; params['SRS'] = toProj;
params['OUTPUTFORMAT'] = 'application/json'; params['OUTPUTFORMAT'] = 'application/json';
if (filter) params['CQL_FILTER'] = filter; 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 strParams = new URLSearchParams(params).toString();
let source = new VectorSource({ let source = new VectorSource({
@@ -54,30 +54,25 @@ export const ComboSearchBar = ({
//시도, 시군구 조회 //시도, 시군구 조회
const fetchSido = async () => { const fetchSido = async () => {
const url = `/cms-service/api/v1/code/cache/ADSTDSTRCD/Y`; 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); const res = await fetch(url).then(res => res.json());
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 sigunList = json const list = res.features.map((f: any) => ({
.filter( text: f.properties.mctpv_korn_nm,
(item: any) => val: f.properties.mctpv_cd,
typeof item.lwpoCd === "string" && item.lwpoCd.length !== 2, }));
) setSidoData([{ text: "선택", val: "0" }, ...list]);
.map((feature: any) => ({ };
val: feature.lwpoCd,
text: feature.lwpoCdNm, 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`;
setSigunData(sigunList); 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(() => { useEffect(() => {
fetchSido(); fetchSido();
fetchSigungu();
}, []); }, []);
//시군구 데이터 초기화 //시군구 데이터 초기화
@@ -39,32 +39,26 @@ export const ProcSearchBar = ({ gisMaps, facilityTypes }: SearchBarProps) => {
: "0", : "0",
); );
//시도, 시군구 조회
const fetchSido = async () => { const fetchSido = async () => {
const url = `/cms-service/api/v1/code/cache/ADSTDSTRCD/Y`; 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); const res = await fetch(url).then(res => res.json());
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 sigunList = json const list = res.features.map((f: any) => ({
.filter( text: f.properties.mctpv_korn_nm,
(item: any) => val: f.properties.mctpv_cd,
typeof item.lwpoCd === "string" && item.lwpoCd.length !== 2, }));
) setSidoData([{ text: "선택", val: "0" }, ...list]);
.map((feature: any) => ({ };
val: feature.lwpoCd,
text: feature.lwpoCdNm, 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`;
setSigunData(sigunList); 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(() => { useEffect(() => {
fetchSido(); fetchSido();
fetchSigungu();
}, []); }, []);
//시군구 데이터 초기화 //시군구 데이터 초기화