Files
frontend/apps/wr/app/store/map/rainMap/index.tsx
T

130 lines
3.7 KiB
TypeScript

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<string , SelectDataType[]>) => void;
rainMapDetile:(featureCd:string) => Promise<customRainBdst | undefined>;
};
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<string, SelectDataType[]>) => {
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 가능하도록
}
}
}
};