Browse Source

Merge branch 'master' of http://gitea.palntour.com/pav/pav-home

pull/2/head
junh_eee(이준희) 2 years ago
parent
commit
fce8356398
  1. 1
      src/components/basis/flight/plan/FlightPlanAreaDetailForm.js
  2. 2
      src/components/map/naver/NaverMap.js
  3. 2
      src/components/map/naver/draw/FlightPlanDraw.js
  4. 50
      src/components/map/naver/dron/DronMarker.js
  5. 61
      src/containers/basis/dron/BasisIdntfContainer.js
  6. 21
      src/modules/control/gp/sagas/controlGpSaga.ts
  7. 2
      src/modules/control/map/reducers/controlMapReducer.ts

1
src/components/basis/flight/plan/FlightPlanAreaDetailForm.js

@ -177,6 +177,7 @@ const FlightPlanAreaDetailForm = ({ handleSave, handleClose, handleChange, handl
className='mr-1' className='mr-1'
color='primary' color='primary'
onClick={e => handleSave()} onClick={e => handleSave()}
disabled={!coordList[0].lat ? true : false }
> >
등록 등록
</Button.Ripple> </Button.Ripple>

2
src/components/map/naver/NaverMap.js

@ -41,7 +41,7 @@ export const NaverCustomMap = () => {
center: new naver.maps.LatLng(36.56793936069445, 127.85101412107547), center: new naver.maps.LatLng(36.56793936069445, 127.85101412107547),
zoom: 10, zoom: 10,
zoomControl: true, zoomControl: true,
mapTypeId: naver.maps.MapTypeId.NORMAL, mapTypeId: naver.maps.MapTypeId.HYBRID,
zoomControlOptions: { zoomControlOptions: {
position: naver.maps.Position.TOP_LEFT, position: naver.maps.Position.TOP_LEFT,

2
src/components/map/naver/draw/FlightPlanDraw.js

@ -200,6 +200,7 @@ export const FlightPlanDraw = props => {
title: '우회 여부 확인', title: '우회 여부 확인',
desc: '좌표를 두 개 점으로 이어주세요.' desc: '좌표를 두 개 점으로 이어주세요.'
}) })
polyline.setMap(null); polyline.setMap(null);
polyline = ''; polyline = '';
} }
@ -885,7 +886,6 @@ export const FlightPlanDraw = props => {
return text; return text;
} }
// return null;
return( return(
<InfoModal modal={alertModal} setModal={setAlertModal} /> <InfoModal modal={alertModal} setModal={setAlertModal} />
) )

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

@ -92,7 +92,12 @@ export const DronMarker = props => {
id: id, id: id,
controlId: controlId, controlId: controlId,
icon: { icon: {
// content: [
// '<div>dddd</div>',
// ].join(''),
url: DronIcon, url: DronIcon,
// size: new naver.maps.Size(50, 50),
origin: new naver.maps.Point(0, 0), origin: new naver.maps.Point(0, 0),
anchor: new naver.maps.Point(15, 15), anchor: new naver.maps.Point(15, 15),
} }
@ -104,9 +109,6 @@ export const DronMarker = props => {
handlerDronClick(marker); handlerDronClick(marker);
}); });
// drone 정보 창
// markerInfoWindow(marker);
setArrMarkers(m => [...m, marker]); setArrMarkers(m => [...m, marker]);
}; };
@ -114,6 +116,10 @@ export const DronMarker = props => {
const idntfNum = marker.id; const idntfNum = marker.id;
const contorlId = marker.controlId; const contorlId = marker.controlId;
// 클릭한 식별번호 정보를 가진 그룹 추출
// const group = controlGroupAuthInfo.find(group => group.idntfNum === idntfNum);
//히스토리 불러오기
dispatch(objectClickAction(contorlId)); dispatch(objectClickAction(contorlId));
dispatch(controlGpDtlAction.request(contorlId)); dispatch(controlGpDtlAction.request(contorlId));
dispatch(controlGpFlightPlanAction.request(idntfNum)); dispatch(controlGpFlightPlanAction.request(idntfNum));
@ -176,43 +182,5 @@ export const DronMarker = props => {
setArrMarkers(arrData); setArrMarkers(arrData);
}; };
const markerInfoWindow = (marker) => {
controlGpList.forEach(gps => {
const contents = [
`<div class="tooltip-box">`,
` <div class="tooltip-ti">`,
` <span>${marker.id}</span>`,
` </div>`,
` <div class="tooltip-txt">`,
` <div class="tooltip-txt-list">`,
` <span>${gps.speed}${gps.speedType}</span>`,
` </div>`,
` <div class="tooltip-txt-list">`,
` <span>${gps.elev}${gps.elevType}</span>`,
` </div>`,
` <div class="tooltip-txt-list">`,
` <span>${gps.heading}</span>`,
` </div>`,
` </div>`,
`</div>`
].join('');
const info = new naver.maps.InfoWindow({
id: marker.id,
content: contents,
backgroundColor: '#283046', //박스안쪽영역 컬러
anchorSize: new props.naver.maps.Size(30, -10),
anchorSkew: false,
anchorColor: '#283046',
pixelOffset: new props.naver.maps.Point(20, -20)
});
console.log(info);
info.open(props.map, marker);
});
}
return null; return null;
}; };

61
src/containers/basis/dron/BasisIdntfContainer.js

@ -3,7 +3,7 @@ import { useDispatch, useSelector } from 'react-redux';
import { Card, CardBody, Col, Row } from 'reactstrap'; import { Card, CardBody, Col, Row } from 'reactstrap';
import { BasisIdntfForm } from '../../../components/basis/dron/BasisIdntform'; import { BasisIdntfForm } from '../../../components/basis/dron/BasisIdntform';
import * as Actions from '../../../modules/basis/dron/actions/basisDronAction'; import * as Actions from '../../../modules/basis/dron/actions/basisDronAction';
import { ErrorModal } from '../../../components/modal/ErrorModal';
export const BasisIdntfContainer = props => { export const BasisIdntfContainer = props => {
const { listIdntf, idntfCount, detail, isRefreshIdntf } = useSelector( const { listIdntf, idntfCount, detail, isRefreshIdntf } = useSelector(
state => state.dronState state => state.dronState
@ -18,6 +18,12 @@ export const BasisIdntfContainer = props => {
hpno:'', hpno:'',
isSave: false isSave: false
}); });
//모달 관련 설정
const [modal, setModal] = useState({
isOpen: false,
title: '',
desc: ''
});
const [idntDataList, setIdntfDataList] = useState([]); const [idntDataList, setIdntfDataList] = useState([]);
@ -50,16 +56,60 @@ export const BasisIdntfContainer = props => {
dispatch(Actions.IDNTF_LIST.request(props.id)); dispatch(Actions.IDNTF_LIST.request(props.id));
}; };
const handlerCreate = async data => { const handlerCreate = async () => {
console.log('idntDataList>>>', idntDataList); console.log('idntDataList>>>', idntDataList);
let saveArr = idntDataList.filter(item => item.isSave === false); let saveArr = idntDataList.filter(item => item.isSave === false);
if (saveArr.length > 0) {
let checking = true;
saveArr.forEach(idntf => {
if (!idntf.idntfNum && idntf.idntfNum === '') {
setModal({
isOpen: true,
title: '필수값 입력 오류',
desc: '식별번호를 입력해주세요.'
});
checking = false;
return false;
}
if(!idntf.ownerNm && idntf.ownerNm === '') {
setModal({
isOpen: true,
title: '필수값 입력 오류',
desc: '소유자명을 입력해주세요.'
});
checking = false;
return false;
}
if(!idntf.hpno && idntf.hpno === '') {
setModal({
isOpen: true,
title: '필수값 입력 오류',
desc: '연락처를 입력해주세요.'
});
checking = false;
return false;
}
});
if (!checking) return false;
dispatch( dispatch(
Actions.IDNTF_CREATE.request({ Actions.IDNTF_CREATE.request({
arcrftSno: detail?.arcrftSno, arcrftSno: detail?.arcrftSno,
data: saveArr data: saveArr
}) })
); );
} else {
setModal({
isOpen: true,
title: '필수값 입력 오류',
desc: '식별장치 정보를 입력해주세요.'
});
return false;
}
}; };
const handlerDelete = async data => { const handlerDelete = async data => {
@ -104,6 +154,8 @@ export const BasisIdntfContainer = props => {
</Col> </Col>
</Row> </Row>
) : ( ) : (
<Row>
<Col>
<BasisIdntfForm <BasisIdntfForm
data={idntDataList} data={idntDataList}
count={idntDataList?.length} count={idntDataList?.length}
@ -113,5 +165,8 @@ export const BasisIdntfContainer = props => {
handlerSave={handlerCreate} handlerSave={handlerCreate}
handlerDelete={handlerDelete} handlerDelete={handlerDelete}
/> />
<ErrorModal modal={modal} setModal={setModal} />
</Col>
</Row>
); );
}; };

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

@ -36,9 +36,11 @@ function* getControlGpSaga(
}); });
} }
console.log('gps ', gpsData);
yield put( yield put(
Actions.controlGpAction.success({ Actions.controlGpAction.success({
controlGpList: data controlGpList: gpsData
}) })
); );
@ -57,18 +59,15 @@ function* getControlGpSaga(
// History Push // History Push
if(controlGpHistory) { if(controlGpHistory) {
const stateHistory = controlGpHistory.concat(); const stateHistory = controlGpHistory;
const history = stateHistory.map((h) => {
const hisObj = { return {
lat: detailData.lat, ...h,
lng: detailData.lng, detailData
objectId: detailData.objectId
} }
stateHistory.push(hisObj); });
yield put(Actions.controlGpHisAction.success({ yield put(Actions.controlGpHisAction.success(history));
controlGpHistory: stateHistory
}));
} }
} }
} catch (error) { } catch (error) {

2
src/modules/control/map/reducers/controlMapReducer.ts

@ -1,6 +1,6 @@
// ** Initial State // ** Initial State
const initialState = { const initialState = {
mapType: 'NORMAL', mapType: 'HYBRID',
objectId: null, objectId: null,
isClickObject: false, isClickObject: false,
area0001: true, // 비행금지 구역 area0001: true, // 비행금지 구역

Loading…
Cancel
Save