diff --git a/apps/fo/app/store/dashboard/index.tsx b/apps/fo/app/store/dashboard/index.tsx index 209601d1f..43496d71e 100644 --- a/apps/fo/app/store/dashboard/index.tsx +++ b/apps/fo/app/store/dashboard/index.tsx @@ -942,40 +942,52 @@ const calcValue = (operationalStatus, data, keyTxt='INFL_ASSCT_BFR_WQLT_TP') => operationalStatus.winterSunnyMax = data.winterSunny ? Number(Math.round(data.winterSunny.MAX_INFL_ASSCT_BFR_WQLT_TP * 1000) / 1000).toFixed(3).toString() : ''; } -// 강우영향일이면서 강우량이 3미만의 날짜를 강우량으로 대입 +// 강우영향일 계산 및 강우량 덮어씌우기 export const calRainEffectDayRainManage = (data: RainManageListProps[]) => { console.log('data', data); + + // 강우영향일 계산 (강우량이 3 초과이면 무조건 강우영향일) for(let idx = 0; idx < data.length; idx++) { const item = data[idx]; - const rainDay = Number(item?.infoRnDay?.toString().trim()) >= 3 ? 1 : 0; - let rainEffectDay = 0; - let effectRain = Number(item?.infoRnDay?.toString().trim()); if(item){ - if(idx < data.length - 2) { - if(rainDay == 1) { - rainEffectDay = 1; - } else { - if(idx >= 2) { - if(Number(data[idx-1]?.infoRnDay) >= 3 || Number(data[idx-2]?.infoRnDay) >= 3) { - rainEffectDay = 1; - effectRain = Number(data[idx-1]?.infoRnDay) >= 3 ? Number(data[idx-1]?.infoRnDay) : Number(data[idx-2]?.infoRnDay); - } - } - } - } else if(idx < data.length - 1) { - if(rainDay == 1 || Number(data[idx+1]?.infoRnDay) >= 3) { - rainEffectDay = 1; - effectRain = Number(data[idx+1]?.infoRnDay) >= 3 ? Number(data[idx+1]?.infoRnDay) : Number(data[idx]?.infoRnDay); - } + if(item.infoRnDay && Number(item.infoRnDay) > 3) { + item.rainEffectDay = 1; } else { - rainEffectDay = rainDay; - effectRain = Number(item?.infoRnDay?.toString().trim()); + item.rainEffectDay = 0; } - item.rainEffectDay = rainEffectDay; - item.infoRnDay = effectRain; } } + // 이틀 전, 하루 전이 강우영향일(3 이상)인 경우 해당 날도 강우영향일로 설정 + for(let idx = 0; idx < data.length; idx++) { + if(data[idx]) { + // 하루 전이 강우영향일(3 이상)인 경우 + if(idx > 0 && data[idx-1]?.infoRnDay && Number(data[idx-1]?.infoRnDay) >= 3) { + data[idx]!.rainEffectDay = 1; + } + // 이틀 전이 강우영향일(3 이상)인 경우 + if(idx > 1 && data[idx-2]?.infoRnDay && Number(data[idx-2]?.infoRnDay) >= 3) { + data[idx]!.rainEffectDay = 1; + } + } + } + + for(let idx = 0; idx < data.length; idx++) { + if(data[idx] && data[idx]?.rainEffectDay === 1) { + if(idx > 1){ + if(data[idx-1]?.infoRnDay && Number(data[idx-1]?.infoRnDay) > 3) { + data[idx]!.infoRnDay = data[idx-1]!.infoRnDay; + } + } + if(idx > 2){ + if(data[idx-2]?.infoRnDay && Number(data[idx-2]?.infoRnDay) > 3) { + data[idx]!.infoRnDay = data[idx-2]!.infoRnDay; + } + } + } + } + + let rtnData : RainManageListProps[] = []; rtnData = data.filter((item: RainManageListProps) => item.rainEffectDay === 1); console.log('rtnData', rtnData);