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"; export const rainMapSize = 15 export type rainMapState = { rainMap: { rainMapRes: customRainBdst[]; rainMapCount: number; isInit: boolean; rainSttHeadList: CommonTableProps[]; rainSttNodeList: CommonTableProps[]; }; }; type rainMapActions = { rainMapInit: (page: number, total: number, cityOrSgg:string) => void; rainMapSearch: (page: number, total: number, cityOrSgg:string, searchTxt?:string) =>void rainMapDetile:(featureCd:string) => Promise; }; export type rainMapType = rainMapState & rainMapActions; export const rainMapStateExport: rainMapState = { rainMap: { isInit: false, rainMapRes: [], 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 (page: number, total: number, cityOrSgg:string, searchTxt?:string) => { try { const rainMapRes = await getFetchWithCount( fetchType.WR, `/reuseFc/rainyInfoList` + (page ? `/${page}` : "/1") + (total ? `/${total}` : "/20") + (cityOrSgg ? `/${cityOrSgg}` : "/0") + (searchTxt ? `/${searchTxt}` : "") ); set((state: rainMapState) => { return { ...state, rainMap: { ...state.rainMap, rainMapRes: rainMapRes.data, rainMapCount: rainMapRes.count, }, }; }); } catch (e) { console.log(e); } }, rainMapDetile: async (featureCd: string) => { try { console.log('featureCd ', featureCd) 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 가능하도록 } } } };