223 lines
8.4 KiB
TypeScript
223 lines
8.4 KiB
TypeScript
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 };
|
|
};
|