import { formatCommaNumber, formatPhoneNumber } from "./commom"; const wrLayerList = [ { text: "tb_il_swage_prcs_fclt", val: "bscFctCd" }, { text: "tb_wr_bdst_ruse_fclt", val: "pbnstRuseFcltId" }, { text: "tb_wr_rnwtr_utztn_fclt", val: "rainyObj" }, { text: "tb_wr_rswtr_fclt", val: "rswtrObj" }, { text: "tb_wr_htdfl_fclt", val: "htdflObj" }, { text: "tb_wr_ruse_fclt_dmd_co", val: "dmdInfoId" }, { text: "tb_wr_tmpr_dmd_co", val: "fctryMngSn" }, ]; const wrFeaturePK = [ { text: "bscFctCd", val: "tb_il_swage_prcs_fclt" }, { text: "searchPk", val: "tb_wr_bdst_ruse_fclt" }, { text: "bdstInfoSn", val: "tb_wr_rnwtr_utztn_fclt" }, { text: "bdstInfoSn", val: "tb_wr_rswtr_fclt" }, { text: "bdstInfoSn", val: "tb_wr_htdfl_fclt" }, { text: "dmdInfoId", val: "tb_wr_ruse_fclt_dmd_co" }, { text: "fctryMngSn", val: "tb_wr_tmpr_dmd_co" }, ]; // { text: "하수처리시설", val: "tb_il_swage_prcs_fclt" }, // { text: "하수재이용시설", val: "tb_wr_bdst_ruse_fclt" }, // { text: "빗물이용시설", val: "tb_wr_rnwtr_utztn_fclt" }, // { text: "중수도시설", val: "tb_wr_rswtr_fclt" }, // { text: "온배수시설", val: "tb_wr_htdfl_fclt" }, // { text: "수요처", val: "tb_wr_ruse_fclt_dmd_co" }, // { text: "잠재수요처", val: "tb_wr_tmpr_dmd_co" }, export const getFeatureCd = (featurePropertise: any, layerNm: string) => { const featureCd = layerNm === "tb_wr_bdst_ruse_fclt" ? featurePropertise?.swtrmt_fclt_cd : [ "tb_wr_rswtr_fclt", "tb_wr_htdfl_fclt", "tb_wr_rnwtr_utztn_fclt", "tb_wr_tmpr_dmd_co", ].includes(layerNm) ? featurePropertise?.bdst_nm : layerNm === "tb_il_swage_prcs_fclt" ? featurePropertise?.swtrmt_fclt_cd : layerNm === "tb_wr_ruse_fclt_dmd_co" ? featurePropertise?.bdst_info_sn : null; return featureCd; }; export const getWrLayerNm = (featurePropertise: any) => { const result = wrLayerList .filter((item) => item.val in featurePropertise) // 키 존재 여부 체크 .map((item) => item.text); return result[0]; }; export const getWrFeaturePk = (layerName: string) => { const result = wrFeaturePK .filter((item) => item.val === layerName) // 키 존재 여부 체크 .map((item) => item.text); return result[0]; }; export const getSelectedLayers = (isFeature: any, gisMaps: any) => { const map = gisMaps.current; if (!map) { console.warn("지도가 초기화되지 않았습니다."); return; } let result = null; const layers = map ? map .getLayers() .getArray() .filter((l: any) => l.getVisible()) : []; // gisMap이 null인지 확인 후 레이어 가져오기 let featureLayer: { get: (key: string) => any } = { get: () => null }; layers.forEach((layer: any) => { const source = layer.getSource(); if ( source && source.hasFeature && isFeature && typeof isFeature.getId === "function" && source.hasFeature(isFeature) ) { featureLayer = layer; // 피처가 속한 레이어 찾기) } }); result = featureLayer.get("lyrTyNm"); return result; }; export const getClickFeatureId = (data: any) => { let featureId = ""; const layerName = data.layerNm; if (layerName === "하수재이용시설") { // 재이용시설 featureId = `${layerName}.${data.searchPk}`; } else if ( //빗물이용시설, 중수도시설 layerName === "빗물이용시설" || layerName == "중수도시설" ) { featureId = `${layerName}.${data.bdstInfoSn}`; } else if (layerName === "하수처리시설") { //하수처리시설 featureId = `${layerName}.${data.bscFctCd}`; } else if (layerName === "온배수시설") { //온배수시설 featureId = `${layerName}.${data.bdstRuseFcltSn}`; } else if (layerName == "수요처") { //수요처 featureId = `${layerName}.${data.dmdInfoId.replaceAll("-", "")}`; } else { featureId = `${layerName}.${data.fid || data.id || data.ftrIdn}`; } return featureId; }; export function featurePopUpOpen( layerNm: string, featureCd: string, popupDetailRef ) { const url = `/mapFeaturePopup?layerNm=${encodeURIComponent(String(layerNm))}&featureCd=${encodeURIComponent(featureCd)} `; const width = String(layerNm) === "tb_wr_bdst_ruse_fclt" ? Math.floor(window.innerWidth * 0.6) : Math.floor(window.innerWidth * 0.4); // 화면 폭의 40% const height = String(layerNm) === "tb_wr_bdst_ruse_fclt" ? Math.floor(window.innerHeight - 100) : String(layerNm) === "tb_wr_ruse_fclt_dmd_co" ? Math.floor(window.innerHeight - 430) : Math.floor(window.innerHeight - 300); // 150px 여백 확보; // calc(100% - 70px) const left = (window.screen.availWidth - width) / 2; const top = (window.screen.availHeight - height) / 2; const popupOptions = `width=${width},height=${height},left=${left},top=${top},resizable=yes,scrollbars=yes `; popupDetailRef.current = window.open( url, "지도 시설 상세정보 팝업", popupOptions ); } export const getOverLayObj = (fclType: string, data: any,code?:any) => { let newObj = {}; let title = ""; if (fclType === "하수재이용시설") { newObj = { "시설용량(톤/일)": formatCommaNumber(data?.fcltCpct) ??'확인불가', "재이용률(%)": (data?.fcltCpct / data?.bscFctCpc)||0, "장내용수(m³/년)": formatCommaNumber(data?.inUsage) ?? '확인불가', "장외용수(m3/년)":formatCommaNumber(data?.outUsage) ?? '확인불가', // 수요처: data?.reuseBuilding[0]?.rainyObj.pntfColArea ?? '확인불가', }; title = data?.bdstNm ?? '확인불가'; } else if (fclType === "하수처리시설") { newObj = { "시설용량(톤/일)": formatCommaNumber(data?.fctCpc) ?? '확인불가', 지역구분: data?.efflWqltStndrdNm ?? '확인불가', 재이용여부: data?.rswtrYn ?? '확인불가', "재이용시설 등록여부": data?.ruse ?? '확인불가', }; title = data?.bscFctNm ?? '확인불가'; } else if (fclType === "빗물이용시설" ) { newObj = { 건물용도: code?.bdstUsgCd.find((item) => item.val=== String(data?.reuseBuilding[0].bdstUsgCd) )?.text ?? '확인불가', 설치완료일: data?.reuseBuilding[0]?.instlCmptnDt ?? '확인불가', 처리시설유무: data?.reuseBuilding[0]?.rainyObj.filtrTrtmfctYn ?? '확인불가', "처리시설용량(m³/일)": formatCommaNumber(data?.reuseBuilding[0]?.rainyObj.filtrTrtmfctCpct) ?? '확인불가', "저류조용량(m³)": formatCommaNumber(data?.reuseBuilding[0]?.rainyObj.pntfColArea) ?? '확인불가', }; title = data?.bdstNm ?? '확인불가'; } else if (fclType === "중수도시설") { newObj = { 건물용도: code?.bdstUsgCd.find((item) => item.val===String(data?.reuseBuilding[0].bdstUsgCd) )?.text ?? '확인불가', 설치완료일: data?.reuseBuilding[0]?.instlCmptnDt ?? '확인불가', "주요 처리공정": code?.rswtPrscCdMthdCd.find((item) => item.val===data?.reuseBuilding[0]?.rswtrObj.filtrTrtmfctProcs)?.text ?? '확인불가', 원수종류: code?.orgwtKndCd.find((item) => item.val === data?.reuseBuilding[0]?.rswtrObj.orgwtKndCd)?.text ?? '확인불가', //이용용도: isCode.filtrTrtmfctUsgCd data?.reuseBuilding[0]?.rswtrObj.altUswtrKndCd ?? '확인불가', }; title = data?.bdstNm ?? '확인불가'; } else if (fclType === "온배수시설") { newObj = { 미정: '확인불가', // '설치완료일': data?.reuseBuilding[0]?.instlCmptnDt??'', // '처리시설유무': data?.reuseBuilding[0]?.rainyObj.filtrTrtmfctYn??'', // '처리시설용량(m³/일)': data?.reuseBuilding[0]?.rainyObj.filtrTrtmfctCpct??'', // '저류조용량(m³)': data?.reuseBuilding[0]?.rainyObj.pntfColArea??'', }; title = data?.bdstNm ?? '확인불가'; } else if (fclType === "수요처") { newObj = { '사업자등록번호': data?.dmdInfoId??'', '주소': data?.daddr??'', '전화번호': formatPhoneNumber(data?.telno)??'', }; title = data?.dmdCoNm ?? '확인불가'; } else if (fclType === "잠재수요처") { newObj = { 공장구분: data?.fctrySe ?? '확인불가', 설립구분: data?.fndnSe ?? '확인불가', 업종명: data?.tpbizNm ?? '확인불가', 생산폼목: data?.prdctnItem ?? '확인불가', }; title = data?.dmdCoNm ?? '확인불가'; } return { title, newObj }; };