import { fetchType, getFetch, getFetchWithCount } from "@/components/lib/api"; import type { CommonTableProps } from "../../common/type/header"; import { rainSttHeadListExport, rainSttNodeListExport, } from "../../ruseFcltMng/fcltSttn/rainSttn/headList"; import type { customRainBdst } from "../../ruseFcltMng/fcltReg/rainReg"; import type { SelectDataType } from "@common/business_components/ui"; import { excelRainSttnParsing } from "../../ruseFcltMng/fcltSttn/rainSttn/excel"; export const rainMapSize = 15 export type rainMapState = { rainMap: { rainMapRes: customRainBdst[]; rainMapExcelList: []; rainMapCount: number; isInit: boolean; rainSttHeadList: CommonTableProps[]; rainSttNodeList: CommonTableProps[]; }; }; type rainMapActions = { rainMapInit: (page: number, total: number, cityOrSgg:string) => void; rainMapSearch: (isExcel: boolean, page: number, total: string, con: string, txt: string,code:Record) => void; rainMapDetile:(featureCd:string) => Promise; }; export type rainMapType = rainMapState & rainMapActions; export const rainMapStateExport: rainMapState = { rainMap: { isInit: false, rainMapRes: [], rainMapExcelList:[], rainMapCount: 1, rainSttHeadList: rainSttHeadListExport, rainSttNodeList: rainSttNodeListExport, }, }; export const rainMapActionsExport: (set: any) => rainMapActions = ( set: any ) => { return { rainMapInit: async (page: number, total: number, cityOrSgg:string) => { try { const rainMapRes = await getFetchWithCount( fetchType.WR, `/reuseFc/rainyInfoList` + (page ? `/${page}` : "/1") + (total ? `/${total}` : "/20") + (cityOrSgg ? `/${cityOrSgg}` : "/0") ); set((state: rainMapState) => { return { ...state, rainMap: { ...state.rainMap, rainMapRes: rainMapRes.data, rainMapCount: rainMapRes.count, isInit: false, }, }; }); } catch (e) { console.log(e); } }, rainMapSearch: async (isExcel: boolean, page: number, total: string, con: string, txt: string, code :Record) => { try { const rainMapRes = await getFetchWithCount( fetchType.WR, `/reuseFc/rainyInfoList` + (page ? `/${page}` : "/1") + (total ? `/${total}` : "/20") + (con ? `/${con}` : "/0") + (txt ? `/${txt}` : "") ); if (isExcel) { const rainMapExcelList = excelRainSttnParsing(rainMapRes, code); set((state: rainMapState) => { return { ...state, rainMap: { ...state.rainMap, rainMapExcelList: rainMapExcelList, }, }; }); }else{ set((state: rainMapState) => { return { ...state, rainMap: { ...state.rainMap, rainMapRes: rainMapRes.data, rainMapCount: rainMapRes.count, }, }; }); } } catch (e) { console.log(e); } }, rainMapDetile: async (featureCd: string) => { try { const rainDetail = await getFetch(fetchType.WR, `/reuseFc/rainyInfoList/1/3/0/${featureCd}` ) if(rainDetail&&rainDetail.length>0){ return rainDetail[0]; }else{ return null; } } catch (error) { console.log(error); throw error; // 호출부에서 catch 가능하도록 } } } };