Browse Source

testDraw삭제

pull/2/head
junh_eee(이준희) 10 months ago
parent
commit
80d4ef52a5
  1. 684
      src/components/laanc/map/LaancAreaMap.js
  2. 66
      src/views/testDraw/alarm/ControlAlarmList.js
  3. 45
      src/views/testDraw/alarm/ControlAlarmNotice.js
  4. 18
      src/views/testDraw/index.js
  5. 212
      src/views/testDraw/main/ControlMainDraw.js
  6. 10
      src/views/testDraw/menu/ControlMenuLeft.js
  7. 218
      src/views/testDraw/report/ControlReportDetail.js
  8. 109
      src/views/testDraw/report/ControlReportList.js
  9. 188
      src/views/testDraw/setting/ControlSetting.js
  10. 233
      src/views/testDraw/weather/WeatherList.js

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

@ -327,688 +327,6 @@ export default function LaancAreaMap({
<div style={{ position: 'relative' }}>
<LaancMapSearch mapObject={mapObject} />
<div className='d-flex coords-wrap'>
<div class='coords-box'>
<div>
<h6 class='ti'>비행구역 1</h6>
<div class='coords-box-scroll'>
<div class='coords-box-list'>
<span>
<span>126.6054434, 37.5205384</span>
<span class='etc'>/</span>
<span>126.6054863, 37.5174068</span>
</span>
</div>
<div class='coords-box-list'>
<span>
<span>126.6100569, 37.5203171</span>
<span class='etc'>/</span>
<span>126.61025, 37.5177812</span>
</span>
</div>
<div class='coords-box-list'>
<span>
<span>126.614842, 37.5197725</span>
<span class='etc'>/</span>
<span>126.6132756, 37.5221552</span>
</span>
</div>
<div class='coords-box-list'>
<span>
<span>126.6183182, 37.5214744</span>
</span>
</div>
</div>
</div>
</div>
<div class='coords-box'>
<div>
<h6 class='ti'>비행구역 2</h6>
<div class='coords-box-scroll'>
<div class='coords-box-list'>
<span>
<span>126.6054434, 37.5205384</span>
<span class='etc'>/</span>
<span>126.6054863, 37.5174068</span>
</span>
</div>
<div class='coords-box-list'>
<span>
<span>126.6100569, 37.5203171</span>
<span class='etc'>/</span>
<span>126.61025, 37.5177812</span>
</span>
</div>
<div class='coords-box-list'>
<span>
<span>126.614842, 37.5197725</span>
<span class='etc'>/</span>
<span>126.6132756, 37.5221552</span>
</span>
</div>
<div class='coords-box-list'>
<span>
<span>126.6183182, 37.5214744</span>
</span>
</div>
</div>
</div>
</div>
<div class='coords-box'>
<div>
<h6 class='ti'>비행구역 3</h6>
<div class='coords-box-scroll'>
<div class='coords-box-list'>
<span>
<span>126.6054434, 37.5205384</span>
<span class='etc'>/</span>
<span>126.6054863, 37.5174068</span>
</span>
</div>
<div class='coords-box-list'>
<span>
<span>126.6100569, 37.5203171</span>
<span class='etc'>/</span>
<span>126.61025, 37.5177812</span>
</span>
</div>
<div class='coords-box-list'>
<span>
<span>126.614842, 37.5197725</span>
<span class='etc'>/</span>
<span>126.6132756, 37.5221552</span>
</span>
</div>
<div class='coords-box-list'>
<span>
<span>126.6183182, 37.5214744</span>
</span>
</div>
</div>
</div>
</div>
<div class='coords-box'>
<div>
<h6 class='ti'>비행구역 4</h6>
<div class='coords-box-scroll'>
<div class='coords-box-list'>
<span>
<span>126.6054434, 37.5205384</span>
<span class='etc'>/</span>
<span>126.6054863, 37.5174068</span>
</span>
</div>
<div class='coords-box-list'>
<span>
<span>126.6100569, 37.5203171</span>
<span class='etc'>/</span>
<span>126.61025, 37.5177812</span>
</span>
</div>
<div class='coords-box-list'>
<span>
<span>126.614842, 37.5197725</span>
<span class='etc'>/</span>
<span>126.6132756, 37.5221552</span>
</span>
</div>
<div class='coords-box-list'>
<span>
<span>126.6183182, 37.5214744</span>
</span>
</div>
</div>
</div>
</div>
<div class='coords-box'>
<div>
<h6 class='ti'>비행구역 5</h6>
<div class='coords-box-scroll'>
<div class='coords-box-list'>
<span>
<span>126.6054434, 37.5205384</span>
<span class='etc'>/</span>
<span>126.6054863, 37.5174068</span>
</span>
</div>
<div class='coords-box-list'>
<span>
<span>126.6100569, 37.5203171</span>
<span class='etc'>/</span>
<span>126.61025, 37.5177812</span>
</span>
</div>
<div class='coords-box-list'>
<span>
<span>126.614842, 37.5197725</span>
<span class='etc'>/</span>
<span>126.6132756, 37.5221552</span>
</span>
</div>
<div class='coords-box-list'>
<span>
<span>126.6183182, 37.5214744</span>
</span>
</div>
</div>
</div>
</div>
<div class='coords-box'>
<div>
<h6 class='ti'>비행구역 6</h6>
<div class='coords-box-scroll'>
<div class='coords-box-list'>
<span>
<span>126.6054434, 37.5205384</span>
<span class='etc'>/</span>
<span>126.6054863, 37.5174068</span>
</span>
</div>
<div class='coords-box-list'>
<span>
<span>126.6100569, 37.5203171</span>
<span class='etc'>/</span>
<span>126.61025, 37.5177812</span>
</span>
</div>
<div class='coords-box-list'>
<span>
<span>126.614842, 37.5197725</span>
<span class='etc'>/</span>
<span>126.6132756, 37.5221552</span>
</span>
</div>
<div class='coords-box-list'>
<span>
<span>126.6183182, 37.5214744</span>
</span>
</div>
</div>
</div>
</div>
<div class='coords-box'>
<div>
<h6 class='ti'>비행구역 7</h6>
<div class='coords-box-scroll'>
<div class='coords-box-list'>
<span>
<span>126.6054434, 37.5205384</span>
<span class='etc'>/</span>
<span>126.6054863, 37.5174068</span>
</span>
</div>
<div class='coords-box-list'>
<span>
<span>126.6100569, 37.5203171</span>
<span class='etc'>/</span>
<span>126.61025, 37.5177812</span>
</span>
</div>
<div class='coords-box-list'>
<span>
<span>126.614842, 37.5197725</span>
<span class='etc'>/</span>
<span>126.6132756, 37.5221552</span>
</span>
</div>
<div class='coords-box-list'>
<span>
<span>126.6183182, 37.5214744</span>
</span>
</div>
</div>
</div>
</div>
<div class='coords-box'>
<div>
<h6 class='ti'>비행구역 8</h6>
<div class='coords-box-scroll'>
<div class='coords-box-list'>
<span>
<span>126.6054434, 37.5205384</span>
<span class='etc'>/</span>
<span>126.6054863, 37.5174068</span>
</span>
</div>
<div class='coords-box-list'>
<span>
<span>126.6100569, 37.5203171</span>
<span class='etc'>/</span>
<span>126.61025, 37.5177812</span>
</span>
</div>
<div class='coords-box-list'>
<span>
<span>126.614842, 37.5197725</span>
<span class='etc'>/</span>
<span>126.6132756, 37.5221552</span>
</span>
</div>
<div class='coords-box-list'>
<span>
<span>126.6183182, 37.5214744</span>
</span>
</div>
</div>
</div>
</div>
<div class='coords-box'>
<div>
<h6 class='ti'>비행구역 9</h6>
<div class='coords-box-scroll'>
<div class='coords-box-list'>
<span>
<span>126.6054434, 37.5205384</span>
<span class='etc'>/</span>
<span>126.6054863, 37.5174068</span>
</span>
</div>
<div class='coords-box-list'>
<span>
<span>126.6100569, 37.5203171</span>
<span class='etc'>/</span>
<span>126.61025, 37.5177812</span>
</span>
</div>
<div class='coords-box-list'>
<span>
<span>126.614842, 37.5197725</span>
<span class='etc'>/</span>
<span>126.6132756, 37.5221552</span>
</span>
</div>
<div class='coords-box-list'>
<span>
<span>126.6183182, 37.5214744</span>
</span>
</div>
</div>
</div>
</div>
<div class='coords-box'>
<div>
<h6 class='ti'>비행구역 10</h6>
<div class='coords-box-scroll'>
<div class='coords-box-list'>
<span>
<span>126.6054434, 37.5205384</span>
<span class='etc'>/</span>
<span>126.6054863, 37.5174068</span>
</span>
</div>
<div class='coords-box-list'>
<span>
<span>126.6100569, 37.5203171</span>
<span class='etc'>/</span>
<span>126.61025, 37.5177812</span>
</span>
</div>
<div class='coords-box-list'>
<span>
<span>126.614842, 37.5197725</span>
<span class='etc'>/</span>
<span>126.6132756, 37.5221552</span>
</span>
</div>
<div class='coords-box-list'>
<span>
<span>126.6183182, 37.5214744</span>
</span>
</div>
</div>
</div>
</div>
<div class='coords-box'>
<div>
<h6 class='ti'>비행구역 11</h6>
<div class='coords-box-scroll'>
<div class='coords-box-list'>
<span>
<span>126.6054434, 37.5205384</span>
<span class='etc'>/</span>
<span>126.6054863, 37.5174068</span>
</span>
</div>
<div class='coords-box-list'>
<span>
<span>126.6100569, 37.5203171</span>
<span class='etc'>/</span>
<span>126.61025, 37.5177812</span>
</span>
</div>
<div class='coords-box-list'>
<span>
<span>126.614842, 37.5197725</span>
<span class='etc'>/</span>
<span>126.6132756, 37.5221552</span>
</span>
</div>
<div class='coords-box-list'>
<span>
<span>126.6183182, 37.5214744</span>
</span>
</div>
</div>
</div>
</div>
<div class='coords-box'>
<div>
<h6 class='ti'>비행구역 12</h6>
<div class='coords-box-scroll'>
<div class='coords-box-list'>
<span>
<span>126.6054434, 37.5205384</span>
<span class='etc'>/</span>
<span>126.6054863, 37.5174068</span>
</span>
</div>
<div class='coords-box-list'>
<span>
<span>126.6100569, 37.5203171</span>
<span class='etc'>/</span>
<span>126.61025, 37.5177812</span>
</span>
</div>
<div class='coords-box-list'>
<span>
<span>126.614842, 37.5197725</span>
<span class='etc'>/</span>
<span>126.6132756, 37.5221552</span>
</span>
</div>
<div class='coords-box-list'>
<span>
<span>126.6183182, 37.5214744</span>
</span>
</div>
</div>
</div>
</div>
<div class='coords-box'>
<div>
<h6 class='ti'>비행구역 13</h6>
<div class='coords-box-scroll'>
<div class='coords-box-list'>
<span>
<span>126.6054434, 37.5205384</span>
<span class='etc'>/</span>
<span>126.6054863, 37.5174068</span>
</span>
</div>
<div class='coords-box-list'>
<span>
<span>126.6100569, 37.5203171</span>
<span class='etc'>/</span>
<span>126.61025, 37.5177812</span>
</span>
</div>
<div class='coords-box-list'>
<span>
<span>126.614842, 37.5197725</span>
<span class='etc'>/</span>
<span>126.6132756, 37.5221552</span>
</span>
</div>
<div class='coords-box-list'>
<span>
<span>126.6183182, 37.5214744</span>
</span>
</div>
</div>
</div>
</div>
<div class='coords-box'>
<div>
<h6 class='ti'>비행구역 14</h6>
<div class='coords-box-scroll'>
<div class='coords-box-list'>
<span>
<span>126.6054434, 37.5205384</span>
<span class='etc'>/</span>
<span>126.6054863, 37.5174068</span>
</span>
</div>
<div class='coords-box-list'>
<span>
<span>126.6100569, 37.5203171</span>
<span class='etc'>/</span>
<span>126.61025, 37.5177812</span>
</span>
</div>
<div class='coords-box-list'>
<span>
<span>126.614842, 37.5197725</span>
<span class='etc'>/</span>
<span>126.6132756, 37.5221552</span>
</span>
</div>
<div class='coords-box-list'>
<span>
<span>126.6183182, 37.5214744</span>
</span>
</div>
</div>
</div>
</div>
<div class='coords-box'>
<div>
<h6 class='ti'>비행구역 15</h6>
<div class='coords-box-scroll'>
<div class='coords-box-list'>
<span>
<span>126.6054434, 37.5205384</span>
<span class='etc'>/</span>
<span>126.6054863, 37.5174068</span>
</span>
</div>
<div class='coords-box-list'>
<span>
<span>126.6100569, 37.5203171</span>
<span class='etc'>/</span>
<span>126.61025, 37.5177812</span>
</span>
</div>
<div class='coords-box-list'>
<span>
<span>126.614842, 37.5197725</span>
<span class='etc'>/</span>
<span>126.6132756, 37.5221552</span>
</span>
</div>
<div class='coords-box-list'>
<span>
<span>126.6183182, 37.5214744</span>
</span>
</div>
</div>
</div>
</div>
<div class='coords-box'>
<div>
<h6 class='ti'>비행구역 16</h6>
<div class='coords-box-scroll'>
<div class='coords-box-list'>
<span>
<span>126.6054434, 37.5205384</span>
<span class='etc'>/</span>
<span>126.6054863, 37.5174068</span>
</span>
</div>
<div class='coords-box-list'>
<span>
<span>126.6100569, 37.5203171</span>
<span class='etc'>/</span>
<span>126.61025, 37.5177812</span>
</span>
</div>
<div class='coords-box-list'>
<span>
<span>126.614842, 37.5197725</span>
<span class='etc'>/</span>
<span>126.6132756, 37.5221552</span>
</span>
</div>
<div class='coords-box-list'>
<span>
<span>126.6183182, 37.5214744</span>
</span>
</div>
</div>
</div>
</div>
<div class='coords-box'>
<div>
<h6 class='ti'>비행구역 17</h6>
<div class='coords-box-scroll'>
<div class='coords-box-list'>
<span>
<span>126.6054434, 37.5205384</span>
<span class='etc'>/</span>
<span>126.6054863, 37.5174068</span>
</span>
</div>
<div class='coords-box-list'>
<span>
<span>126.6100569, 37.5203171</span>
<span class='etc'>/</span>
<span>126.61025, 37.5177812</span>
</span>
</div>
<div class='coords-box-list'>
<span>
<span>126.614842, 37.5197725</span>
<span class='etc'>/</span>
<span>126.6132756, 37.5221552</span>
</span>
</div>
<div class='coords-box-list'>
<span>
<span>126.6183182, 37.5214744</span>
</span>
</div>
</div>
</div>
</div>
<div class='coords-box'>
<div>
<h6 class='ti'>비행구역 18</h6>
<div class='coords-box-scroll'>
<div class='coords-box-list'>
<span>
<span>126.6054434, 37.5205384</span>
<span class='etc'>/</span>
<span>126.6054863, 37.5174068</span>
</span>
</div>
<div class='coords-box-list'>
<span>
<span>126.6100569, 37.5203171</span>
<span class='etc'>/</span>
<span>126.61025, 37.5177812</span>
</span>
</div>
<div class='coords-box-list'>
<span>
<span>126.614842, 37.5197725</span>
<span class='etc'>/</span>
<span>126.6132756, 37.5221552</span>
</span>
</div>
<div class='coords-box-list'>
<span>
<span>126.6183182, 37.5214744</span>
</span>
</div>
</div>
</div>
</div>
<div class='coords-box'>
<div>
<h6 class='ti'>비행구역 19</h6>
<div class='coords-box-scroll'>
<div class='coords-box-list'>
<span>
<span>126.6054434, 37.5205384</span>
<span class='etc'>/</span>
<span>126.6054863, 37.5174068</span>
</span>
</div>
<div class='coords-box-list'>
<span>
<span>126.6100569, 37.5203171</span>
<span class='etc'>/</span>
<span>126.61025, 37.5177812</span>
</span>
</div>
<div class='coords-box-list'>
<span>
<span>126.614842, 37.5197725</span>
<span class='etc'>/</span>
<span>126.6132756, 37.5221552</span>
</span>
</div>
<div class='coords-box-list'>
<span>
<span>126.6183182, 37.5214744</span>
</span>
</div>
</div>
</div>
</div>
<div class='coords-box'>
<div>
<h6 class='ti'>비행구역 20</h6>
<div class='coords-box-scroll'>
<div class='coords-box-list'>
<span>
<span>126.6054434, 37.5205384</span>
<span class='etc'>/</span>
<span>126.6054863, 37.5174068</span>
</span>
</div>
<div class='coords-box-list'>
<span>
<span>126.6100569, 37.5203171</span>
<span class='etc'>/</span>
<span>126.61025, 37.5177812</span>
</span>
</div>
<div class='coords-box-list'>
<span>
<span>126.614842, 37.5197725</span>
<span class='etc'>/</span>
<span>126.6132756, 37.5221552</span>
</span>
</div>
<div class='coords-box-list'>
<span>
<span>126.6183182, 37.5214744</span>
</span>
</div>
</div>
</div>
</div>
</div>
{/* <div className='d-flex coords-wrap'>
{viewCoordObj?.map((obj, i) => {
let coord =
obj.properties.id === 'LINE'
@ -1075,7 +393,7 @@ export default function LaancAreaMap({
</div>
);
})}
</div> */}
</div>
<div
id='detail'

66
src/views/testDraw/alarm/ControlAlarmList.js

@ -1,66 +0,0 @@
import { X } from 'react-feather';
const ControlAlarmList = props => {
return (
<div className='left-layer'>
<div className='layer-content'>
<div className='layer-ti'>
<h4>알림 리스트</h4>
<button
className='btn-icon'
outline
color='primary'
onClick={() => props.setOpenAlarmList(false)}
>
<X size={20} />
</button>
</div>
<div className='layer-content-list'>
<dl className='notice-list'>
<dt>
<div className='list-ti'>
<div className='list-left-txt'>전체 2000</div>
<div className='list-right-txt'>오늘 120</div>
</div>
</dt>
</dl>
</div>
</div>
<div className='layer-content'>
<div className='layer-ti'>
<h4>알림 목록</h4>
</div>
<div className='layer-content-list'>
<dl className='notice-list'>
<dt>
<div className='list-ti'>
<div className='list-left-txt'>통신 장애 알림</div>
<div className='list-right-txt'>6 17</div>
</div>
<div className='list-txt'>
통신장애 통신장애 통신장애 통신장애 통신장애 통신장애 통신장애
통신장애 통신장애{' '}
</div>
</dt>
</dl>
</div>
<div className='layer-content-list'>
<dl className='notice-list'>
<dt>
<div className='list-ti'>
<div className='list-left-txt'>비행 경로 이탈</div>
<div className='list-right-txt'>6 17</div>
</div>
<div className='list-txt'>
비행경로이탈 비행경로이탈 비행경로이탈 비행경로이탈 비행경로이탈
비행경로이탈 비행경로이탈 비행경로이탈 비행경로이탈 비행경로이탈
</div>
</dt>
</dl>
</div>
</div>
</div>
);
};
export default ControlAlarmList;

45
src/views/testDraw/alarm/ControlAlarmNotice.js

@ -1,45 +0,0 @@
import { Bell, ChevronDown, ChevronUp } from "react-feather";
import { ReactComponent as DroneMenuIcon } from '../../../assets/images/drone_menu_icon.svg';
const ControlAlarmNotice = () => {
{/* 알림 위아래 롤링은 구현해주셔야되는데 따른 컴포넌트있으면 그거사용해도됩니다...제가 만들어논거는 45px씩 움직여주면되거든요..저도자세히는모르겠습니다...제이쿼리로만써봐서... */}
return(
<div>
{/* <div className='notice'>
<div className='notice-icon'>
<Bell size={20} />
</div>
<div className='notice-txt'>
<dl>
<dt>
<span className='time'>2021-06-17 12:00:00</span>AVSF123
지역에 접근하였습니다111.
</dt>
<dt>
<span className='time'>2021-06-30 13:00:00</span>AVSF123
비행금지구역에 접근하였습니다.
</dt>
<dt>
<span className='time'>2021-08-20 14:00:00</span>AVSF123
국립공원구역에 접근하였습니다.
</dt>
</dl>
</div>
<div className='notice-btn'>
<button>
<ChevronUp size={15} />
</button>
<button>
<ChevronDown size={15} />
</button>
</div>
</div> */}
</div>
)
}
export default ControlAlarmNotice;

18
src/views/testDraw/index.js

@ -1,18 +0,0 @@
import React, { useEffect, useState } from 'react';
import { MapControlDraw } from '../../components/mapDraw/MapControlDraw';
// import { WebsocketClient } from '../../components/websocket/WebsocketClient';
import ControlMainDraw from './main/ControlMainDraw';
const ControlViewDraw = () => {
return (
<div className='pal-container'>
<div className='map'>
<MapControlDraw />
</div>
<ControlMainDraw />
</div>
);
};
export default ControlViewDraw;

212
src/views/testDraw/main/ControlMainDraw.js

@ -1,212 +0,0 @@
import React, { useEffect, useState } from 'react';
import '../../../assets/css/custom.css';
import logo from '../../../assets/images/pal_logo.png';
import { Sun, Map, Bell, Check } from 'react-feather';
import { AiOutlinePoweroff } from 'react-icons/ai';
import { ReactComponent as DroneMenuIcon } from '../../../assets/images/drone_menu_icon.svg';
import ControlAlarmNotice from '../alarm/ControlAlarmNotice';
import ControlReportList from '../report/ControlReportList';
import ControlReportDetail from '../report/ControlReportDetail';
import WeatherList from '../weather/WeatherList';
import ControlAlarmList from '../alarm/ControlAlarmList';
import ControlSetting from '../setting/ControlSetting';
import WebsocketClient from '../../../components/websocket/WebsocketClient';
import { useDispatch, useSelector } from 'react-redux';
import * as Actions from '../../../modules/account/login/actions/authAction';
import {
ButtonGroup,
Button,
Badge,
CustomInput,
Input,
Label,
InputGroup
} from 'reactstrap';
import {
drawTypeChangeAction,
drawCheckAction
} from '../../../modules/control/map/actions/controlMapActions';
const ControlMainDraw = () => {
const dispatch = useDispatch();
const { isClickObject } = useSelector(state => state.controlMapReducer);
const [oepnReportList, setOpenReportList] = useState(false);
const [openReportDetail, setOpenReportDetail] = useState(false);
const [openWeatherList, setOpenWeatherList] = useState(false);
const [openAlarmList, setOpenAlarmList] = useState(false);
const [openSetting, setOpenSetting] = useState(false);
const mapControl = useSelector(state => state.controlMapReducer);
const openMenu = val => {
if (val === 'reportList') {
setOpenReportList(true);
setOpenReportDetail(false);
setOpenWeatherList(false);
setOpenAlarmList(false);
} else if (val === 'weatherList') {
setOpenReportList(false);
setOpenReportDetail(false);
setOpenWeatherList(true);
setOpenAlarmList(false);
} else if (val === 'alarmList') {
setOpenReportList(false);
setOpenReportDetail(false);
setOpenWeatherList(false);
setOpenAlarmList(true);
}
};
const openReportDetailParam = val => {
setOpenReportDetail(true);
};
const handlerLogout = () => {
dispatch(Actions.logout.request());
};
const handlerDrawType = val => {
dispatch(drawTypeChangeAction(val));
};
const handlerDrawCheck = val => {
dispatch(drawCheckAction(val));
};
return (
<>
<ControlAlarmNotice />
<div className='left-menu'>
<h1 className='logo'>
<img src={logo} width='80' />
<span>PAL</span>
</h1>
<ul className='left-menu-nav'>
<li>
<button onClick={() => openMenu('reportList')}>
<DroneMenuIcon width='30' height='30' />
</button>
</li>
</ul>
{/* 네이버 그리기 도구모음 */}
<ul className='left-menu-nav'>
<li>
<CustomInput
id='check'
type='button'
className='check'
onClick={e => handlerDrawCheck(!mapControl.drawCheck)}
value={mapControl.drawCheck === true ? 'IN USE' : 'STOP'}
/>
</li>
</ul>
{/* 제이쿼리로 그리기(기능 연결 중) */}
{/* <ul className='left-menu-nav'>
<li className='test'>
<CustomInput
id='test'
type='image'
className={mapControl.drawType === 'LINE' ? 'btn-use' : 'btn-stop'}
src='http://static.naver.net/maps/mantle/drawing/1x/polyline.png'
onClick={e => handlerDrawType('LINE')}
/>
<CustomInput
id='test'
type='image'
className={mapControl.drawType === 'POLYGON' ? 'btn-use' : 'btn-stop'}
src='http://static.naver.net/maps/mantle/drawing/1x/polygon.png'
onClick={e => handlerDrawType('POLYGON')}
/>
<CustomInput
id='test'
type='image'
className={mapControl.drawType === 'CIRCLE' ? 'btn-use' : 'btn-stop'}
src='http://static.naver.net/maps/mantle/drawing/1x/ellipse.png'
onClick={e => handlerDrawType('CIRCLE')}
/>
<CustomInput
id='none'
type='button'
className='check'
onClick={e => handlerDrawType('')}
value={mapControl.drawType === '' ? 'STOP' : 'IN USE'}
/>
</li>
</ul> */}
<ul className='left-menu-footer'>
<li>
<AiOutlinePoweroff
size={25}
className='logout-btn'
onClick={handlerLogout}
/>
</li>
<WebsocketClient />
</ul>
</div>
{oepnReportList ? (
<ControlReportList
openReportDetailParam={openReportDetailParam}
setOpenReportList={setOpenReportList}
/>
) : (
<div />
)}
{isClickObject ? (
<ControlReportDetail setOpenReportDetail={setOpenReportDetail} />
) : (
<div />
)}
{openWeatherList ? (
<WeatherList setOpenWeatherList={setOpenWeatherList} />
) : (
<div />
)}
{openAlarmList ? (
<ControlAlarmList setOpenAlarmList={setOpenAlarmList} />
) : (
<div />
)}
{openSetting ? (
<div className='right-menu active'>
<button
className='right-layer-btn'
onClick={() => setOpenSetting(false)}
>
<Map size={18} />
</button>
<div className='right-layer active'>
<ControlSetting />
</div>
</div>
) : (
<div className='right-menu'>
<button
className='right-layer-btn'
onClick={() => setOpenSetting(true)}
>
<Map size={18} />
</button>
<div className='right-layer'></div>
</div>
)}
</>
);
};
export default ControlMainDraw;

10
src/views/testDraw/menu/ControlMenuLeft.js

@ -1,10 +0,0 @@
import React, { useEffect, useState } from 'react';
const ControlMenuLeft = () => {
return(
<></>
)
}
export default ControlMenuLeft();

218
src/views/testDraw/report/ControlReportDetail.js

@ -1,218 +0,0 @@
import moment from 'moment';
import React from 'react';
import { X } from 'react-feather';
import { useDispatch, useSelector } from 'react-redux';
import drone_img from '../../../assets/images/drone.jpg';
import drone_yellow from '../../../assets/images/drone_yellow.png';
import { IMG_PATH } from '../../../configs/constants';
import { objectUnClickAction } from '../../../modules/control/map/actions/controlMapActions';
import {
GET_ARCTFT_TYPE_CD,
GET_WGHT_TYPE_CD
} from '../../../utility/CondeUtil';
const ControlReportDetail = props => {
const dispatch = useDispatch();
const { controlGpDetail, controlDetail } = useSelector(
state => state.controlGpDtlState
);
// useEffect(() => {
// }, [controlGpDetail]);
const handlerClose = () => {
dispatch(objectUnClickAction());
};
const nullMessage = val => {
if (val) {
return val;
} else {
return '-';
}
};
return (
<div className='left-layer'>
<div className='layer-content'>
<div className='layer-ti'>
<h4>드론 상세정보</h4>
<button
className='btn-icon'
color='primary'
// onClick={() => props.setOpenReportDetail(false)}
onClick={() => handlerClose()}
>
<X size={20} />
</button>
</div>
<div className='layer-content-box'>
<div className='drone-ti'>
<img src={drone_yellow} width='40' />
{controlDetail?.arcrftModelNm
? controlDetail?.arcrftModelNm
: controlGpDetail?.objectId}
</div>
<div className='drone-img'>
{controlDetail?.imageUrl ? (
<img src={IMG_PATH + controlDetail?.imageUrl} />
) : (
<img src={drone_img} />
)}
</div>
<div className='layer-content-info'>
<dl>
<dt>
<div className='list-left-txt'>제작번호</div>
<div className='list-right-txt'>
{nullMessage(controlDetail?.prdctNum)}
</div>
</dt>
<dt>
<div className='list-left-txt'>식별번호</div>
<div className='list-right-txt'>
{controlGpDetail?.objectId}
</div>
</dt>
<dt>
<div className='list-left-txt'>중량</div>
<div className='list-right-txt'>
{GET_WGHT_TYPE_CD(controlDetail?.wghtTypeCd)}
</div>
</dt>
<dt>
<div className='list-left-txt'>종류</div>
<div className='list-right-txt'>
{GET_ARCTFT_TYPE_CD(controlDetail?.arcrftTypeCd)}
</div>
</dt>
<dt>
<div className='list-left-txt'>배터리 잔량</div>
<div className='list-right-txt'>
{controlGpDetail?.betteryLevel} %
</div>
</dt>
<dt>
<div className='list-left-txt'>배터리 전압</div>
<div className='list-right-txt'>
{controlGpDetail?.betteryVoltage} volt
</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'>
<dl>
<dt>
<div className='list-left-txt'>시작위치</div>
<div className='list-right-txt'>
{nullMessage(controlDetail?.stAreaNm)}
</div>
</dt>
<dt>
<div className='list-left-txt'>시작시간</div>
<div className='list-right-txt'>
{moment(
controlGpDetail?.controlStartDt,
'YYYYMMDDHHmmss'
).format('MM-DD HH:mm:ss')}
</div>
</dt>
{/* <dt>
<div className='list-left-txt'>현재위치</div>
<div className='list-right-txt'>
인천광역시 부평구 안남로 272
</div>
</dt> */}
<dt>
<div className='list-left-txt'>속도</div>
<div className='list-right-txt'>
{controlGpDetail?.speed} {controlGpDetail?.speedType}
</div>
</dt>
<dt>
<div className='list-left-txt'>고도</div>
<div className='list-right-txt'>
{controlGpDetail?.elev} {controlGpDetail?.elevType}
</div>
</dt>
<dt>
<div className='list-left-txt'>좌표</div>
<div className='list-right-txt'>
{controlGpDetail?.lat} , {controlGpDetail?.lng}
</div>
</dt>
<dt>
<div className='list-left-txt'>비행거리</div>
<div className='list-right-txt'>
{nullMessage(controlGpDetail?.moveDistance)}{' '}
{controlGpDetail?.moveDistanceType}
</div>
</dt>
<dt>
<div className='list-left-txt'>헤딩 방위각</div>
<div className='list-right-txt'>
{controlGpDetail?.heading} °
</div>
</dt>
<dt>
<div className='list-left-txt'>상태</div>
<div className='list-right-txt'>
{nullMessage(controlGpDetail?.dronStatus)}
</div>
</dt>
<dt>
<div className='list-left-txt'>위치정보 수신 시간</div>
<div className='list-right-txt'>
{' '}
{moment(
controlGpDetail?.serverRcvDt,
'YYYYMMDDHHmmss'
).format('MM-DD HH:mm:ss')}
</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'>
<dl>
{/* <dt>
<div className='list-left-txt'>소속기관</div>
<div className='list-right-txt'>팔네트웍스</div>
</dt> */}
<dt>
<div className='list-left-txt'>담당자 이름</div>
<div className='list-right-txt'>
{' '}
{nullMessage(controlDetail?.ownerNm)}
</div>
</dt>
<dt>
<div className='list-left-txt'>담당자 연락처</div>
<div className='list-right-txt'>
{nullMessage(controlDetail?.hpno)}
</div>
</dt>
</dl>
</div>
</div>
</div>
</div>
);
};
export default ControlReportDetail;

109
src/views/testDraw/report/ControlReportList.js

@ -1,109 +0,0 @@
import moment from 'moment';
import React, { useEffect, useState } from 'react';
import { Search, X } from 'react-feather';
import { useDispatch, useSelector } from 'react-redux';
import { Badge, Button, Input, InputGroup } from 'reactstrap';
import { controlGpDtlAction } from '../../../modules/control/gp';
import { objectClickAction } from '../../../modules/control/map/actions/controlMapActions';
const ControlReportList = props => {
const { controlGpList } = useSelector(state => state.controlGpState);
const [filterId, setFilterId] = useState('');
const dispatch = useDispatch();
useEffect(() => {
controlGpList;
}, [controlGpList]);
const handlerDetail = (objectId, cntrlId) => {
dispatch(objectClickAction(objectId));
dispatch(controlGpDtlAction.request(cntrlId));
};
return (
<div className='left-layer'>
<div className='layer-content'>
<div className='layer-ti'>
<h4>드론 비행 현황 정보{filterId}</h4>
<button
className='btn-icon'
color='primary'
onClick={() => props.setOpenReportList(false)}
>
<X size={20} />
</button>
</div>
<div className='layer-search'>
<InputGroup>
<Input
type='text'
placeholder='식별번호를 입력하세요'
value={filterId}
onChange={e => setFilterId(`${e.target.value}`)}
/>
<Button color='primary' outline>
<Search size={18} />
</Button>
</InputGroup>
</div>
</div>
<div className='layer-content drone-list'>
<div className='layer-ti'>
<h4>드론 현황</h4>
<Badge color='light-primary'>
{controlGpList ? controlGpList.length : 0} 비행중
</Badge>
</div>
{controlGpList?.map(item => {
if (item.objectId && item.objectId.indexOf(filterId) != -1) {
return (
<div
className='layer-content-list'
onClick={() => handlerDetail(item.objectId, item.controlId)}
key={item.objectId}
>
<dl>
<dt>
<div className='list-left-txt'>식별번호</div>
<div className='list-right-txt'>{item.objectId}</div>
</dt>
<dt>
<div className='list-left-txt'>이륙 위치</div>
<div className='list-right-txt'>-</div>
</dt>
<dt>
<div className='list-left-txt'>이륙 시간</div>
<div className='list-right-txt'>
{moment(item.controlStartDt, 'YYYYMMDDHHmmss').format(
'MM-DD HH:mm:ss'
)}
</div>
</dt>
<dt>
<div className='list-left-txt'>속도(고도)</div>
<div className='list-right-txt'>
{item.speed ? item.speed : '-'}{' '}
{item.speed ? item.speedType : ''} &nbsp;(
{item.elev ? item.elev : '-'}{' '}
{item.elev ? item.elevType : ''})
</div>
</dt>
<dt>
<div className='list-left-txt'>상태</div>
<div className='list-right-txt'>
{item.dronStatus ? item.dronStatus : '-'}
</div>
</dt>
</dl>
</div>
);
}
})}
</div>
</div>
);
};
export default ControlReportList;

188
src/views/testDraw/setting/ControlSetting.js

@ -1,188 +0,0 @@
import React, { useEffect, useState } from 'react';
import { Search } from 'react-feather';
import { BiBuildings, BiGridAlt } from 'react-icons/bi';
import { CgTrees } from 'react-icons/cg';
import { VscRadioTower } from 'react-icons/vsc';
import { useDispatch, useSelector } from 'react-redux';
import { Button, ButtonGroup, CustomInput } from 'reactstrap';
import {
areaClickAction,
mapTypeChangeAction
} from '../../../modules/control/map/actions/controlMapActions';
const ControlSetting = props => {
const dispatch = useDispatch();
const mapControl = useSelector(state => state.controlMapReducer);
useEffect(() => {}, [mapControl]);
const handlerMapType = val => {
dispatch(mapTypeChangeAction(val));
};
const handlerAreaClick = val => {
dispatch(areaClickAction(val));
};
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>
{/* <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> */}
</div>
);
};
export default ControlSetting;

233
src/views/testDraw/weather/WeatherList.js

@ -1,233 +0,0 @@
import React, { useEffect, useState } from 'react';
import {
CloudDrizzle,
CloudLightning,
Navigation2,
X,
Search,
Compass,
Sun,
Cloud,
CloudRain,
CloudSnow
} from 'react-feather';
import { Button, InputGroup, InputGroupAddon, Input, Table } from 'reactstrap';
const WeatherList = props => {
const [clickTab, setClickTab] = useState(true);
return (
<div className='left-layer'>
<div className='layer-content'>
<div className='layer-ti'>
<h4>날씨 상세정보</h4>
<button
className='btn-icon'
outline
color='primary'
onClick={() => props.setOpenWeatherList(false)}
>
<X size={20} />
</button>
</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-weather-box'>
<div className='layer-weather-info'>
<div className='layer-weather-table'>
<div className='layer-weather-address'>
검색하신 지역의 날씨 정보입니다.
<span>
<Compass size={20} /> 인천광역시 부평구 안남로 272
</span>
</div>
{/* 탭메뉴or탭내용 활성화 active */}
<div className='tab-menu'>
<ul>
{clickTab ? (
<>
<li className='active'>오늘</li>
<li className='' onClick={e => setClickTab(false)}>
주간
</li>
</>
) : (
<>
<li className='' onClick={e => setClickTab(true)}>
오늘
</li>
<li className='active'>주간</li>
</>
)}
</ul>
</div>
{clickTab ? (
<div className='tab-content active'>
<Table responsive>
<thead>
<tr>
<th>시각</th>
<th>날씨</th>
<th>기온</th>
<th>풍향</th>
<th>풍속</th>
</tr>
</thead>
<tbody>
<tr>
<td>10</td>
<td>
<Sun />
</td>
<td>27</td>
<td>
<Navigation2 className='rotate-45' />
</td>
<td>2m/s</td>
</tr>
<tr>
<td>12</td>
<td>
<CloudLightning />
</td>
<td>30</td>
<td>
<Navigation2 className='rotate-75' />
</td>
<td>3m/s</td>
</tr>
<tr>
<td>14</td>
<td>
<Cloud />
</td>
<td>28</td>
<td>
<Navigation2 className='rotate-90' />
</td>
<td>4m/s</td>
</tr>
<tr>
<td>16</td>
<td>
<CloudRain />
</td>
<td>27</td>
<td>
<Navigation2 className='rotate-135' />
</td>
<td>7m/s</td>
</tr>
<tr>
<td>18</td>
<td>
<CloudSnow />
</td>
<td>25</td>
<td>
<Navigation2 className='rotate-180' />
</td>
<td>2m/s</td>
</tr>
<tr>
<td>20</td>
<td>
<CloudDrizzle />
</td>
<td>26</td>
<td>
<Navigation2 className='rotate-225' />
</td>
<td>2m/s</td>
</tr>
</tbody>
</Table>
</div>
) : (
<div className='tab-content active'>
<Table responsive>
<thead>
<tr>
<th>날짜</th>
<th>날씨</th>
<th>기온</th>
</tr>
</thead>
<tbody>
<tr>
<td>06.19.() 오전</td>
<td>
<Sun />
</td>
<td>최저 27</td>
</tr>
<tr>
<td>06.19.() 오후</td>
<td>
<CloudLightning />
</td>
<td>30</td>
</tr>
<tr>
<td>06.20.() 오전</td>
<td>
<CloudLightning />
</td>
<td>30</td>
</tr>
<tr>
<td>06.20.() 오후</td>
<td>
<CloudLightning />
</td>
<td>30</td>
</tr>
<tr>
<td>06.21.() 오전</td>
<td>
<CloudLightning />
</td>
<td>30</td>
</tr>
<tr>
<td>06.21.() 오후</td>
<td>
<CloudLightning />
</td>
<td>30</td>
</tr>
<tr>
<td>06.22.() 오전</td>
<td>
<CloudLightning />
</td>
<td>30</td>
</tr>
<tr>
<td>06.2.() 오후</td>
<td>
<CloudLightning />
</td>
<td>30</td>
</tr>
</tbody>
</Table>
</div>
)}
</div>
</div>
</div>
</div>
</div>
);
};
export default WeatherList;
Loading…
Cancel
Save