diff --git a/src/assets/css/custom.css b/src/assets/css/custom.css index c5e699c..d2ce580 100644 --- a/src/assets/css/custom.css +++ b/src/assets/css/custom.css @@ -819,5 +819,4 @@ background-size: 75% auto; .grid-loading span{display:block;font-weight:500;margin-top:4px;} .pa-input-box{display:flex;} -.pa-input-box input + input {margin-left:8px;} -.pa-input{width:48px;} \ No newline at end of file +.pa-input{width:48px;margin-right:8px;} \ No newline at end of file diff --git a/src/components/map/naver/draw/FlightPlanDraw.js b/src/components/map/naver/draw/FlightPlanDraw.js index 0f55840..758ed6e 100644 --- a/src/components/map/naver/draw/FlightPlanDraw.js +++ b/src/components/map/naver/draw/FlightPlanDraw.js @@ -31,6 +31,8 @@ export const FlightPlanDraw_init = props => { desc: '' }); + const [radiusCircle, setRadiusCircle] = useState(); + const naver = props.naver; const map = props.map; let mode = props.mode; @@ -58,12 +60,6 @@ export const FlightPlanDraw_init = props => { let distanceMarker = []; - const handleBufferList = () => { - dispatch(Actions.FLIGHT_PLAN_AREA_BUFFER_LIST.request(areaDetail)); - }; - - const [radiusCircle, setRadiusCircle] = useState(); - useEffect(() => { setRadiusCircle(props.dragSize); }, [props.dragSize]); @@ -89,6 +85,10 @@ export const FlightPlanDraw_init = props => { } }, [areaDetail]); + const handleBufferList = () => { + dispatch(Actions.FLIGHT_PLAN_AREA_BUFFER_LIST.request(areaDetail)); + }; + const drawInit = () => { if (mapControl.drawType === 'LINE') { onClickButton('LINE'); diff --git a/src/components/map/naver/dron/DronMarker.js b/src/components/map/naver/dron/DronMarker.js index e612fad..84e0e08 100644 --- a/src/components/map/naver/dron/DronMarker.js +++ b/src/components/map/naver/dron/DronMarker.js @@ -23,6 +23,9 @@ export const DronMarker = props => { const { objectId, isClickObject } = useSelector( state => state.controlMapReducer ); + const { controlGroupAuthInfo } = useSelector( + state => state.controlGroupAuthState + ); const [arrMarkers, setArrMarkers] = useState([]); // const [arrInfos, setArrInfos] = useState([]); @@ -80,7 +83,7 @@ export const DronMarker = props => { arrMarkers.map(clickMarker => { if (objectId === clickMarker.controlId && isClickObject) { imageUrl = - clickMarker.id.indexOf('PALDRONE') > -1 + clickMarker.type === 'DRONE' ? DronDetailIcon : FlightDetailIcon; clickMarker.setIcon({ @@ -90,7 +93,7 @@ export const DronMarker = props => { }); } else { imageUrl = - clickMarker.id.indexOf('PALDRONE') > -1 ? DronIcon : FlightIcon; + clickMarker.type === 'DRONE' ? DronIcon : FlightIcon; clickMarker.setIcon({ content: ``, origin: new naver.maps.Point(0, 0), @@ -111,22 +114,32 @@ export const DronMarker = props => { //마커를 그린다. const addMarkers = (position, id, controlId, gps) => { - const iconOption = {}; - - const homePath = window.HOME_PATH || '.'; - iconOption.url = id.indexOf('PALDRONE') > -1 ? DronIcon : FlightIcon; - iconOption.origin = new naver.maps.Point(0, 0); - iconOption.anchor = new naver.maps.Point(15, 15); + const markerOption = {}; + + if (id.substring(0, 2) === 'PA') { + const pal = controlGroupAuthInfo.find( + prev => prev.idntfNum === gps.objectId + ); + markerOption.url = pal ? DronIcon : FlightIcon; + markerOption.type = pal ? 'DRONE' : 'FLIGHT'; + } else { + markerOption.url = FlightIcon; + markerOption.type = 'FLIGHT'; + } + + markerOption.origin = new naver.maps.Point(0, 0); + markerOption.anchor = new naver.maps.Point(15, 15); const marker = new naver.maps.Marker({ position: position, title: id, id: id, controlId: controlId, + type: markerOption.type, icon: { - content: ``, - origin: iconOption.origin, - anchor: iconOption.anchor + content: ``, + origin: markerOption.origin, + anchor: markerOption.anchor }, gps: gps }); diff --git a/src/modules/control/gp/sagas/controlGpSaga.ts b/src/modules/control/gp/sagas/controlGpSaga.ts index 34ce38a..75d2c69 100644 --- a/src/modules/control/gp/sagas/controlGpSaga.ts +++ b/src/modules/control/gp/sagas/controlGpSaga.ts @@ -10,6 +10,7 @@ import { controlGpApi } from '../apis/controlGpApi'; import decode from 'jwt-decode'; import { ControlGpData } from '../models/controlGpModel'; import { detail } from '../../../analysis/history/actions/analysisHistoryAction'; +import { useSelector } from 'react-redux'; function* getControlGpSaga( action: ActionType @@ -28,24 +29,15 @@ function* getControlGpSaga( //사용자가 등록한 기체(식별장치 포함)만 관제에서 볼 수 있게 필터처리 if (controlGroupAuthInfo.length > 0) { controlGroupAuthInfo.forEach(auth => { - // if (auth.groupAuthCd === 'CREATER' || auth.groupAuthCd === 'ADMIN') { - if (gpsData.length > 0) return false; - gpsData = data.filter(gps => auth.idntfNum === gps.objectId); - // } - - // 식별장치 마다 user를 판단할 수 없기 때문에 일단 주석 처리 - // if (auth.groupAuthCd === 'USER') { - // if (gpsData.length > 0) return false; - - // gpsData.filter(gps => auth.createUserId && auth.idntfNum === gps.objectId); - // } + // gpsData = data.filter(gps => auth.idntfNum === gps.objectId); }); } yield put( Actions.controlGpAction.success({ + // controlGpList: gpsData controlGpList: data }) ); @@ -54,7 +46,11 @@ function* getControlGpSaga( const controlIds: any = []; data.forEach(gps => { - if (gps.controlId && gps.objectId.indexOf("PALDRONE") > -1) controlIds.push(gps.controlId); + if (gps.controlId && gps.objectId.substring(0, 2) === 'PA') { + const arcrft = controlGroupAuthInfo.find(auth => auth.idntfNum === gps.objectId); + + if (arcrft) controlIds.push(gps.controlId); + } }); const param = controlIds.join(',');