From 0608588f336fcfb2280d625bf2457fe599bf57e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?scnoh=28=EB=85=B8=EC=8A=B9=EC=B2=A0=29?= Date: Fri, 2 Sep 2022 15:48:18 +0900 Subject: [PATCH] =?UTF-8?q?[=EA=B4=80=EC=A0=9C]=20=EC=8B=A4=EC=8B=9C?= =?UTF-8?q?=EA=B0=84=20=EB=B9=84=EC=A0=95=EC=83=81=20=EC=95=8C=EB=A6=BC=20?= =?UTF-8?q?=EC=A0=95=EB=B3=B4=20=EC=9E=91=EC=97=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../control/gp/actions/controlGpAction.ts | 2 +- src/modules/control/gp/sagas/controlGpSaga.ts | 16 ++ src/views/control/alarm/ControlAlarmList.js | 212 +++++++++++++----- src/views/control/main/ControlMain.js | 10 +- 4 files changed, 175 insertions(+), 65 deletions(-) diff --git a/src/modules/control/gp/actions/controlGpAction.ts b/src/modules/control/gp/actions/controlGpAction.ts index 322f0355..8032c82f 100644 --- a/src/modules/control/gp/actions/controlGpAction.ts +++ b/src/modules/control/gp/actions/controlGpAction.ts @@ -114,7 +114,7 @@ export const controlGpArcrftWarnAction = createAsyncAction( CONTROL_GP_ARCRFT_WARN_REQUEST, CONTROL_GP_ARCRFT_WARN_SUCCESS, CONTROL_GP_ARCRFT_WARN_FAILURE -)<{id : string}, ControlGpArcrftWarnList, AxiosError>(); +)(); export const controlGpFlightPlanInitAction = createAction(CONTROL_FLIGHT_PLAN_INIT)(); diff --git a/src/modules/control/gp/sagas/controlGpSaga.ts b/src/modules/control/gp/sagas/controlGpSaga.ts index 6e98323e..14086a6a 100644 --- a/src/modules/control/gp/sagas/controlGpSaga.ts +++ b/src/modules/control/gp/sagas/controlGpSaga.ts @@ -179,6 +179,21 @@ function* controlGpFlightPlanWarnSaga( } } +function* controlGpArcrftWarnSaga( + action: ActionType +) { + try { + const id = action.payload; + + const rs = yield call(controlGpApi.getArcrftWarnList, id); + + yield put(Actions.controlGpArcrftWarnAction.success(rs)); + + } catch (error) { + yield put(Actions.controlGpArcrftWarnAction.failure(error)); + } +} + export function* controlGpSaga() { yield takeEvery(Actions.controlGpAction.request, getControlGpSaga); @@ -189,4 +204,5 @@ export function* controlGpSaga() { yield takeEvery(Actions.controlGroupAuthAction.request, controlGroupAuthSaga); yield takeEvery(Actions.controlGpFlightPlanAction.request, controlGpFlightPlanSaga); yield takeEvery(Actions.controlGpFlightPlanWarnAction.request, controlGpFlightPlanWarnSaga); + yield takeEvery(Actions.controlGpArcrftWarnAction.request, controlGpArcrftWarnSaga); } diff --git a/src/views/control/alarm/ControlAlarmList.js b/src/views/control/alarm/ControlAlarmList.js index 5657552f..b22a24b6 100644 --- a/src/views/control/alarm/ControlAlarmList.js +++ b/src/views/control/alarm/ControlAlarmList.js @@ -1,66 +1,160 @@ +import { useEffect, useState } from 'react'; import { X } from 'react-feather'; +import { useDispatch, useSelector } from 'react-redux'; +import { controlGpArcrftWarnAction } from '../../../modules/control/gp/actions/controlGpAction'; const ControlAlarmList = props => { - return ( -
-
-
-

알림 리스트

- -
-
-
-
-
-
전체 2000건
-
오늘 120건
-
-
-
-
-
-
-
-

알림 목록

-
-
-
-
-
-
통신 장애 알림
-
6월 17일
-
-
- 통신장애 통신장애 통신장애 통신장애 통신장애 통신장애 통신장애 - 통신장애 통신장애{' '} -
-
-
-
-
-
-
-
-
비행 경로 이탈
-
6월 17일
-
-
- 비행경로이탈 비행경로이탈 비행경로이탈 비행경로이탈 비행경로이탈 - 비행경로이탈 비행경로이탈 비행경로이탈 비행경로이탈 비행경로이탈 -
-
-
+ const dispatch = useDispatch(); + + const { controlGpList } = useSelector(state => state.controlGpState); + const { controlGpArcrftWarnList } = useSelector(state => state.controlGpLogState); + + const [total, setTotal] = useState({ + totalDroneCnt: 0, + totalWarnCnt: 0, + warnList: [] + }); + + useEffect(() => { + if(controlGpArcrftWarnList) { + let totalWarnCnt = 0; + + if(controlGpArcrftWarnList.length > 0) { + controlGpArcrftWarnList.forEach(warn => { + totalWarnCnt += warn.warnCount; + }); + } + + setTotal(total => { + return { + totalDroneCnt : controlGpArcrftWarnList.length, + totalWarnCnt : totalWarnCnt, + warnList : controlGpArcrftWarnList + } + }) + } + + }, [controlGpArcrftWarnList]); + + useEffect(() => { + if(controlGpList) { + const controlIds = []; + + if(controlGpList.length > 0) { + controlGpList.forEach(gps => { + controlIds.push(gps.controlId); + }); + + const param = controlIds.join(','); + + dispatch(controlGpArcrftWarnAction.request(param)); + } else { + setTotal(total => { + return { + totalDroneCnt: 0, + totalWarnCnt: 0, + warnList: [] + } + }) + } + } + + }, [controlGpList]); + + return ( +
+
+
+

실시간 비정상 알림 정보

+ +
+
+
+
+
+
{total? total.totalDroneCnt: 0}대 비행 중
+
전체 {total? total.totalWarnCnt : 0}건
+
+
+
+
+
+
+
+

알림 목록

+
+ {!total ? null : total.warnList.map((warn, i) => { + const warnContent = warn.warnType === 'PLAN' ? '비행 경로 이탈' : '비정상 상황 발생' + + return ( +
+
+
+
+
{warn.idntfNum}
+
{warn.occurDt}
+
+
+
{warnContent}
+
{warn.warnCount}건
+
+
+
+
+ ) + })} + {/*
+
+
+
+
PAV-001
+
2022. 09. 02 10:00:30
+
+
+
비행 경로 이탈
+
22건
+
+
+
+
+
+
+
+
+
PAV-002
+
2022. 09. 02 11:23:52
+
+
+
비행 경로 이탈
+
10건
+
+
+
+
+
+
+
+
+
PAV-003
+
-
+
+
+
-
+
0건
+
+
+
+
*/} +
-
-
- ); + ); }; export default ControlAlarmList; diff --git a/src/views/control/main/ControlMain.js b/src/views/control/main/ControlMain.js index 0cab7bb8..0b38dafd 100644 --- a/src/views/control/main/ControlMain.js +++ b/src/views/control/main/ControlMain.js @@ -76,21 +76,21 @@ const ControlMain = () => { -
  • + {/*
  • -
  • + */} {/*
  • -
  • + */}
  • -
  • */} +