147 lines
4.4 KiB
TypeScript
147 lines
4.4 KiB
TypeScript
/** 시설 선택 결과의 우측 탭 식별·표시 변환. 기존 값과 처리 순서를 유지한다. */
|
|
import { type RightPanelTabCategory } from "@/app/(map-layout)/map/components/right-panel/right-panel-bookmark-tabs";
|
|
import { FLDNG_HSTRY_LAYER_NAME } from "@/entities/flood-history/model/flood-history-types";
|
|
|
|
export const getSelectedFeatureLayerTypeName = (data: any) => {
|
|
const previewLayerId = String(data?.get?.("layerId") ?? "").trim();
|
|
if (String(data?.get?.("changeId") ?? "").trim() && previewLayerId) {
|
|
return previewLayerId;
|
|
}
|
|
|
|
if (typeof data?.getId === "function") {
|
|
return String(data.getId() ?? "").split(".")[0];
|
|
}
|
|
|
|
if (typeof data?.id_ === "string") {
|
|
return String(data.id_).split(".")[0];
|
|
}
|
|
|
|
return String(data?.lyrTypeNm ?? data?.values_?.lyrTypeNm ?? "").trim();
|
|
};
|
|
|
|
export const getRightPanelFeatureIdentifier = (data: any) => {
|
|
const rawId =
|
|
data?.get?.("changeId") ??
|
|
data?.get?.("fid") ??
|
|
data?.values_?.fid ??
|
|
data?.fid ??
|
|
data?.getId?.() ??
|
|
data?.id_ ??
|
|
data?.fcltMngNo ??
|
|
data?.values_?.fclt_mng_no ??
|
|
data?.swtrmtFcltCd ??
|
|
data?.values_?.swtrmt_fclt_cd ??
|
|
"";
|
|
|
|
return String(rawId).trim();
|
|
};
|
|
|
|
export const getRightPanelFeatureTitle = (data: any) => {
|
|
const layerTypeName = getSelectedFeatureLayerTypeName(data);
|
|
|
|
switch (layerTypeName) {
|
|
case "tb_ms_swage_ppl":
|
|
return "하수관로";
|
|
case "tb_ms_swage_mhl":
|
|
return "하수맨홀";
|
|
case "tb_ms_swage_pmstn":
|
|
return "펌프장";
|
|
case "tb_ms_stofcbr":
|
|
return "우수토실";
|
|
case "tb_il_swage_prcs_fclt":
|
|
return "처리시설";
|
|
case "tb_ms_swage_prcs_zone":
|
|
return "처리구역";
|
|
case "tb_ms_fldng_wtlv_map":
|
|
return FLDNG_HSTRY_LAYER_NAME;
|
|
case "tb_ms_fldng_dpth_map":
|
|
return "침수흔적심선";
|
|
case "om_dt_untrt_swg_rain":
|
|
return "중점우수";
|
|
default:
|
|
return (
|
|
String(data?.lyrNm ?? data?.values_?.lyrNm ?? "상세").trim() || "상세"
|
|
);
|
|
}
|
|
};
|
|
|
|
// OpenLayers Feature와 plain object 양쪽에서 탭 표시값 후보를 같은 순서로 읽는다.
|
|
export const getRightPanelFeatureProperty = (data: any, keys: string[]) => {
|
|
for (const key of keys) {
|
|
const value = data?.get?.(key) ?? data?.values_?.[key] ?? data?.[key];
|
|
const normalizedValue = String(value ?? "").trim();
|
|
if (normalizedValue) return normalizedValue;
|
|
}
|
|
return "";
|
|
};
|
|
|
|
export const getRightPanelTabCategory = (data: any): RightPanelTabCategory => {
|
|
const surveyOverlayType = getRightPanelFeatureProperty(data, [
|
|
"surveyOverlayType",
|
|
]);
|
|
if (surveyOverlayType === "EXMN_RESULT") return "exmnSurvey";
|
|
const layerTypeName = getSelectedFeatureLayerTypeName(data);
|
|
if (layerTypeName === "tb_ms_swage_ppl") return "pipe";
|
|
if (layerTypeName === "tb_il_swage_prcs_fclt") return "treatmentFacility";
|
|
if (layerTypeName === "tb_ms_swage_prcs_zone") return "treatmentZone";
|
|
return "defaultFeature";
|
|
};
|
|
|
|
export const getRightPanelFeatureDisplayLabel = (
|
|
data: any,
|
|
category: RightPanelTabCategory,
|
|
) => {
|
|
if (category === "exmnSurvey") {
|
|
const managementNo =
|
|
getRightPanelFeatureProperty(data, [
|
|
"gisManagementNo",
|
|
"fclt_mng_no",
|
|
"fcltMngNo",
|
|
]) || "-";
|
|
const jobType = getRightPanelFeatureProperty(data, ["jobType"]);
|
|
const surveyLabel =
|
|
jobType === "PPL"
|
|
? "관로조사"
|
|
: jobType === "MNHL"
|
|
? "맨홀조사"
|
|
: "조사사업";
|
|
return `${surveyLabel}(${managementNo})`;
|
|
}
|
|
|
|
if (category === "pipe") {
|
|
const managementNo =
|
|
getRightPanelFeatureProperty(data, [
|
|
"fclt_mng_no",
|
|
"fcltMngNo",
|
|
"pipeId",
|
|
"fid",
|
|
]) ||
|
|
getRightPanelFeatureIdentifier(data) ||
|
|
"-";
|
|
return `관로(${managementNo})`;
|
|
}
|
|
|
|
if (category === "treatmentFacility") {
|
|
const facilityName =
|
|
getRightPanelFeatureProperty(data, ["swtrmt_fclt_nm", "swtrmtFcltNm"]) ||
|
|
getRightPanelFeatureProperty(data, ["swtrmt_fclt_cd", "swtrmtFcltCd"]) ||
|
|
"-";
|
|
return `처리시설(${facilityName})`;
|
|
}
|
|
|
|
if (category === "treatmentZone") {
|
|
const zoneName =
|
|
getRightPanelFeatureProperty(data, ["swtrmt_zone_nm", "swtrmtZoneNm"]) ||
|
|
getRightPanelFeatureProperty(data, [
|
|
"swtrmt_zone_sn",
|
|
"swtrmtZoneSn",
|
|
"swtrmt_fclt_cd",
|
|
"swtrmtFcltCd",
|
|
]) ||
|
|
"-";
|
|
return `처리구역(${zoneName})`;
|
|
}
|
|
|
|
return getRightPanelFeatureTitle(data);
|
|
};
|