Browse Source

사용자 등록 기체 state 저장소 위치 변경

ctrlDraw
김장현 2 years ago
parent
commit
2127aaa316
  1. 18
      src/components/map/naver/dron/DronMarker.js
  2. 14
      src/modules/control/gp/actions/controlGpAction.ts
  3. 7
      src/modules/control/gp/models/controlGpModel.ts
  4. 29
      src/modules/control/gp/reducers/controlGpReducer.ts
  5. 69
      src/modules/control/gp/sagas/controlGpSaga.ts
  6. 4
      src/redux/reducers/rootReducer.ts

18
src/components/map/naver/dron/DronMarker.js

@ -20,13 +20,15 @@ import { controlGroupAuthAction } from '../../../../modules/control/gp';
export const DronMarker = props => { export const DronMarker = props => {
const dispatch = useDispatch(); const dispatch = useDispatch();
const { controlGpList } = useSelector(state => state.controlGpState); const { controlGpList, controlGroupAuthInfo } = useSelector(
state => state.controlGpState
);
const { objectId, isClickObject } = useSelector( const { objectId, isClickObject } = useSelector(
state => state.controlMapReducer state => state.controlMapReducer
); );
const { controlGroupAuthInfo } = useSelector( // const { controlGroupAuthInfo } = useSelector(
state => state.controlGroupAuthState // state => state.controlGroupAuthState
); // );
const { controlGpArcrftWarnList } = useSelector( const { controlGpArcrftWarnList } = useSelector(
state => state.controlGpLogState state => state.controlGpLogState
); );
@ -77,9 +79,9 @@ export const DronMarker = props => {
infoWindow.open(props.map, data.coord); infoWindow.open(props.map, data.coord);
}; };
useLayoutEffect(() => { // useLayoutEffect(() => {
dispatch(controlGroupAuthAction.request()); // dispatch(controlGroupAuthAction.request());
}, [controlGpList]); // }, [controlGpList]);
useEffect(() => { useEffect(() => {
markerInit(); markerInit();
@ -119,8 +121,6 @@ export const DronMarker = props => {
//마커를 그린다. //마커를 그린다.
const addMarkers = (position, id, controlId, gps) => { const addMarkers = (position, id, controlId, gps) => {
const markerOption = {}; const markerOption = {};
console.log(controlGroupAuthInfo);
console.log(gps.objectId);
if (id.substring(0, 2) === 'PA') { if (id.substring(0, 2) === 'PA') {
const pal = controlGroupAuthInfo?.find( const pal = controlGroupAuthInfo?.find(
prev => prev.idntfNum === gps.objectId prev => prev.idntfNum === gps.objectId

14
src/modules/control/gp/actions/controlGpAction.ts

@ -12,7 +12,7 @@ import {
ControlGpHisState, ControlGpHisState,
ControlGpPlanContainsRQ, ControlGpPlanContainsRQ,
ControlGpPlanContainsRS, ControlGpPlanContainsRS,
ControlGroupAuthState, // ControlGroupAuthState,
ControlGpArcrftWarnList, ControlGpArcrftWarnList,
ControlGpWarnLogList, ControlGpWarnLogList,
ControlweatherData, ControlweatherData,
@ -102,11 +102,11 @@ export const controlGpRtDtlAction = createAsyncAction(
CONTROL_GP_RTDTL_FAILURE CONTROL_GP_RTDTL_FAILURE
)<ControlGpData, ControlGpDtlState, AxiosError>(); )<ControlGpData, ControlGpDtlState, AxiosError>();
export const controlGroupAuthAction = createAsyncAction( // export const controlGroupAuthAction = createAsyncAction(
CONTROL_GROUP_AUTH_REQUEST, // CONTROL_GROUP_AUTH_REQUEST,
CONTROL_GROUP_AUTH_SUCCESS, // CONTROL_GROUP_AUTH_SUCCESS,
CONTROL_GROUP_AUTH_FAILURE // CONTROL_GROUP_AUTH_FAILURE
)<string, ControlGroupAuthState, AxiosError>(); // )<string, ControlGroupAuthState, AxiosError>();
export const controlGpFlightPlanAction = createAsyncAction( export const controlGpFlightPlanAction = createAsyncAction(
CONTROL_FLIGHT_PLAN_REQUEST, CONTROL_FLIGHT_PLAN_REQUEST,
@ -148,7 +148,7 @@ const actions = {
controlGpLogAction, controlGpLogAction,
controlGpDtlAction, controlGpDtlAction,
controlGpRtDtlAction, controlGpRtDtlAction,
controlGroupAuthAction, // controlGroupAuthAction,
controlGpFlightPlanAction, controlGpFlightPlanAction,
controlGpFlightPlanWarnAction, controlGpFlightPlanWarnAction,
controlGpArcrftWarnAction, controlGpArcrftWarnAction,

7
src/modules/control/gp/models/controlGpModel.ts

@ -2,6 +2,7 @@ import { FlightPlanData } from '../../../basis/flight/models/basisFlightModel';
export interface ControlGpState { export interface ControlGpState {
controlGpList: ControlGpData[] | undefined; controlGpList: ControlGpData[] | undefined;
controlGroupAuthInfo: ControlGroupAuthData[] | undefined;
} }
export interface ControlGpWeatherState { export interface ControlGpWeatherState {
@ -27,9 +28,9 @@ export interface ControlGpDtlState {
controlDetail: ControlDetailData | undefined; controlDetail: ControlDetailData | undefined;
} }
export interface ControlGroupAuthState { // export interface ControlGroupAuthState {
controlGroupAuthInfo: ControlGroupAuthData[] | undefined; // controlGroupAuthInfo: ControlGroupAuthData[] | undefined;
} // }
export interface ControlGpHistoryData { export interface ControlGpHistoryData {
objectId: String; objectId: String;

29
src/modules/control/gp/reducers/controlGpReducer.ts

@ -10,7 +10,7 @@ import {
controlGpLogAction, controlGpLogAction,
controlGpHisAction, controlGpHisAction,
controlGpRtDtlAction, controlGpRtDtlAction,
controlGroupAuthAction, // controlGroupAuthAction,
controlGpArcrftWarnAction, controlGpArcrftWarnAction,
controlweatherAction controlweatherAction
} from '../actions/controlGpAction'; } from '../actions/controlGpAction';
@ -22,7 +22,7 @@ import {
ControlGpLogState, ControlGpLogState,
ControlGpHisState, ControlGpHisState,
ControlGpState, ControlGpState,
ControlGroupAuthState, // ControlGroupAuthState,
initiaResponseControlGpData, initiaResponseControlGpData,
ControlGpWeatherState ControlGpWeatherState
} from '../models/controlGpModel'; } from '../models/controlGpModel';
@ -31,8 +31,9 @@ export const controlGpReducer = createReducer<ControlGpState, ControlGpAction>(
initiaResponseControlGpData initiaResponseControlGpData
).handleAction(controlGpAction.success, (state, action) => ).handleAction(controlGpAction.success, (state, action) =>
produce(state, draft => { produce(state, draft => {
const { controlGpList } = action.payload; const { controlGpList, controlGroupAuthInfo } = action.payload;
draft.controlGpList = controlGpList; draft.controlGpList = controlGpList;
draft.controlGroupAuthInfo = controlGroupAuthInfo;
}) })
); );
export const controlGpweatherReducer = createReducer< export const controlGpweatherReducer = createReducer<
@ -116,15 +117,15 @@ export const controlGpDtlReducer = createReducer<
}) })
); );
export const controlGroupAuthReducer = createReducer< // export const controlGroupAuthReducer = createReducer<
ControlGroupAuthState, // ControlGroupAuthState,
ControlGpAction // ControlGpAction
>(initiaResponseControlGpData).handleAction( // >(initiaResponseControlGpData).handleAction(
controlGroupAuthAction.success, // controlGroupAuthAction.success,
(state, action) => // (state, action) =>
produce(state, draft => { // produce(state, draft => {
const { controlGroupAuthInfo } = action.payload; // const { controlGroupAuthInfo } = action.payload;
draft.controlGroupAuthInfo = controlGroupAuthInfo; // draft.controlGroupAuthInfo = controlGroupAuthInfo;
}) // })
); // );

69
src/modules/control/gp/sagas/controlGpSaga.ts

@ -12,32 +12,43 @@ import { ControlGpData } from '../models/controlGpModel';
import { detail } from '../../../analysis/history/actions/analysisHistoryAction'; import { detail } from '../../../analysis/history/actions/analysisHistoryAction';
import { useSelector } from 'react-redux'; import { useSelector } from 'react-redux';
const token = cookieStorage.getCookie(COOKIE_ACCESS_TOKEN);
function* getControlGpSaga( function* getControlGpSaga(
action: ActionType<typeof Actions.controlGpAction.request> action: ActionType<typeof Actions.controlGpAction.request>
) { ) {
try { try {
const data = action.payload; const data = action.payload;
const state = yield select(); const state = yield select();
const { objectId, isClickObject } = state.controlMapReducer; const { objectId, isClickObject } = state.controlMapReducer;
// 그룹 별 기체 필터링 // 그룹 별 기체 필터링
const { controlGroupAuthInfo } = state.controlGroupAuthState; const { controlGroupAuthInfo } = state.controlGpState;
const { controlGpHistory } = state.controlGpHisState; const { controlGpHistory } = state.controlGpHisState;
let gpsData: ControlGpData[] = []; // let gpsData: ControlGpData[] = [];
//사용자가 등록한 기체(식별장치 포함)만 관제에서 볼 수 있게 필터처리 //사용자가 등록한 기체(식별장치 포함)만 관제에서 볼 수 있게 필터처리
if (controlGroupAuthInfo?.length > 0) { // if (controlGroupAuthInfo?.length > 0) {
controlGroupAuthInfo.forEach(auth => { // controlGroupAuthInfo.forEach(auth => {
if (gpsData.length > 0) return false; // if (gpsData.length > 0) return false;
// gpsData = data.filter(gps => auth.idntfNum === gps.objectId); // // gpsData = data.filter(gps => auth.idntfNum === gps.objectId);
}); // });
// }
let res;
if (token && data.length > 0) {
const user = decode<LoginData>(token);
res = yield call(controlGpApi.getGroupAuth, user.cstmrSno);
} }
yield put( yield put(
Actions.controlGpAction.success({ Actions.controlGpAction.success({
// controlGpList: gpsData // controlGpList: gpsData
controlGpList: data controlGpList: data,
controlGroupAuthInfo: res || []
}) })
); );
@ -144,26 +155,26 @@ function* controlDtlSaga(
} }
} }
function* controlGroupAuthSaga( // function* controlGroupAuthSaga(
action: ActionType<typeof Actions.controlGroupAuthAction.request> // action: ActionType<typeof Actions.controlGroupAuthAction.request>
) { // ) {
const token = cookieStorage.getCookie(COOKIE_ACCESS_TOKEN); // const token = cookieStorage.getCookie(COOKIE_ACCESS_TOKEN);
try { // try {
if (token) { // if (token) {
const user = decode<LoginData>(token); // const user = decode<LoginData>(token);
const data = yield call(controlGpApi.getGroupAuth, user.cstmrSno); // const data = yield call(controlGpApi.getGroupAuth, user.cstmrSno);
yield put( // yield put(
Actions.controlGroupAuthAction.success({ // Actions.controlGroupAuthAction.success({
controlGroupAuthInfo: data // controlGroupAuthInfo: data
}) // })
); // );
} // }
} catch (error) { // } catch (error) {
yield put(Actions.controlGroupAuthAction.failure(error)); // yield put(Actions.controlGroupAuthAction.failure(error));
} // }
} // }
function* controlGpFlightPlanSaga( function* controlGpFlightPlanSaga(
action: ActionType<typeof Actions.controlGpFlightPlanAction.request> action: ActionType<typeof Actions.controlGpFlightPlanAction.request>
@ -235,7 +246,7 @@ export function* controlGpSaga() {
yield takeEvery(Actions.controlGpLogAction.request, getControlGpWarnLogSaga); yield takeEvery(Actions.controlGpLogAction.request, getControlGpWarnLogSaga);
yield takeEvery(Actions.controlGpRtDtlAction.request, controlGpRtDtlSaga); yield takeEvery(Actions.controlGpRtDtlAction.request, controlGpRtDtlSaga);
yield takeEvery(Actions.controlGpDtlAction.request, controlDtlSaga); yield takeEvery(Actions.controlGpDtlAction.request, controlDtlSaga);
yield takeEvery(Actions.controlGroupAuthAction.request, controlGroupAuthSaga); // yield takeEvery(Actions.controlGroupAuthAction.request, controlGroupAuthSaga);
yield takeEvery(Actions.controlweatherAction.request, ControlWeatherSaga); yield takeEvery(Actions.controlweatherAction.request, ControlWeatherSaga);
yield takeEvery( yield takeEvery(

4
src/redux/reducers/rootReducer.ts

@ -25,7 +25,7 @@ import {
controlGpDtlReducer, controlGpDtlReducer,
controlGpHisReducer, controlGpHisReducer,
controlGpReducer, controlGpReducer,
controlGroupAuthReducer, // controlGroupAuthReducer,
controlGpFltPlanReducer, controlGpFltPlanReducer,
controlGpSaga, controlGpSaga,
ControlGpState, ControlGpState,
@ -79,7 +79,7 @@ const rootReducer = combineReducers({
controlGpHisState: controlGpHisReducer, controlGpHisState: controlGpHisReducer,
controlGpLogState: controlGpLogReducer, controlGpLogState: controlGpLogReducer,
controlGpDtlState: controlGpDtlReducer, controlGpDtlState: controlGpDtlReducer,
controlGroupAuthState: controlGroupAuthReducer, // controlGroupAuthState: controlGroupAuthReducer,
controlGpFltPlanState: controlGpFltPlanReducer, controlGpFltPlanState: controlGpFltPlanReducer,
menuState: menuReducer, menuState: menuReducer,
analysisHistoryState: analysisHistoryReducer, analysisHistoryState: analysisHistoryReducer,

Loading…
Cancel
Save