|
|
|
@ -1,5 +1,5 @@
|
|
|
|
|
import moment from 'moment'; |
|
|
|
|
import { useEffect, useState, useCallback } from 'react'; |
|
|
|
|
import { useEffect, useState, useCallback, useRef } from 'react'; |
|
|
|
|
import { useDispatch, useSelector } from 'react-redux'; |
|
|
|
|
import { AnalysisSimulationDetail } from '../../../components/analysis/simulation/AnalysisSimulationDetail'; |
|
|
|
|
import { AnalysisSimulationMenu } from '../../../components/analysis/simulation/AnalysisSimulationMenu'; |
|
|
|
@ -61,6 +61,14 @@ export const AnalysisSimulationContainer = props => {
|
|
|
|
|
minVal: 0 |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
// 재생 속도 배속
|
|
|
|
|
const [speed, setSpeed] = useState(1000); |
|
|
|
|
|
|
|
|
|
const [currentSpeed, setCurrentSpeed] = useState(1000); |
|
|
|
|
|
|
|
|
|
// 타이머 Ref 전역
|
|
|
|
|
const timerRef = useRef(null); |
|
|
|
|
|
|
|
|
|
const dispatch = useDispatch(); |
|
|
|
|
|
|
|
|
|
// 드론 갯수
|
|
|
|
@ -82,38 +90,49 @@ export const AnalysisSimulationContainer = props => {
|
|
|
|
|
); |
|
|
|
|
setCountArray(countCheck); |
|
|
|
|
|
|
|
|
|
const timer = setInterval(() => { |
|
|
|
|
if (playCount == log.length) { |
|
|
|
|
playCount = 0; |
|
|
|
|
clearInterval(timer); |
|
|
|
|
setIsPlay(false); |
|
|
|
|
} |
|
|
|
|
setInfo({ ...log[playCount], playCount, playCounts }); |
|
|
|
|
if (log[playCount]?.srvrRcvDt) { |
|
|
|
|
setTimeCd(moment(log[playCount]?.srvrRcvDt).format('HH:mm')); |
|
|
|
|
} |
|
|
|
|
timer(isPlay, log); |
|
|
|
|
|
|
|
|
|
if (speed !== currentSpeed) { |
|
|
|
|
clearInterval(timerRef.currnet); |
|
|
|
|
setCurrentSpeed(speed); |
|
|
|
|
} |
|
|
|
|
return () => clearInterval(timerRef.current); |
|
|
|
|
} |
|
|
|
|
}, [isPlay, log, speed]); |
|
|
|
|
|
|
|
|
|
// 타이머 로직 함수
|
|
|
|
|
const timer = (isPlay, log) => { |
|
|
|
|
timerRef.current = setInterval(() => { |
|
|
|
|
if (playCount == log.length) { |
|
|
|
|
playCount = 0; |
|
|
|
|
clearInterval(timerRef.current); |
|
|
|
|
setIsPlay(false); |
|
|
|
|
} |
|
|
|
|
setInfo({ ...log[playCount], playCount, playCounts }); |
|
|
|
|
if (log[playCount]?.srvrRcvDt) { |
|
|
|
|
setTimeCd(moment(log[playCount]?.srvrRcvDt).format('HH:mm')); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
playCounts = moment(log[playCount]?.srvrRcvDt).diff( |
|
|
|
|
moment(log[0]?.srvrRcvDt), |
|
|
|
|
'seconds' |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
playCounts = moment(log[playCount]?.srvrRcvDt).diff( |
|
|
|
|
setDronLength( |
|
|
|
|
moment(log[log.length - 1]?.srvrRcvDt).diff( |
|
|
|
|
moment(log[0]?.srvrRcvDt), |
|
|
|
|
'seconds' |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
setDronLength( |
|
|
|
|
moment(log[log.length - 1]?.srvrRcvDt).diff( |
|
|
|
|
moment(log[0]?.srvrRcvDt), |
|
|
|
|
'seconds' |
|
|
|
|
) |
|
|
|
|
); |
|
|
|
|
playCount++; |
|
|
|
|
}, 1000); |
|
|
|
|
|
|
|
|
|
return () => clearInterval(timer); |
|
|
|
|
} |
|
|
|
|
}, [isPlay, log]); |
|
|
|
|
) |
|
|
|
|
); |
|
|
|
|
playCount++; |
|
|
|
|
}, speed); |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
//
|
|
|
|
|
// 새 리스트 선택시 초기화
|
|
|
|
|
useEffect(() => { |
|
|
|
|
if (isPlay) { |
|
|
|
|
setSpeed(1000); |
|
|
|
|
setCurrentSpeed(1000); |
|
|
|
|
setInfo({ ...log[playCount], playCount, playCounts }); |
|
|
|
|
setIsPlay(false); |
|
|
|
|
} |
|
|
|
@ -165,23 +184,6 @@ export const AnalysisSimulationContainer = props => {
|
|
|
|
|
if (log) { |
|
|
|
|
setInfo({ ...log[playCount], playCount: 0 }); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// let arrDate = log?.map(date => {
|
|
|
|
|
// const dateval = date.srvrRcvDt;
|
|
|
|
|
// if (dateval) {
|
|
|
|
|
// return Number(moment(dateval).format('DDHHmmss'));
|
|
|
|
|
// } else {
|
|
|
|
|
// return 0;
|
|
|
|
|
// }
|
|
|
|
|
// });
|
|
|
|
|
// setSliderVal({
|
|
|
|
|
// minVal: Math.min.apply(null, arrDate),
|
|
|
|
|
// maxVal: Math.max.apply(null, arrDate)
|
|
|
|
|
// });
|
|
|
|
|
// let maxDate = log.map(date => {
|
|
|
|
|
// return Math.max(date.srvrRcvDt);
|
|
|
|
|
// });
|
|
|
|
|
// let maxDate;
|
|
|
|
|
}, [log]); |
|
|
|
|
|
|
|
|
|
// 검색 헨들러
|
|
|
|
@ -305,6 +307,8 @@ export const AnalysisSimulationContainer = props => {
|
|
|
|
|
setOpenReportList={handlerOpenReportList} |
|
|
|
|
dronLength={dronLength} |
|
|
|
|
countArray={countArray} |
|
|
|
|
setSpeed={setSpeed} |
|
|
|
|
speed={speed} |
|
|
|
|
/> |
|
|
|
|
<AnalysisSimulationPolyline |
|
|
|
|
data={log} |
|
|
|
|