diff --git a/src/components/map/naver/dron/DronToast.js b/src/components/map/naver/dron/DronToast.js index fa437df..1c99768 100644 --- a/src/components/map/naver/dron/DronToast.js +++ b/src/components/map/naver/dron/DronToast.js @@ -4,8 +4,12 @@ import { Fragment } from 'react'; import { toast } from 'react-toastify'; import Avatar from '../../../../@core/components/avatar'; import { Bell, Check, X, AlertTriangle, Info } from 'react-feather' +import { controlGpDtlAction, controlGpFlightPlanAction } from '../../../../modules/control/gp'; +import { objectClickAction, objectUnClickAction } from '../../../../modules/control/map/actions/controlMapActions'; const DronToast = () => { + const dispatch = useDispatch(); + const { controlGpList } = useSelector(state => state.controlGpState); useEffect(() => { @@ -22,7 +26,7 @@ const DronToast = () => { hideProgressBar: true, position: toast.POSITION.BOTTOM_RIGHT, onClick: props => { - handlerDronClick(gps.controlId, gps.objectId); + handleNotiClick(gps.controlId, gps.objectId); } } ) @@ -31,6 +35,12 @@ const DronToast = () => { } }, [controlGpList]); + const handleNotiClick = (controlId, idntfNum) => { + dispatch(objectClickAction(controlId)); + dispatch(controlGpDtlAction.request(controlId)); + dispatch(controlGpFlightPlanAction.request(idntfNum)); + } + const toastRender = (title, message) => { return ( diff --git a/src/modules/control/gp/actions/controlGpAction.ts b/src/modules/control/gp/actions/controlGpAction.ts index c99489c..322f035 100644 --- a/src/modules/control/gp/actions/controlGpAction.ts +++ b/src/modules/control/gp/actions/controlGpAction.ts @@ -13,6 +13,8 @@ import { ControlGpPlanContainsRQ, ControlGpPlanContainsRS, ControlGroupAuthState, + ControlGpArcrftWarnList, + ControlGpWarnLogList, // ControlGpWarnLogDataList, } from '../models/controlGpModel'; @@ -54,6 +56,11 @@ const CONTROL_FLIGHT_PLAN_WARN_REQUEST = 'control/gp/flight/plan/CONTROL_FLIGHT_ const CONTROL_FLIGHT_PLAN_WARN_SUCCESS = 'control/gp/flight/plan/CONTROL_FLIGHT_PLAN_WARN_SUCCESS'; const CONTROL_FLIGHT_PLAN_WARN_FAILURE = 'control/gp/flight/plan/CONTROL_FLIGHT_PLAN_WARN_FAILURE'; +// [관제] 기체 별 비정상 리스트 조회 +const CONTROL_GP_ARCRFT_WARN_REQUEST = 'control/gp/arcrft/warn/CONTROL_FLIGHT_PLAN_WARN_REQUEST'; +const CONTROL_GP_ARCRFT_WARN_SUCCESS = 'control/gp/arcrft/warn/CONTROL_FLIGHT_PLAN_WARN_SUCCESS'; +const CONTROL_GP_ARCRFT_WARN_FAILURE = 'control/gp/arcrft/warn/CONTROL_FLIGHT_PLAN_WARN_FAILURE'; + export const controlGpAction = createAsyncAction( CONTROL_GP_REQUEST, CONTROL_GP_SUCCESS, @@ -95,7 +102,7 @@ export const controlGpLogAction = createAsyncAction( CONTROL_GP_LOG_REQIEST, CONTROL_GP_LOG_SUCCESS, CONTROL_GP_LOG_FAILURE - )<{ id: string }, ControlGpLogState, AxiosError>(); + )<{ id: string }, ControlGpWarnLogList, AxiosError>(); export const controlGpFlightPlanWarnAction = createAsyncAction( CONTROL_FLIGHT_PLAN_WARN_REQUEST, @@ -103,6 +110,12 @@ export const controlGpFlightPlanWarnAction = createAsyncAction( CONTROL_FLIGHT_PLAN_WARN_FAILURE, )(); +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)(); const actions = { @@ -114,6 +127,7 @@ const actions = { controlGroupAuthAction, controlGpFlightPlanAction, controlGpFlightPlanWarnAction, + controlGpArcrftWarnAction, controlGpFlightPlanInitAction }; diff --git a/src/modules/control/gp/apis/controlGpApi.ts b/src/modules/control/gp/apis/controlGpApi.ts index d31ce84..93010da 100644 --- a/src/modules/control/gp/apis/controlGpApi.ts +++ b/src/modules/control/gp/apis/controlGpApi.ts @@ -24,7 +24,7 @@ export const controlGpApi = { } const { data }: ResponseControlGpWarnLog = await axios.get( - `api/ctr/cntrl/warnLog/${id}` + `api/ctr/cntrl/warn/list/${id}` ); return data; @@ -61,6 +61,15 @@ export const controlGpApi = { `api/ctr/cntrl/contains`, rq ); + return data; + }, + getArcrftWarnList: async (id: string) => { + if(!id) return null; + + const { data } = await axios.get( + `api/ctr/cntrl/arcrft/warn/list?id=${id}` + ); + return data; } }; diff --git a/src/modules/control/gp/models/controlGpModel.ts b/src/modules/control/gp/models/controlGpModel.ts index e3d21b2..5be5c06 100644 --- a/src/modules/control/gp/models/controlGpModel.ts +++ b/src/modules/control/gp/models/controlGpModel.ts @@ -10,7 +10,8 @@ export interface ControlGpFlightPlanState { } export interface ControlGpLogState { - controlGpWarnLog: ControlGpWarnLogData[] | undefined; + controlGpWarnLog: ControlGpWarnLogList | undefined; + controlGpArcrftWarnList: ControlGpArcrftWarnList | undefined; } export interface ControlGpHisState { @@ -136,6 +137,8 @@ export interface ControlGpWarnLogData { createDt: String; } +export interface ControlGpWarnLogList extends Array {}; + export interface FlightPlanAreaDataList extends Array {}; export interface FlightPlanAreaData { @@ -165,6 +168,17 @@ export interface FlightPlanAreaCoordData { // docState: string } +export interface ControlGpArcrftWarnData { + cntrlId: string, + warnType: string, + idntfNum: string, + occurDt: string, + createDt: string, + warnCount: number, +} + +export interface ControlGpArcrftWarnList extends Array {}; + export interface ControlGpPlanContainsRQ { idntfNum: string, lat: number, @@ -198,5 +212,6 @@ export const initiaResponseControlGpData = { controlGroupAuthInfo: undefined, controlGpFltPlanList: undefined, controlGpWarnLogList: undefined, - controlGpContains: undefined + controlGpContains: undefined, + controlGpArcrftWarnList: undefined }; diff --git a/src/modules/control/gp/reducers/controlGpReducer.ts b/src/modules/control/gp/reducers/controlGpReducer.ts index ed2317c..c176c83 100644 --- a/src/modules/control/gp/reducers/controlGpReducer.ts +++ b/src/modules/control/gp/reducers/controlGpReducer.ts @@ -11,6 +11,7 @@ import { controlGpHisAction, controlGpRtDtlAction, controlGroupAuthAction, + controlGpArcrftWarnAction, } from '../actions/controlGpAction'; import { ControlGpWarnLogData, @@ -57,9 +58,15 @@ export const controlGpLogReducer = createReducer produce(state, draft => { - const { controlGpWarnLog } = action.payload; - draft.controlGpWarnLog = controlGpWarnLog; - }) + const data = action.payload; + draft.controlGpWarnLog = data; + }) +) +.handleAction(controlGpArcrftWarnAction.success, (state, action) => + produce(state, draft => { + const list = action.payload; + draft.controlGpArcrftWarnList = list; + }) ); export const controlGpHisReducer = createReducer( diff --git a/src/modules/control/gp/sagas/controlGpSaga.ts b/src/modules/control/gp/sagas/controlGpSaga.ts index 2ec1f75..6e98323 100644 --- a/src/modules/control/gp/sagas/controlGpSaga.ts +++ b/src/modules/control/gp/sagas/controlGpSaga.ts @@ -15,28 +15,34 @@ function* getControlGpSaga( const data = action.payload; const state = yield select(); const { objectId, isClickObject } = state.controlMapReducer; - const { controlGroupAuthInfo } = state.controlGroupAuthState; - const { controlGpHistory } = state.controlGpHisState; - let gpsData: ControlGpData[] = []; - // if (controlGroupAuthInfo.length > 0) { - // controlGroupAuthInfo.forEach((auth) => { - // if (auth.groupAuthCd === 'CREATER' || auth.groupAuthCd === 'ADMIN') { - // if (gpsData.length > 0) return false; + /** + * 그룹 별 기체 필터링 + const { controlGroupAuthInfo } = state.controlGroupAuthState; + const { controlGpHistory } = state.controlGpHisState; - // gpsData = data.filter(gps => auth.idntfNum === gps.objectId); - // } + let gpsData: ControlGpData[] = []; - // if (auth.groupAuthCd === 'USER') { - // if (gpsData.length > 0) return false; + if (controlGroupAuthInfo.length > 0) { + controlGroupAuthInfo.forEach((auth) => { + if (auth.groupAuthCd === 'CREATER' || auth.groupAuthCd === 'ADMIN') { + if (gpsData.length > 0) return false; - // gpsData.filter(gps => auth.createUserId && auth.idntfNum === gps.objectId); - // } - // }); - // } + gpsData = data.filter(gps => auth.idntfNum === gps.objectId); + } + + if (auth.groupAuthCd === 'USER') { + if (gpsData.length > 0) return false; + + gpsData.filter(gps => auth.createUserId && auth.idntfNum === gps.objectId); + } + }); + } + + console.log('gps data >>>> ', data); + */ - console.log('gps data >>>> ', data); yield put( Actions.controlGpAction.success({ @@ -134,10 +140,7 @@ function* controlGpFlightPlanSaga( ) { try { const idntfNum = action.payload; - - const list = yield call(controlGpApi.getFlightPlan, idntfNum); - - console.log("flight plan list : ", list); + const list = yield call(controlGpApi.getFlightPlan, idntfNum); yield put(Actions.controlGpFlightPlanAction.success(list)); @@ -152,11 +155,9 @@ function* getControlGpWarnLogSaga( try{ const {id} = action.payload; const data = yield call(controlGpApi.getWarnLog, id) - console.log('SAGA : Warn Log list : ', data); + yield put( - Actions.controlGpLogAction.success({ - controlGpWarnLog: data - }) + Actions.controlGpLogAction.success(data) ); } catch(error) { yield put(Actions.controlGpLogAction.failure(error));