Browse Source

.

feature/auth
노승철 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();
dispatch(controlGroupAuthAction.request());
}, []);
useEffect(() => {
}, [mapObject]);
const NaverMapInit = () => {
const mapOptions = {
@ -80,8 +78,8 @@ export const NaverCustomMap = () => {
/>
<FeatureAirZone map={mapObject} naver={naver} features={features} />
<NaverMapSearch map={mapObject} naver={naver} />
<SensorZone map={mapObject} naver={naver} />
{/* <NaverMapSearch map={mapObject} naver={naver} /> */}
{/* <SensorZone map={mapObject} naver={naver} /> */}
</>
) : null}

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

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

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

@ -39,8 +39,8 @@ export const DronMarker = props => {
<DronToast
title={`${gps.objectId} 비정상 상황 알림`}
message={'경로 상에 비행 구역을 이탈했습니다.'}
/>
, {
/>,
{
autoClose: 3000,
hideProgressBar: true,
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, // 검색 결과의 컨테이너
items = result.items; // 검색 결과의 배열
console.log(result);
// console.log(result);
// do Something
}

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

@ -14,8 +14,7 @@ function* getControlGpSaga(
const data = action.payload;
const state = yield select();
const { objectId, isClickObject } = state.controlMapReducer;
const { controlGroupAuthInfo } = state.controlGroupAuthState;
const { controlGpFltPlanList } = state.controlGpFltPlanState;
const { controlGroupAuthInfo } = state.controlGroupAuthState;
const { controlGpHistory } = state.controlGpHisState;
let gpsData: ControlGpData[] = [];
@ -38,7 +37,7 @@ function* getControlGpSaga(
yield put(
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 { useDispatch, useSelector } from 'react-redux';
import {
Button,
InputGroup,
ButtonGroup,
InputGroupAddon,
Input,
CustomInput
Button,
InputGroup,
ButtonGroup,
InputGroupAddon,
Input,
CustomInput
} from 'reactstrap';
import {
areaClickAction, environmentClickAction,
mapTypeChangeAction, sensorClickAction
areaClickAction, environmentClickAction,
mapTypeChangeAction, sensorClickAction
} from '../../../modules/control/map/actions/controlMapActions';
const ControlSetting = props => {
const dispatch = useDispatch();
const dispatch = useDispatch();
const mapControl = useSelector(state => state.controlMapReducer);
const mapControl = useSelector(state => state.controlMapReducer);
// console.log('111111111111111');
// useEffect(() => {
// console.log('111111111111111');
// }, []);
useEffect(() => {
console.log('>>>>', mapControl);
}, [mapControl]);
const handlerMapType = val => {
dispatch(mapTypeChangeAction(val));
};
const handlerMapType = val => {
dispatch(mapTypeChangeAction(val));
};
const handlerAreaClick = val => {
dispatch(areaClickAction(val));
};
const handlerAreaClick = val => {
dispatch(areaClickAction(val));
};
const handlerSensorClick = (val, isChecked) => {
if (isChecked) {
dispatch(sensorClickAction(val));
} else {
dispatch(sensorClickAction(''));
}
};
const handlerSensorClick = (val, isChecked) => {
if(isChecked){
dispatch(sensorClickAction(val));
} else {
dispatch(sensorClickAction(''));
}
};
return (
<div className=''>
<div className='layer-content'>
<div className='layer-ti'>
<h4>지도유형</h4>
{/* <button className='btn-icon' outline color='primary'><X size={20} /></button> */}
</div>
<div className='map-btn'>
<ButtonGroup>
<Button
color={mapControl.mapType === 'HYBRID' ? 'primary' : ''}
onClick={e => handlerMapType('HYBRID')}
>
위성지도
</Button>
<Button
color={mapControl.mapType === 'NORMAL' ? 'primary' : ''}
onClick={e => handlerMapType('NORMAL')}
>
일반지도
</Button>
<Button
color={mapControl.mapType === 'TERRAIN' ? 'primary' : ''}
onClick={e => handlerMapType('TERRAIN')}
>
지형지도
</Button>
</ButtonGroup>
</div>
</div>
{/* <div className='layer-content'>
<div className='layer-ti'>
<h4>지역검색</h4>
</div>
<div className='layer-search'>
<InputGroup>
<Input type='text' placeholder='검색어를 입력하세요' />
<Button color='primary' outline>
<Search size={18} />
</Button>
</InputGroup>
</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'>전체</div>
<div className='list-right-txt'>
<CustomInput
onClick={e => console.log(1111)}
className='custom-control-primary'
type='switch'
id='test11'
name='test02'
inline
/>
</div>
</dt>
<dt>
<div className='list-left-txt'>250g 이하</div>
<div className='list-right-txt'>
<CustomInput
className='custom-control-primary'
type='switch'
id='test12'
name='test02'
inline
/>
</div>
</dt>
<dt>
<div className='list-left-txt'>250g 초과~2kg 이하</div>
<div className='list-right-txt'>
<CustomInput
className='custom-control-primary'
type='switch'
id='test13'
name='test03'
inline
/>
</div>
</dt>
<dt>
<div className='list-left-txt'>2kg 초과~7kg 이하</div>
<div className='list-right-txt'>
<CustomInput
className='custom-control-primary'
type='switch'
id='test14'
name='test04'
inline
/>
</div>
</dt>
<dt>
<div className='list-left-txt'>7kg 초과~25kg 이하</div>
<div className='list-right-txt'>
<CustomInput
className='custom-control-primary'
type='switch'
id='test15'
name='test05'
inline
/>
</div>
</dt>
<dt>
<div className='list-left-txt'>25kg 초과~150kg 이하</div>
<div className='list-right-txt'>
<CustomInput
className='custom-control-primary'
type='switch'
id='test16'
name='test05'
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'>전체</div>
<div className='list-right-txt'>
<CustomInput
className='custom-control-primary'
type='switch'
id='test17'
name='test02'
inline
/>
</div>
</dt>
<dt>
<div className='list-left-txt'>Arming</div>
<div className='list-right-txt'>
<CustomInput
className='custom-control-primary'
type='switch'
id='test18'
name='test02'
inline
/>
</div>
</dt>
<dt>
<div className='list-left-txt'>Landing</div>
<div className='list-right-txt'>
<CustomInput
className='custom-control-primary'
type='switch'
id='test19'
name='test03'
inline
/>
</div>
</dt>
<dt>
<div className='list-left-txt'>Take off</div>
<div className='list-right-txt'>
<CustomInput
className='custom-control-primary'
type='switch'
id='test20'
name='test04'
inline
/>
</div>
</dt>
<dt>
<div className='list-left-txt'>Flight</div>
<div className='list-right-txt'>
<CustomInput
className='custom-control-primary'
type='switch'
id='test21'
name='test05'
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>
</div>
<div className='list-right-txt'>
<CustomInput
onClick={e => handlerAreaClick('0001')}
className='custom-control-primary'
type='switch'
id='test01'
name='test01'
inline
defaultChecked={mapControl.area0001}
/>
</div>
</dt>
<dt>
<div className='list-left-txt'>
<span className='dot-icon color-pink'></span>
</div>
<div className='list-right-txt'>
<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>
return (
<div className=''>
<div className='layer-content'>
<div className='layer-ti'>
<h4>지도유형</h4>
{/* <button className='btn-icon' outline color='primary'><X size={20} /></button> */}
</div>
<div className='map-btn'>
<ButtonGroup>
<Button
color={mapControl.mapType === 'HYBRID' ? 'primary' : ''}
onClick={e => handlerMapType('HYBRID')}
>
위성지도
</Button>
<Button
color={mapControl.mapType === 'NORMAL' ? 'primary' : ''}
onClick={e => handlerMapType('NORMAL')}
>
일반지도
</Button>
<Button
color={mapControl.mapType === 'TERRAIN' ? 'primary' : ''}
onClick={e => handlerMapType('TERRAIN')}
>
지형지도
</Button>
</ButtonGroup>
</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>
</div>
<div className='list-right-txt'>
<CustomInput
onClick={e => handlerAreaClick('0001')}
className='custom-control-primary'
type='switch'
id='test01'
name='test01'
inline
defaultChecked={mapControl.area0001}
/>
</div>
</dt>
<dt>
<div className='list-left-txt'>
<span className='dot-icon color-pink'></span>
</div>
<div className='list-right-txt'>
<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'>
<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>
</div>
);
);
};
export default ControlSetting;

Loading…
Cancel
Save