72 lines
2.6 KiB
TypeScript
72 lines
2.6 KiB
TypeScript
import MsSwagePpl from "../popupComponent/MsSwagePpl"; // 하수관로
|
|
import sewagePump from "../popupComponent/sewagePump"; // 하수펌프
|
|
import smh from "../popupComponent/smh";
|
|
import Ssc from "../popupComponent/Ssc";
|
|
import StormWaterPump from "../popupComponent/stormWaterPump";
|
|
import SwtrmtFclt from "../popupComponent/SwtrmtFclt";
|
|
import SwtrmtPrcsZoneAnalysis from "../popupComponent/SwtrmtPrcsZoneAnalysis";
|
|
|
|
type LayerComponentProps = {
|
|
featureData: any;
|
|
isMainSsc?: boolean;
|
|
isDrtwSewagePump?: boolean;
|
|
rainMeasureData?: any;
|
|
onSaveClick?: () => void;
|
|
onFormDataChange?: (data: any) => void; // 추가
|
|
chmbrXcnts: string;
|
|
chmbrYdnts: string;
|
|
gisObject?: Record<string, any>; // GIS 객체 추가
|
|
rawFeatureData?: any;
|
|
surveyResultContent?: React.ReactNode;
|
|
};
|
|
type LayerContentMap = {
|
|
[key: string]: {
|
|
component?: React.ComponentType<any>;
|
|
props?: any;
|
|
};
|
|
};
|
|
// 레이어 이름과 컴포넌트를 매핑
|
|
// 레이어 선택시 변경되는 팝업 컨텐츠 동적으로 변경하도록 작업
|
|
const layerContentMap: LayerContentMap = {
|
|
"하수처리시설": { component: SwtrmtFclt, }, // 디지털 자료관 연계정보가 없으니 일단 주석 처리
|
|
"하수처리구역": { component: SwtrmtPrcsZoneAnalysis },
|
|
"우수토실": { component: Ssc, },
|
|
"중점우수토실": { component: Ssc, }, // 중점우수토실 여부 설정
|
|
"하수관로": { component: MsSwagePpl, },
|
|
"하수맨홀": { component: smh, },
|
|
"하수펌프장": { component: sewagePump },
|
|
// "빗물펌프": { component: StormWaterPump },
|
|
// "오수펌프": { component: sewagePump },
|
|
};
|
|
|
|
// 동적 컴포넌트 반환 함수
|
|
export const getLayerContentComponent = (layerNm: string): React.FC<LayerComponentProps> | null => {
|
|
const component = layerContentMap[layerNm];
|
|
if (!component || !component.component) {
|
|
// component가 없으면 null 반환
|
|
return () => null;
|
|
}
|
|
return component.component as React.FC<LayerComponentProps>
|
|
};
|
|
// 사용자 입력 필드 (보수 및 갱신, 청소 및 준설, 점검 및 진단)
|
|
export const handleInputChange = (section: string,
|
|
index: number,
|
|
field: string,
|
|
value: string,
|
|
dataMap: {
|
|
[key: string]: {
|
|
data: { year: string; type: string, bizInfoNm: string, bizType: string }[];
|
|
setData: React.Dispatch<React.SetStateAction<{ year: string; type: string, bizInfoNm: string, bizType: string }[]>>;
|
|
};
|
|
}
|
|
) => {
|
|
const target = dataMap[section];
|
|
if (!target) return;
|
|
|
|
const updated = [...target.data];
|
|
if (updated[index]) {
|
|
updated[index][field as keyof typeof updated[number]] = value;
|
|
}
|
|
target.setData(updated);
|
|
};
|