Browse Source

드론관제 함수 수정

ctrlDraw
sanguu(박상현) 2 years ago
parent
commit
41fcb639ad
  1. 1
      src/components/basis/flight/plan/FlightPlanAreaDetailForm.js
  2. 473
      src/views/control/report/ControlReportDetail.js

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

@ -163,6 +163,7 @@ const FlightPlanAreaDetailForm = ({
base_time: basetime, base_time: basetime,
nx: rs.x, nx: rs.x,
ny: rs.y, ny: rs.y,
} }
dispatch(FlightweatherAction.request(apidata)); dispatch(FlightweatherAction.request(apidata));
} }

473
src/views/control/report/ControlReportDetail.js

@ -35,107 +35,106 @@ const ControlReportDetail = props => {
//const { controlWheather } = useSelector(state => state.ControlGpWeatherState); //const { controlWheather } = useSelector(state => state.ControlGpWeatherState);
const { controlGpWarnLog } = useSelector(state => state.controlGpLogState); const { controlGpWarnLog } = useSelector(state => state.controlGpLogState);
function weathericon() { function weathericon() {
if (controlDetail) {
let wheatherDetail = controlDetail.items.item;
let skyDetail = wheatherDetail[6].fcstValue;
if (skyDetail == 1 || skyDetail == 2 || skyDetail == 4) {
return <CloudRain />;
} else if (skyDetail == 4) {
return <CloudSnow />;
} else if (skyDetail == 0 || wheatherDetail[5].fcstValue == 1) {
return <Sun />;
} else return <Cloud />;
}
}
function a() { useEffect(() => {
if (controlDetail) { if (historyModal) {
let wheatherDetail = controlDetail.items.item; if (controlGpDetail) {
let skyDetail = wheatherDetail[6].fcstValue; dispatch(controlGpLogAction.request({ id: controlGpDetail.controlId }));
if (skyDetail == 1 || skyDetail == 2 || skyDetail == 4) {
return <CloudRain />;
} else if (skyDetail == 4) {
return <CloudSnow />;
} else if (skyDetail == 0 || wheatherDetail[5].fcstValue == 1) {
return <Sun />;
} else return <Cloud />;
} }
} }
}, [historyModal]);
useEffect(() => { const handlerClose = () => {
if (historyModal) { dispatch(objectUnClickAction());
if (controlGpDetail) { };
dispatch(controlGpLogAction.request({ id: controlGpDetail.controlId }));
}
}
}, [historyModal]);
const handlerClose = () => { const nullMessage = val => {
dispatch(objectUnClickAction()); 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>
const nullMessage = val => { <div className='layer-content-box mb-1'>
if (val) { <button
return val; type='button'
} else { className='history-btn'
return '-'; onClick={() => setHistoryModal(!historyModal)}
} >
}; 비정상상황 알림내역
return ( </button>
<div className='left-layer'> </div>
<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 mb-1'> <div className='layer-content-box'>
<button <div className='drone-ti'>
type='button' <img src={drone_yellow} width='40' />
className='history-btn' {controlDetail?.arcrftModelNm
onClick={() => setHistoryModal(!historyModal)} ? controlDetail?.arcrftModelNm
> : controlGpDetail?.objectId}
비정상상황 알림내역
</button>
</div> </div>
<div className='drone-img'>
<div className='layer-content-box'> {controlDetail?.imageUrl ? (
<div className='drone-ti'> <img src={IMG_PATH + controlDetail?.imageUrl} />
<img src={drone_yellow} width='40' /> ) : (
{controlDetail?.arcrftModelNm <img src={drone_img} />
? controlDetail?.arcrftModelNm )}
: controlGpDetail?.objectId} </div>
</div> <div className='layer-content-info'>
<div className='drone-img'> <dl>
{controlDetail?.imageUrl ? ( <dt>
<img src={IMG_PATH + controlDetail?.imageUrl} /> <div className='list-left-txt'>제작번호</div>
) : ( <div className='list-right-txt'>
<img src={drone_img} /> {nullMessage(controlDetail?.prdctNum)}
)} </div>
</div> </dt>
<div className='layer-content-info'> <dt>
<dl> <div className='list-left-txt'>식별번호</div>
<dt> <div className='list-right-txt'>
<div className='list-left-txt'>제작번호</div> {controlGpDetail?.objectId}
<div className='list-right-txt'> </div>
{nullMessage(controlDetail?.prdctNum)} </dt>
</div> <dt>
</dt> <div className='list-left-txt'>중량</div>
<dt> <div className='list-right-txt'>
<div className='list-left-txt'>식별번호</div> {GET_WGHT_TYPE_CD(controlDetail?.wghtTypeCd)}
<div className='list-right-txt'> </div>
{controlGpDetail?.objectId} </dt>
</div> <dt>
</dt> <div className='list-left-txt'>종류</div>
<dt> <div className='list-right-txt'>
<div className='list-left-txt'>중량</div> {GET_ARCTFT_TYPE_CD(controlDetail?.arcrftTypeCd)}
<div className='list-right-txt'> </div>
{GET_WGHT_TYPE_CD(controlDetail?.wghtTypeCd)} </dt>
</div> {/* <dt>
</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-left-txt'>배터리 잔량</div>
<div className='list-right-txt'> <div className='list-right-txt'>
{controlGpDetail?.betteryLevel} % {controlGpDetail?.betteryLevel} %
@ -147,179 +146,179 @@ const ControlReportDetail = props => {
{controlGpDetail?.betteryVoltage} volt {controlGpDetail?.betteryVoltage} volt
</div> </div>
</dt> */} </dt> */}
</dl> </dl>
</div>
</div> </div>
</div> </div>
<div className='layer-content'> </div>
<div className='layer-ti'> <div className='layer-content'>
<h4>비행정보</h4> <div className='layer-ti'>
</div> <h4>비행정보</h4>
<div className='layer-content-box'> </div>
<div className='layer-content-info'> <div className='layer-content-box'>
<dl> <div className='layer-content-info'>
<dt> <dl>
<div className='list-left-txt'>시작위치</div> <dt>
<div className='list-right-txt'> <div className='list-left-txt'>시작위치</div>
{nullMessage(controlDetail?.stAreaNm)} <div className='list-right-txt'>
</div> {nullMessage(controlDetail?.stAreaNm)}
</dt> </div>
<dt> </dt>
<div className='list-left-txt'>시작시간</div> <dt>
<div className='list-right-txt'> <div className='list-left-txt'>시작시간</div>
{controlDetail?.cntrlStDt <div className='list-right-txt'>
? moment(controlDetail?.cntrlStDt, 'YYYYMMDDHHmmss').format( {controlDetail?.cntrlStDt
'MM-DD HH:mm:ss' ? moment(controlDetail?.cntrlStDt, 'YYYYMMDDHHmmss').format(
) 'MM-DD HH:mm:ss'
: '-'} )
</div> : '-'}
</dt> </div>
{/* <dt> </dt>
{/* <dt>
<div className='list-left-txt'>현재위치</div> <div className='list-left-txt'>현재위치</div>
<div className='list-right-txt'> <div className='list-right-txt'>
인천광역시 부평구 안남로 272 인천광역시 부평구 안남로 272
</div> </div>
</dt> */} </dt> */}
<dt> <dt>
<div className='list-left-txt'>속도</div> <div className='list-left-txt'>속도</div>
<div className='list-right-txt'> <div className='list-right-txt'>
{controlGpDetail?.speed && controlGpDetail?.speedType {controlGpDetail?.speed && controlGpDetail?.speedType
? `${controlGpDetail?.speed} ${controlGpDetail?.speedType}` ? `${controlGpDetail?.speed} ${controlGpDetail?.speedType}`
: '-'} : '-'}
</div> </div>
</dt> </dt>
<dt> <dt>
<div className='list-left-txt'>고도</div> <div className='list-left-txt'>고도</div>
<div className='list-right-txt'> <div className='list-right-txt'>
{controlGpDetail?.elev && controlGpDetail?.elevType {controlGpDetail?.elev && controlGpDetail?.elevType
? `${controlGpDetail?.elev} ${controlGpDetail?.elevType}` ? `${controlGpDetail?.elev} ${controlGpDetail?.elevType}`
: '-'} : '-'}
</div> </div>
</dt> </dt>
<dt> <dt>
<div className='list-left-txt'>좌표(위도/경도)</div> <div className='list-left-txt'>좌표(위도/경도)</div>
<div className='list-right-txt'> <div className='list-right-txt'>
{controlGpDetail?.lat && controlGpDetail?.lng {controlGpDetail?.lat && controlGpDetail?.lng
? `${controlGpDetail?.lat} / ${controlGpDetail?.lng}` ? `${controlGpDetail?.lat} / ${controlGpDetail?.lng}`
: '-'} : '-'}
</div> </div>
</dt> </dt>
{/* <dt> {/* <dt>
<div className='list-left-txt'>비행거리</div> <div className='list-left-txt'>비행거리</div>
<div className='list-right-txt'> <div className='list-right-txt'>
{nullMessage(controlGpDetail?.moveDistance)}{' '} {nullMessage(controlGpDetail?.moveDistance)}{' '}
{controlGpDetail?.moveDistanceType} {controlGpDetail?.moveDistanceType}
</div> </div>
</dt> */} </dt> */}
<dt> <dt>
<div className='list-left-txt'>헤딩 방위각</div> <div className='list-left-txt'>헤딩 방위각</div>
<div className='list-right-txt'> <div className='list-right-txt'>
{nullMessage(controlGpDetail?.heading)} {nullMessage(controlGpDetail?.heading)}
</div> </div>
</dt> </dt>
{/* <dt> {/* <dt>
<div className='list-left-txt'>상태</div> <div className='list-left-txt'>상태</div>
<div className='list-right-txt'> <div className='list-right-txt'>
{nullMessage(controlGpDetail?.dronStatus)} {nullMessage(controlGpDetail?.dronStatus)}
</div> </div>
</dt> */} </dt> */}
<dt> <dt>
<div className='list-left-txt'>위치정보 수신 시간</div> <div className='list-left-txt'>위치정보 수신 시간</div>
<div className='list-right-txt'> <div className='list-right-txt'>
{controlGpDetail?.serverRcvDt {controlGpDetail?.serverRcvDt
? moment( ? moment(
controlGpDetail?.serverRcvDt, controlGpDetail?.serverRcvDt,
'YYYYMMDDHHmmss' 'YYYYMMDDHHmmss'
).format('MM-DD HH:mm:ss') ).format('MM-DD HH:mm:ss')
: '-'} : '-'}
</div> </div>
</dt> </dt>
</dl> </dl>
</div>
</div> </div>
</div> </div>
<div className='layer-content'> </div>
<div className='layer-ti'> <div className='layer-content'>
<h4>운영자 정보</h4> <div className='layer-ti'>
</div> <h4>운영자 정보</h4>
<div className='layer-content-box'> </div>
<div className='layer-content-info'> <div className='layer-content-box'>
<dl> <div className='layer-content-info'>
{/* <dt> <dl>
{/* <dt>
<div className='list-left-txt'>소속기관</div> <div className='list-left-txt'>소속기관</div>
<div className='list-right-txt'>팔네트웍스</div> <div className='list-right-txt'>팔네트웍스</div>
</dt> */} </dt> */}
<dt> <dt>
<div className='list-left-txt'>담당자 이름</div> <div className='list-left-txt'>담당자 이름</div>
<div className='list-right-txt'> <div className='list-right-txt'>
{nullMessage(controlDetail?.ownerNm)} {nullMessage(controlDetail?.ownerNm)}
</div> </div>
</dt> </dt>
<dt> <dt>
<div className='list-left-txt'>담당자 연락처</div> <div className='list-left-txt'>담당자 연락처</div>
<div className='list-right-txt'> <div className='list-right-txt'>
{nullMessage(controlDetail?.hpno)} {nullMessage(controlDetail?.hpno)}
</div> </div>
</dt> </dt>
</dl> </dl>
</div>
</div> </div>
</div> </div>
<div className='layer-content'> </div>
<div className='layer-ti'> <div className='layer-content'>
<h4>날씨 정보</h4> <div className='layer-ti'>
</div> <h4>날씨 정보</h4>
<div className='layer-content-box'> </div>
<div className='layer-content-info'> <div className='layer-content-box'>
<div className='layer-weather-table'> <div className='layer-content-info'>
<div className='layer-weather-address'> <div className='layer-weather-table'>
현재위치의 날씨 정보입니다. <div className='layer-weather-address'>
<span> 현재위치의 날씨 정보입니다.
<Compass size={20} /> <span>
{controlDetail?.stAreaNm} <Compass size={20} />
</span> {controlDetail?.stAreaNm}
</div> </span>
<Table responsive>
<thead>
<tr>
<th>시각</th>
<th>날씨</th>
<th>기온</th>
<th>풍향</th>
<th>풍속</th>
</tr>
</thead>
<tbody>
<tr>
<td>{controlDetail?.items.item[0].baseTime.substring(0, 2)}</td>
<td>{weathericon()}</td>
<td>
{controlDetail?.items.item[12].fcstTime.substring(0, 2)}
</td>
<td>{a()}</td>
<td>{controlDetail?.items.item[12].fcstValue}</td>
<td>
<Navigation2
style={{
transform: `rotate(${controlDetail?.items.item[3].fcstValue}deg)`
}}
/>
</td>
<td>{controlDetail?.items.item[4].fcstValue}m/s</td>
</tr>
</tbody>
</Table>
</div> </div>
<Table responsive>
<thead>
<tr>
<th>시각</th>
<th>날씨</th>
<th>기온</th>
<th>풍향</th>
<th>풍속</th>
</tr>
</thead>
<tbody>
<tr>
<td>{controlDetail?.items.item[0].baseTime.substring(0, 2)}</td>
<td>{weathericon()}</td>
<td>
{controlDetail?.items.item[12].fcstTime.substring(0, 2)}
</td>
<td>{weathericon()}</td>
<td>{controlDetail?.items.item[12].fcstValue}</td>
<td>
<Navigation2
style={{
transform: `rotate(${controlDetail?.items.item[3].fcstValue}deg)`
}}
/>
</td>
<td>{controlDetail?.items.item[4].fcstValue}m/s</td>
</tr>
</tbody>
</Table>
</div> </div>
</div> </div>
</div> </div>
<ControlAlarmDetail
historyModal={historyModal}
setHistoryModal={setHistoryModal}
controlGpWarnLog={controlGpWarnLog}
/>
</div> </div>
); <ControlAlarmDetail
}; historyModal={historyModal}
} setHistoryModal={setHistoryModal}
controlGpWarnLog={controlGpWarnLog}
/>
</div>
);
};
export default ControlReportDetail; export default ControlReportDetail;
Loading…
Cancel
Save