Browse Source

드론관제 함수 수정

pull/2/head
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,
nx: rs.x,
ny: rs.y,
}
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 { controlGpWarnLog } = useSelector(state => state.controlGpLogState);
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() {
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 />;
useEffect(() => {
if (historyModal) {
if (controlGpDetail) {
dispatch(controlGpLogAction.request({ id: controlGpDetail.controlId }));
}
}
}, [historyModal]);
useEffect(() => {
if (historyModal) {
if (controlGpDetail) {
dispatch(controlGpLogAction.request({ id: controlGpDetail.controlId }));
}
}
}, [historyModal]);
const handlerClose = () => {
dispatch(objectUnClickAction());
};
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>
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 mb-1'>
<button
type='button'
className='history-btn'
onClick={() => setHistoryModal(!historyModal)}
>
비정상상황 알림내역
</button>
</div>
<div className='layer-content-box mb-1'>
<button
type='button'
className='history-btn'
onClick={() => setHistoryModal(!historyModal)}
>
비정상상황 알림내역
</button>
<div className='layer-content-box'>
<div className='drone-ti'>
<img src={drone_yellow} width='40' />
{controlDetail?.arcrftModelNm
? controlDetail?.arcrftModelNm
: controlGpDetail?.objectId}
</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='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} %
@ -147,179 +146,179 @@ const ControlReportDetail = props => {
{controlGpDetail?.betteryVoltage} volt
</div>
</dt> */}
</dl>
</div>
</dl>
</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'>
{controlDetail?.cntrlStDt
? moment(controlDetail?.cntrlStDt, 'YYYYMMDDHHmmss').format(
'MM-DD HH:mm:ss'
)
: '-'}
</div>
</dt>
{/* <dt>
</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'>
{controlDetail?.cntrlStDt
? moment(controlDetail?.cntrlStDt, '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
? `${controlGpDetail?.speed} ${controlGpDetail?.speedType}`
: '-'}
</div>
</dt>
<dt>
<div className='list-left-txt'>고도</div>
<div className='list-right-txt'>
{controlGpDetail?.elev && controlGpDetail?.elevType
? `${controlGpDetail?.elev} ${controlGpDetail?.elevType}`
: '-'}
</div>
</dt>
<dt>
<div className='list-left-txt'>좌표(위도/경도)</div>
<div className='list-right-txt'>
{controlGpDetail?.lat && controlGpDetail?.lng
? `${controlGpDetail?.lat} / ${controlGpDetail?.lng}`
: '-'}
</div>
</dt>
{/* <dt>
<dt>
<div className='list-left-txt'>속도</div>
<div className='list-right-txt'>
{controlGpDetail?.speed && controlGpDetail?.speedType
? `${controlGpDetail?.speed} ${controlGpDetail?.speedType}`
: '-'}
</div>
</dt>
<dt>
<div className='list-left-txt'>고도</div>
<div className='list-right-txt'>
{controlGpDetail?.elev && controlGpDetail?.elevType
? `${controlGpDetail?.elev} ${controlGpDetail?.elevType}`
: '-'}
</div>
</dt>
<dt>
<div className='list-left-txt'>좌표(위도/경도)</div>
<div className='list-right-txt'>
{controlGpDetail?.lat && controlGpDetail?.lng
? `${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'>
{nullMessage(controlGpDetail?.heading)}
</div>
</dt>
{/* <dt>
<dt>
<div className='list-left-txt'>헤딩 방위각</div>
<div className='list-right-txt'>
{nullMessage(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'>
{controlGpDetail?.serverRcvDt
? moment(
controlGpDetail?.serverRcvDt,
'YYYYMMDDHHmmss'
).format('MM-DD HH:mm:ss')
: '-'}
</div>
</dt>
</dl>
</div>
<dt>
<div className='list-left-txt'>위치정보 수신 시간</div>
<div className='list-right-txt'>
{controlGpDetail?.serverRcvDt
? moment(
controlGpDetail?.serverRcvDt,
'YYYYMMDDHHmmss'
).format('MM-DD HH:mm:ss')
: '-'}
</div>
</dt>
</dl>
</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>
<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>
<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 className='layer-content'>
<div className='layer-ti'>
<h4>날씨 정보</h4>
</div>
<div className='layer-content-box'>
<div className='layer-content-info'>
<div className='layer-weather-table'>
<div className='layer-weather-address'>
현재위치의 날씨 정보입니다.
<span>
<Compass size={20} />
{controlDetail?.stAreaNm}
</span>
</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>{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 className='layer-content'>
<div className='layer-ti'>
<h4>날씨 정보</h4>
</div>
<div className='layer-content-box'>
<div className='layer-content-info'>
<div className='layer-weather-table'>
<div className='layer-weather-address'>
현재위치의 날씨 정보입니다.
<span>
<Compass size={20} />
{controlDetail?.stAreaNm}
</span>
</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>
<ControlAlarmDetail
historyModal={historyModal}
setHistoryModal={setHistoryModal}
controlGpWarnLog={controlGpWarnLog}
/>
</div>
);
};
}
<ControlAlarmDetail
historyModal={historyModal}
setHistoryModal={setHistoryModal}
controlGpWarnLog={controlGpWarnLog}
/>
</div>
);
};
export default ControlReportDetail;
Loading…
Cancel
Save