김지은 11 months ago
parent
commit
e5a5d5c572
  1. 28
      src/components/laanc/map/FlightArea.js
  2. 33
      src/components/laanc/map/LaancAreaMap.js
  3. 2
      src/components/laanc/map/LaancDrawControl.js
  4. 2
      src/components/laanc/map/LaancDrawModal.js

28
src/components/laanc/map/FlightArea.js

@ -41,6 +41,7 @@ import { FeatureAirZone } from '../../map/mapbox/feature/FeatureAirZone';
import { WeatherContainer } from '../../../containers/basis/flight/plan/WeatherContainer'; import { WeatherContainer } from '../../../containers/basis/flight/plan/WeatherContainer';
import { initFlightBas } from '../../../modules/laanc/models/laancModels'; import { initFlightBas } from '../../../modules/laanc/models/laancModels';
import * as LaancAction from '../../../modules/laanc/actions/laancActions'; import * as LaancAction from '../../../modules/laanc/actions/laancActions';
import LaancDrawModal from './LaancDrawModal';
const initialAddData = { const initialAddData = {
isAddable: false, isAddable: false,
@ -72,6 +73,12 @@ export default function FlightArea({
const [previewLayer, setPreviewLayer] = useState(); const [previewLayer, setPreviewLayer] = useState();
const [formModal, setFormModal] = useState(false); const [formModal, setFormModal] = useState(false);
const [modal, setModal] = useState({
title: '',
desc: '',
isOpen: false
});
const [isSaveable, setIsSaveable] = useState(false); const [isSaveable, setIsSaveable] = useState(false);
const [addData, setAddData] = useState(initialAddData); const [addData, setAddData] = useState(initialAddData);
@ -169,8 +176,27 @@ export default function FlightArea({
}); });
}; };
const handlerModal = () => {
setModal(!modal);
};
const handlerDrawType = val => { const handlerDrawType = val => {
if (drawObj.getMode().includes('draw')) {
// alert('비행구역설정 완료 후 타입을 변경해주세요.');
setModal({
title: '비행 구역 설정',
desc: (
<>
비행구역 설정이 완료되지 않았습니다.
<br />
비행구역 설정 완료 타입 변경 부탁드립니다.
</>
),
isOpen: true
});
} else {
dispatch(drawTypeChangeAction(val)); dispatch(drawTypeChangeAction(val));
}
}; };
const handlerSave = async () => { const handlerSave = async () => {
@ -564,6 +590,7 @@ export default function FlightArea({
addData={addData} addData={addData}
setSaveData={setSaveData} setSaveData={setSaveData}
handlerSaveElev={handlerSaveElev} handlerSaveElev={handlerSaveElev}
setModal={setModal}
/> />
</ModalBody> </ModalBody>
<ModalFooter> <ModalFooter>
@ -657,6 +684,7 @@ export default function FlightArea({
</ModalFooter> </ModalFooter>
</Modal> </Modal>
) : null} ) : null}
{modal ? <LaancDrawModal modal={modal} handler={handlerModal} /> : null}
<Modal <Modal
isOpen={formModal} isOpen={formModal}
toggle={handlerWeather} toggle={handlerWeather}

33
src/components/laanc/map/LaancAreaMap.js

@ -32,7 +32,6 @@ import geoJson from '../../map/geojson/airArea.json';
import { FeatureAirZone } from '../../map/mapbox/feature/FeatureAirZone'; import { FeatureAirZone } from '../../map/mapbox/feature/FeatureAirZone';
import LaancMapSearch from './LaancMapSearch'; import LaancMapSearch from './LaancMapSearch';
import { LaancDrawControl } from './LaancDrawControl'; import { LaancDrawControl } from './LaancDrawControl';
import LaancModal from '../../map/mapbox/draw/LaancModal';
export default function LaancAreaMap({ export default function LaancAreaMap({
centeredModal, centeredModal,
@ -43,7 +42,8 @@ export default function LaancAreaMap({
addData, addData,
handlerInitCoordinates, handlerInitCoordinates,
setSaveData, setSaveData,
handlerSaveElev handlerSaveElev,
setModal
}) { }) {
const dispatch = useDispatch(); const dispatch = useDispatch();
const mapControl = useSelector(state => state.controlMapReducer); const mapControl = useSelector(state => state.controlMapReducer);
@ -57,11 +57,11 @@ export default function LaancAreaMap({
); );
const [number, setNumber] = useState(0); const [number, setNumber] = useState(0);
const [modal, setModal] = useState({ // const [modal, setModal] = useState({
title: '', // title: '',
desc: '', // desc: '',
isOpen: false // isOpen: false
}); // });
const [detailLayer, setDetailLayer] = useState(); const [detailLayer, setDetailLayer] = useState();
@ -315,9 +315,9 @@ export default function LaancAreaMap({
dispatch(AREA_COORDINATE_LIST_SAVE(areaList)); dispatch(AREA_COORDINATE_LIST_SAVE(areaList));
}; };
const handlerModal = () => { // const handlerModal = () => {
setModal(!modal); // setModal(!modal);
}; // };
return ( return (
<Card className='mb-0'> <Card className='mb-0'>
@ -325,9 +325,6 @@ export default function LaancAreaMap({
<div style={{ position: 'relative' }}> <div style={{ position: 'relative' }}>
<LaancMapSearch mapObject={mapObject} /> <LaancMapSearch mapObject={mapObject} />
<div className='d-flex coords-wrap'> <div className='d-flex coords-wrap'>
{mapObject && viewCoordObj.length > 0 ? (
<div className='coords-box'>
{/* {console.log(viewCoordObj, '----')} */}
{viewCoordObj?.map((obj, i) => { {viewCoordObj?.map((obj, i) => {
let coord = let coord =
obj.properties.id === 'LINE' obj.properties.id === 'LINE'
@ -341,6 +338,7 @@ export default function LaancAreaMap({
return ( return (
<div <div
className='coords-box'
key={i} key={i}
onClick={() => { onClick={() => {
const allObj = drawObj const allObj = drawObj
@ -352,6 +350,7 @@ export default function LaancAreaMap({
}); });
}} }}
> >
<div>
<h6 className='ti'>비행구역 {i + 1}</h6> <h6 className='ti'>비행구역 {i + 1}</h6>
<div className='coords-box-scroll'> <div className='coords-box-scroll'>
{coord?.map((co, idx) => { {coord?.map((co, idx) => {
@ -387,11 +386,11 @@ export default function LaancAreaMap({
})} })}
</div> </div>
</div> </div>
</div>
); );
})} })}
</div> </div>
) : null}
</div>
<div <div
id='detail' id='detail'
ref={mapContainer} ref={mapContainer}
@ -417,9 +416,9 @@ export default function LaancAreaMap({
handlerSaveElev={handlerSaveElev} handlerSaveElev={handlerSaveElev}
/> />
<FeatureAirZone map={mapObject} mapboxgl={mapboxgl} /> <FeatureAirZone map={mapObject} mapboxgl={mapboxgl} />
{modal ? ( {/* {modal ? (
<LaancModal modal={modal} handler={handlerModal} /> <LaancModal modal={modal} handler={handlerModal} />
) : null} ) : null} */}
</> </>
) : null} ) : null}
</div> </div>

2
src/components/laanc/map/LaancDrawControl.js

@ -357,8 +357,10 @@ export const LaancDrawControl = props => {
const remainObj = drawObj const remainObj = drawObj
.getAll() .getAll()
.features.filter(o => o.properties.id !== 'BUFFER' && o.id !== id); .features.filter(o => o.properties.id !== 'BUFFER' && o.id !== id);
if (remainObj.length === 0) { if (remainObj.length === 0) {
props.handlerSaveCheck(false); props.handlerSaveCheck(false);
dispatch(drawTypeChangeAction('RESET'));
} else { } else {
props.handlerSaveCheck(true); props.handlerSaveCheck(true);
} }

2
src/components/map/mapbox/draw/LaancModal.js → src/components/laanc/map/LaancDrawModal.js

@ -1,6 +1,6 @@
import { Button, Modal, ModalHeader, ModalBody, ModalFooter } from 'reactstrap'; import { Button, Modal, ModalHeader, ModalBody, ModalFooter } from 'reactstrap';
export default function LaancModal({ modal, handler }) { export default function LaancDrawModal({ modal, handler }) {
const handlerDroneOneStop = () => { const handlerDroneOneStop = () => {
window.open('https://drone.onestop.go.kr/', '드론원스탑'); window.open('https://drone.onestop.go.kr/', '드론원스탑');
handler(); handler();
Loading…
Cancel
Save