Browse Source

.

pull/2/head
노승철 2 years ago
parent
commit
c0c2f14eaa
  1. 8
      src/components/map/naver/NaverMap.js
  2. 4
      src/components/map/naver/dron/DronHistory.js
  3. 4
      src/components/map/naver/dron/DronMarker.js
  4. 2
      src/components/map/naver/search/NaverMapSearch.js
  5. 5
      src/modules/control/gp/sagas/controlGpSaga.ts
  6. 786
      src/views/control/setting/ControlSetting.js

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

@ -32,9 +32,7 @@ export const NaverCustomMap = () => {
NaverMapInit(); NaverMapInit();
dispatch(controlGroupAuthAction.request()); dispatch(controlGroupAuthAction.request());
}, []); }, []);
useEffect(() => {
}, [mapObject]);
const NaverMapInit = () => { const NaverMapInit = () => {
const mapOptions = { const mapOptions = {
@ -80,8 +78,8 @@ export const NaverCustomMap = () => {
/> />
<FeatureAirZone map={mapObject} naver={naver} features={features} /> <FeatureAirZone map={mapObject} naver={naver} features={features} />
<NaverMapSearch map={mapObject} naver={naver} /> {/* <NaverMapSearch map={mapObject} naver={naver} /> */}
<SensorZone map={mapObject} naver={naver} /> {/* <SensorZone map={mapObject} naver={naver} /> */}
</> </>
) : null} ) : null}

4
src/components/map/naver/dron/DronHistory.js

@ -14,9 +14,7 @@ export const DronHistory = props => {
const dispatch = useDispatch(); const dispatch = useDispatch();
useEffect(() => { useEffect(() => {
// console.log('>>>', controlGpHistory);
// polylineRemove();
polylineInit(); polylineInit();
}, [controlGpHistory]); }, [controlGpHistory]);

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

@ -39,8 +39,8 @@ export const DronMarker = props => {
<DronToast <DronToast
title={`${gps.objectId} 비정상 상황 알림`} title={`${gps.objectId} 비정상 상황 알림`}
message={'경로 상에 비행 구역을 이탈했습니다.'} message={'경로 상에 비행 구역을 이탈했습니다.'}
/> />,
, { {
autoClose: 3000, autoClose: 3000,
hideProgressBar: true, hideProgressBar: true,
position: toast.POSITION.BOTTOM_RIGHT, position: toast.POSITION.BOTTOM_RIGHT,

2
src/components/map/naver/search/NaverMapSearch.js

@ -14,7 +14,7 @@ export const NaverMapSearch = props => {
var result = response.result, // 검색 결과의 컨테이너 var result = response.result, // 검색 결과의 컨테이너
items = result.items; // 검색 결과의 배열 items = result.items; // 검색 결과의 배열
console.log(result); // console.log(result);
// do Something // do Something
} }

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

@ -14,8 +14,7 @@ function* getControlGpSaga(
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.controlGroupAuthState;
const { controlGpFltPlanList } = state.controlGpFltPlanState;
const { controlGpHistory } = state.controlGpHisState; const { controlGpHistory } = state.controlGpHisState;
let gpsData: ControlGpData[] = []; let gpsData: ControlGpData[] = [];
@ -38,7 +37,7 @@ function* getControlGpSaga(
yield put( yield put(
Actions.controlGpAction.success({ Actions.controlGpAction.success({
controlGpList: data controlGpList: gpsData
}) })
); );

786
src/views/control/setting/ControlSetting.js

@ -5,544 +5,274 @@ import { CgTrees } from 'react-icons/cg';
import { VscRadioTower } from 'react-icons/vsc'; import { VscRadioTower } from 'react-icons/vsc';
import { useDispatch, useSelector } from 'react-redux'; import { useDispatch, useSelector } from 'react-redux';
import { import {
Button, Button,
InputGroup, InputGroup,
ButtonGroup, ButtonGroup,
InputGroupAddon, InputGroupAddon,
Input, Input,
CustomInput CustomInput
} from 'reactstrap'; } from 'reactstrap';
import { import {
areaClickAction, environmentClickAction, areaClickAction, environmentClickAction,
mapTypeChangeAction, sensorClickAction mapTypeChangeAction, sensorClickAction
} from '../../../modules/control/map/actions/controlMapActions'; } from '../../../modules/control/map/actions/controlMapActions';
const ControlSetting = props => { const ControlSetting = props => {
const dispatch = useDispatch(); const dispatch = useDispatch();
const mapControl = useSelector(state => state.controlMapReducer); const mapControl = useSelector(state => state.controlMapReducer);
// console.log('111111111111111'); const handlerMapType = val => {
// useEffect(() => { dispatch(mapTypeChangeAction(val));
// console.log('111111111111111'); };
// }, []);
useEffect(() => {
console.log('>>>>', mapControl);
}, [mapControl]);
const handlerMapType = val => { const handlerAreaClick = val => {
dispatch(mapTypeChangeAction(val)); dispatch(areaClickAction(val));
}; };
const handlerAreaClick = val => { const handlerSensorClick = (val, isChecked) => {
dispatch(areaClickAction(val)); if (isChecked) {
}; dispatch(sensorClickAction(val));
} else {
dispatch(sensorClickAction(''));
}
};
const handlerSensorClick = (val, isChecked) => { return (
if(isChecked){ <div className=''>
dispatch(sensorClickAction(val)); <div className='layer-content'>
} else { <div className='layer-ti'>
dispatch(sensorClickAction('')); <h4>지도유형</h4>
} {/* <button className='btn-icon' outline color='primary'><X size={20} /></button> */}
}; </div>
<div className='map-btn'>
return ( <ButtonGroup>
<div className=''> <Button
<div className='layer-content'> color={mapControl.mapType === 'HYBRID' ? 'primary' : ''}
<div className='layer-ti'> onClick={e => handlerMapType('HYBRID')}
<h4>지도유형</h4> >
{/* <button className='btn-icon' outline color='primary'><X size={20} /></button> */} 위성지도
</div> </Button>
<div className='map-btn'> <Button
<ButtonGroup> color={mapControl.mapType === 'NORMAL' ? 'primary' : ''}
<Button onClick={e => handlerMapType('NORMAL')}
color={mapControl.mapType === 'HYBRID' ? 'primary' : ''} >
onClick={e => handlerMapType('HYBRID')} 일반지도
> </Button>
위성지도 <Button
</Button> color={mapControl.mapType === 'TERRAIN' ? 'primary' : ''}
<Button onClick={e => handlerMapType('TERRAIN')}
color={mapControl.mapType === 'NORMAL' ? 'primary' : ''} >
onClick={e => handlerMapType('NORMAL')} 지형지도
> </Button>
일반지도 </ButtonGroup>
</Button> </div>
<Button </div>
color={mapControl.mapType === 'TERRAIN' ? 'primary' : ''} <div className='layer-content'>
onClick={e => handlerMapType('TERRAIN')} <div className='layer-ti'>
> <h4>공역 표출 정보</h4>
지형지도 </div>
</Button> <div className='layer-content-box'>
</ButtonGroup> <div className='layer-content-info layer-switch-list'>
</div> <dl>
</div> <dt>
{/* <div className='layer-content'> <div className='list-left-txt'>
<div className='layer-ti'> <span className='dot-icon color-red'></span>
<h4>지역검색</h4> </div>
</div> <div className='list-right-txt'>
<div className='layer-search'> <CustomInput
<InputGroup> onClick={e => handlerAreaClick('0001')}
<Input type='text' placeholder='검색어를 입력하세요' /> className='custom-control-primary'
<Button color='primary' outline> type='switch'
<Search size={18} /> id='test01'
</Button> name='test01'
</InputGroup> inline
</div> defaultChecked={mapControl.area0001}
</div> />
<div className='layer-content'> </div>
<div className='layer-ti'> </dt>
<h4>드론 중량</h4> <dt>
</div> <div className='list-left-txt'>
<div className='layer-content-box'> <span className='dot-icon color-pink'></span>
<div className='layer-content-info layer-switch-list'> </div>
<dl> <div className='list-right-txt'>
<dt> <CustomInput
<div className='list-left-txt'>전체</div> onClick={e => handlerAreaClick('0002')}
<div className='list-right-txt'> className='custom-control-primary'
<CustomInput type='switch'
onClick={e => console.log(1111)} id='test02'
className='custom-control-primary' name='test02'
type='switch' inline
id='test11' defaultChecked={mapControl.area0002}
name='test02' />
inline </div>
/> </dt>
</div> <dt>
</dt> <div className='list-left-txt'>
<dt> <span className='dot-icon color-orange'></span>()
<div className='list-left-txt'>250g 이하</div> </div>
<div className='list-right-txt'> <div className='list-right-txt'>
<CustomInput <CustomInput
className='custom-control-primary' onClick={e => handlerAreaClick('0003')}
type='switch' className='custom-control-primary'
id='test12' type='switch'
name='test02' id='test03'
inline name='test03'
/> inline
</div> defaultChecked={mapControl.area0003}
</dt> />
<dt> </div>
<div className='list-left-txt'>250g 초과~2kg 이하</div> </dt>
<div className='list-right-txt'> <dt>
<CustomInput <div className='list-left-txt'>
className='custom-control-primary' <span className='dot-icon color-brown'></span>()
type='switch' </div>
id='test13' <div className='list-right-txt'>
name='test03' <CustomInput
inline onClick={e => handlerAreaClick('0004')}
/> className='custom-control-primary'
</div> type='switch'
</dt> id='test04'
<dt> name='test04'
<div className='list-left-txt'>2kg 초과~7kg 이하</div> inline
<div className='list-right-txt'> defaultChecked={mapControl.area0004}
<CustomInput />
className='custom-control-primary' </div>
type='switch' </dt>
id='test14' <dt>
name='test04' <div className='list-left-txt'>
inline <span className='dot-icon color-purple'></span>
/> </div>
</div> <div className='list-right-txt'>
</dt> <CustomInput
<dt> onClick={e => handlerAreaClick('0005')}
<div className='list-left-txt'>7kg 초과~25kg 이하</div> className='custom-control-primary'
<div className='list-right-txt'> type='switch'
<CustomInput id='test05'
className='custom-control-primary' name='test05'
type='switch' inline
id='test15' defaultChecked={mapControl.area0005}
name='test05' />
inline </div>
/> </dt>
</div> <dt>
</dt> <div className='list-left-txt'>
<dt> <span className='dot-icon color-skyblue'></span>
<div className='list-left-txt'>25kg 초과~150kg 이하</div> 초경량비행장치공역
<div className='list-right-txt'> </div>
<CustomInput <div className='list-right-txt'>
className='custom-control-primary' <CustomInput
type='switch' onClick={e => handlerAreaClick('0006')}
id='test16' className='custom-control-primary'
name='test05' type='switch'
inline id='test06'
/> name='test06'
</div> inline
</dt> defaultChecked={mapControl.area0006}
</dl> />
</div> </div>
</div> </dt>
</div> </dl>
<div className='layer-content'> </div>
<div className='layer-ti'> </div>
<h4>드론 상태</h4> </div>
</div> {/* <div className='layer-content'>
<div className='layer-content-box'> <div className='layer-ti'>
<div className='layer-content-info layer-switch-list'> <h4>환경지표</h4>
<dl> </div>
<dt> <div className='layer-content-box'>
<div className='list-left-txt'>전체</div> <div className='layer-content-info layer-switch-list'>
<div className='list-right-txt'> <dl>
<CustomInput <dt>
className='custom-control-primary' <div className='list-left-txt'>
type='switch' <span className='dot-icon color-red'></span>(DUST)
id='test17' </div>
name='test02' <div className='list-right-txt'>
inline <CustomInput
/> onChange={e => handlerSensorClick('dust', e.target.checked)}
</div> className='custom-control-primary'
</dt> type='switch'
<dt> id='sensorDust'
<div className='list-left-txt'>Arming</div> name='sensorDust'
<div className='list-right-txt'> inline
<CustomInput checked={mapControl.sensor === 'dust'}
className='custom-control-primary' // defaultChecked={mapControl.sensor === 'dust'}
type='switch' />
id='test18' </div>
name='test02' </dt>
inline <dt>
/> <div className='list-left-txt'>
</div> <span className='dot-icon color-pink'></span>(O3)
</dt> </div>
<dt> <div className='list-right-txt'>
<div className='list-left-txt'>Landing</div> <CustomInput
<div className='list-right-txt'> onChange={e => handlerSensorClick('o3', e.target.checked)}
<CustomInput className='custom-control-primary'
className='custom-control-primary' type='switch'
type='switch' id='sensorO3'
id='test19' name='sensorO3'
name='test03' inline
inline checked={mapControl.sensor === 'o3'}
/> // defaultChecked={mapControl.sensor === 'o3'}
</div> />
</dt> </div>
<dt> </dt>
<div className='list-left-txt'>Take off</div> <dt>
<div className='list-right-txt'> <div className='list-left-txt'>
<CustomInput <span className='dot-icon color-orange'></span>(No2)
className='custom-control-primary' </div>
type='switch' <div className='list-right-txt'>
id='test20' <CustomInput
name='test04' onChange={e => handlerSensorClick('no2', e.target.checked)}
inline className='custom-control-primary'
/> type='switch'
</div> id='sensorNo2'
</dt> name='sensorNo2'
<dt> inline
<div className='list-left-txt'>Flight</div> checked={mapControl.sensor === 'no2'}
<div className='list-right-txt'> // defaultChecked={mapControl.sensor === 'no2'}
<CustomInput />
className='custom-control-primary' </div>
type='switch' </dt>
id='test21' <dt>
name='test05' <div className='list-left-txt'>
inline <span className='dot-icon color-brown'></span>(Co)
/> </div>
</div> <div className='list-right-txt'>
</dt> <CustomInput
</dl> onChange={e => handlerSensorClick('co', e.target.checked)}
</div> className='custom-control-primary'
</div> type='switch'
</div> */} id='sensorCo'
<div className='layer-content'> name='sensorCo'
<div className='layer-ti'> inline
<h4>공역 표출 정보</h4> checked={mapControl.sensor === 'co'}
</div> // defaultChecked={mapControl.sensor === 'co'}
<div className='layer-content-box'> />
<div className='layer-content-info layer-switch-list'> </div>
<dl> </dt>
<dt> <dt>
<div className='list-left-txt'> <div className='list-left-txt'>
<span className='dot-icon color-red'></span> <span className='dot-icon color-purple'></span>(So2)
</div> </div>
<div className='list-right-txt'> <div className='list-right-txt'>
<CustomInput <CustomInput
onClick={e => handlerAreaClick('0001')} onChange={e => handlerSensorClick('so2', e.target.checked)}
className='custom-control-primary' className='custom-control-primary'
type='switch' type='switch'
id='test01' id='sensorSo2'
name='test01' name='sensorSo2'
inline inline
defaultChecked={mapControl.area0001} checked={mapControl.sensor === 'so2'}
/> // defaultChecked={mapControl.sensor === 'so2'}
</div> />
</dt> </div>
<dt> </dt>
<div className='list-left-txt'> </dl>
<span className='dot-icon color-pink'></span> </div>
</div> </div>
<div className='list-right-txt'> </div> */}
<CustomInput
onClick={e => handlerAreaClick('0002')}
className='custom-control-primary'
type='switch'
id='test02'
name='test02'
inline
defaultChecked={mapControl.area0002}
/>
</div>
</dt>
<dt>
<div className='list-left-txt'>
<span className='dot-icon color-orange'></span>()
</div>
<div className='list-right-txt'>
<CustomInput
onClick={e => handlerAreaClick('0003')}
className='custom-control-primary'
type='switch'
id='test03'
name='test03'
inline
defaultChecked={mapControl.area0003}
/>
</div>
</dt>
<dt>
<div className='list-left-txt'>
<span className='dot-icon color-brown'></span>()
</div>
<div className='list-right-txt'>
<CustomInput
onClick={e => handlerAreaClick('0004')}
className='custom-control-primary'
type='switch'
id='test04'
name='test04'
inline
defaultChecked={mapControl.area0004}
/>
</div>
</dt>
<dt>
<div className='list-left-txt'>
<span className='dot-icon color-purple'></span>
</div>
<div className='list-right-txt'>
<CustomInput
onClick={e => handlerAreaClick('0005')}
className='custom-control-primary'
type='switch'
id='test05'
name='test05'
inline
defaultChecked={mapControl.area0005}
/>
</div>
</dt>
<dt>
<div className='list-left-txt'>
<span className='dot-icon color-skyblue'></span>
초경량비행장치공역
</div>
<div className='list-right-txt'>
<CustomInput
onClick={e => handlerAreaClick('0006')}
className='custom-control-primary'
type='switch'
id='test06'
name='test06'
inline
defaultChecked={mapControl.area0006}
/>
</div>
</dt>
</dl>
</div>
</div>
</div>
{/* <div className='layer-content'>
<div className='layer-ti'>
<h4>장애물 표출 정보</h4>
</div>
<div className='layer-content-box'>
<div className='layer-content-info layer-switch-list'>
<dl>
<dt>
<div className='list-left-txt'>
<BiGridAlt size={20} />
전체장애물
</div>
<div className='list-right-txt'>
<CustomInput
className='custom-control-primary'
type='switch'
id='test06'
name='test06'
inline
/>
</div>
</dt>
<dt>
<div className='list-left-txt'>
<BiBuildings size={22} />
고층 건물
</div>
<div className='list-right-txt'>
<CustomInput
className='custom-control-primary'
type='switch'
id='test07'
name='test06'
inline
/>
</div>
</dt>
<dt>
<div className='list-left-txt'>
<VscRadioTower size={22} />
송전탑
</div>
<div className='list-right-txt'>
<CustomInput
className='custom-control-primary'
type='switch'
id='test08'
name='test06'
inline
/>
</div>
</dt>
<dt>
<div className='list-left-txt'>
<CgTrees size={22} />
국립공원
</div>
<div className='list-right-txt'>
<CustomInput
className='custom-control-primary'
type='switch'
id='test09'
name='test06'
inline
/>
</div>
</dt>
</dl>
</div>
</div>
</div>
<div className='layer-content'>
<div className='layer-ti'>
<h4>NOTAM 정보</h4>
</div>
<div className='layer-content-box'>
<div className='layer-content-info layer-switch-list'>
<dl>
<dt>
<div className='list-left-txt'>NOTAM</div>
<div className='list-right-txt'>
<CustomInput
className='custom-control-primary'
type='switch'
id='test10'
name='test06'
inline
/>
</div>
</dt>
</dl>
</div>
</div>
</div> */}
<div className='layer-content'>
<div className='layer-ti'>
<h4>환경지표</h4>
</div>
<div className='layer-content-box'>
<div className='layer-content-info layer-switch-list'>
<dl>
<dt>
<div className='list-left-txt'>
<span className='dot-icon color-red'></span>(DUST)
</div>
<div className='list-right-txt'>
<CustomInput
onChange={e => handlerSensorClick('dust', e.target.checked)}
className='custom-control-primary'
type='switch'
id='sensorDust'
name='sensorDust'
inline
checked={mapControl.sensor === 'dust'}
// defaultChecked={mapControl.sensor === 'dust'}
/>
</div>
</dt>
<dt>
<div className='list-left-txt'>
<span className='dot-icon color-pink'></span>(O3)
</div>
<div className='list-right-txt'>
<CustomInput
onChange={e => handlerSensorClick('o3', e.target.checked)}
className='custom-control-primary'
type='switch'
id='sensorO3'
name='sensorO3'
inline
checked={mapControl.sensor === 'o3'}
// defaultChecked={mapControl.sensor === 'o3'}
/>
</div>
</dt>
<dt>
<div className='list-left-txt'>
<span className='dot-icon color-orange'></span>(No2)
</div>
<div className='list-right-txt'>
<CustomInput
onChange={e => handlerSensorClick('no2', e.target.checked)}
className='custom-control-primary'
type='switch'
id='sensorNo2'
name='sensorNo2'
inline
checked={mapControl.sensor === 'no2'}
// defaultChecked={mapControl.sensor === 'no2'}
/>
</div>
</dt>
<dt>
<div className='list-left-txt'>
<span className='dot-icon color-brown'></span>(Co)
</div>
<div className='list-right-txt'>
<CustomInput
onChange={e => handlerSensorClick('co', e.target.checked)}
className='custom-control-primary'
type='switch'
id='sensorCo'
name='sensorCo'
inline
checked={mapControl.sensor === 'co'}
// defaultChecked={mapControl.sensor === 'co'}
/>
</div>
</dt>
<dt>
<div className='list-left-txt'>
<span className='dot-icon color-purple'></span>(So2)
</div>
<div className='list-right-txt'>
<CustomInput
onChange={e => handlerSensorClick('so2', e.target.checked)}
className='custom-control-primary'
type='switch'
id='sensorSo2'
name='sensorSo2'
inline
checked={mapControl.sensor === 'so2'}
// defaultChecked={mapControl.sensor === 'so2'}
/>
</div>
</dt>
</dl>
</div>
</div> </div>
</div> );
</div>
);
}; };
export default ControlSetting; export default ControlSetting;

Loading…
Cancel
Save