김지은 1 year ago
parent
commit
516b553ca8
  1. 3
      src/components/account/login/AccountLogin.js
  2. 5
      src/components/analysis/simulation/AnalysisSimulationDetail.js
  3. 6
      src/components/analysis/simulation/AnalysisSimulatorSlider.js
  4. 31
      src/components/map/nhn/NMapMarker.js
  5. 24
      src/components/map/nhn/NMapPolyline.js
  6. 57
      src/containers/analysis/simulator/AnalysisSimulationContainer.js
  7. 4
      src/modules/analysis/simulation/sagas/analysisSimulatorSaga.ts

3
src/components/account/login/AccountLogin.js

@ -86,6 +86,9 @@ export const AccountLogin = ({ props }) => {
useEffect(() => {
if (isLogin) {
props.history.push('/');
// LANCC 화면으로 이동
// props.history.push('/control');
}
}, [isLogin]);
return (

5
src/components/analysis/simulation/AnalysisSimulationDetail.js

@ -184,9 +184,10 @@ export const AnalysisSimulationDetail = props => {
</Button.Ripple>
<AnalysisSimulatorSlider
direction={isRtl === true ? 'rtl' : 'ltr'}
count={props.log?.length}
playCount={props.info?.playCount}
count={props.dronLength}
playCount={props.info?.playCounts}
setSliderCount={props.setSliderCount}
countArray={props.countArray}
/>
</div>
<div className='simulation-date'>

6
src/components/analysis/simulation/AnalysisSimulatorSlider.js

@ -5,7 +5,8 @@ const AnalysisSimulatorSlider = ({
direction,
count,
playCount,
setSliderCount
setSliderCount,
countArray
}) => {
// hh:mm 형식으로 바꿔주는 코드
function convertToTimeFormat(number) {
@ -48,7 +49,8 @@ const AnalysisSimulatorSlider = ({
pips: {
mode: 'range',
// stepped: true,
density: 3
density: 3,
values: countArray
},
onChange: e => {
function timeStringToMinutes(timeString) {

31
src/components/map/nhn/NMapMarker.js

@ -35,24 +35,23 @@ export const NMapMarker = props => {
}, [props.data]);
useEffect(() => {
if (props.selMarker && props.selMarker) {
// props.selMarker?.setPosition(position);
if (props.isPlay) {
if (props.marker) {
// 기존 마커 삭제
props.marker.remove();
}
// 매 초마다 드론 위치 변경
const movemarker = new mapboxgl.Marker(el)
.setLngLat([
props.data[props.info.playCount]?.lon,
props.data[props.info.playCount]?.lat
])
.addTo(props.map);
props.setMarker(movemarker);
// props.selMarker?.setPosition(position);
if (props.isPlay) {
if (props.marker) {
// 기존 마커 삭제
props.marker.remove();
}
// moveMarkers(props.selMarker, position);
// 매 초마다 드론 위치 변경
const movemarker = new mapboxgl.Marker(el)
.setLngLat([
props.data[props.info.playCount]?.lon,
props.data[props.info.playCount]?.lat
])
.addTo(props.map);
props.setMarker(movemarker);
}
// moveMarkers(props.selMarker, position);
}, [props.info]);
useEffect(() => {}, [props.isPlay]);

24
src/components/map/nhn/NMapPolyline.js

@ -13,27 +13,23 @@ export const NMapPolyline = props => {
if (props.selPolyline && props.selPolyline.setMap) {
props.selPolyline.setMap(null);
}
if (props.info && props.data) {
setCurrent(props.info.cntrlId);
setCheck(true);
if (props.info.cntrlId) {
if (props.map.getLayer('route')) {
props.map.removeLayer('route');
props.map.removeSource('route');
if (props.data) {
if (props.map.getLayer('route')) {
props.map.removeLayer('route');
props.map.removeSource('route');
// props.map.remove();
} //
// props.map.remove();
}
setCheck(false);
}
addPolyline();
}
}, [props.data]);
const addPolyline = () => {
if (check) {
return;
}
// if (check) {
// return;
// }
if (props.data && props.map) {
props.data.forEach(item => {

57
src/containers/analysis/simulator/AnalysisSimulationContainer.js

@ -11,7 +11,9 @@ import { NMapPolyline } from '../../../components/map/nhn/NMapPolyline';
import * as Actions from '../../../modules/analysis/simulation/actions/analysisSimulatorAction';
import * as Action from '../../../modules/account/login/actions/authAction';
import MapBoxMap from '../../../components/map/mapbox/MapBoxMap';
let playCount = 0;
let playCounts = 0;
export const AnalysisSimulationContainer = props => {
const { list, count, detail, searchParams, log, stcsList, stcsCount, page } =
@ -48,6 +50,9 @@ export const AnalysisSimulationContainer = props => {
const dispatch = useDispatch();
const [dronLength, setDronLength] = useState(0);
const [countArray, setCountArray] = useState([]);
const [params, setParams] = useState({
stDate: moment().subtract(1, 'day').format('YYYY-MM-DD'),
endDate: moment().subtract(-1, 'day').format('YYYY-MM-DD'),
@ -57,18 +62,34 @@ export const AnalysisSimulationContainer = props => {
// 시뮬레이션 타이머
useEffect(() => {
if (isPlay) {
const timer = setInterval(() => {
setInfo({ ...log[playCount], playCount: playCount });
if (log[playCount]?.srvrRcvDt) {
setTimeCd(moment(log[playCount]?.srvrRcvDt).format('HH:mm'));
}
const countCheck = log.map(item =>
moment(item?.srvrRcvDt).diff(moment(log[0]?.srvrRcvDt), 'seconds')
);
setCountArray(countCheck);
playCount++;
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'));
}
playCounts = moment(log[playCount]?.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);
@ -77,7 +98,7 @@ export const AnalysisSimulationContainer = props => {
useEffect(() => {
if (isPlay) {
setInfo({ ...log[playCount], playCount: playCount });
setInfo({ ...log[playCount], playCount, playCounts });
setIsPlay(false);
}
}, [stcsList]);
@ -95,8 +116,23 @@ export const AnalysisSimulationContainer = props => {
}, [oepnReportList]);
useEffect(() => {
if (sliderCount && sliderCount > 0) {
playCount = sliderCount;
setInfo({ ...log[playCount], playCount: playCount });
let benear = countArray[0];
let minimum = Math.abs(sliderCount - benear);
let index = 0;
for (let i = 1; i < countArray.length; i++) {
const currentValue = countArray[i];
const value = Math.abs(sliderCount - currentValue);
if (value < minimum) {
benear = currentValue;
minimum = value;
index = i;
}
}
playCount = index;
setInfo({ ...log[playCount], playCount, playCounts });
if (log[playCount]?.srvrRcvDt) {
setTimeCd(moment(log[playCount]?.srvrRcvDt).format('HH:mm'));
}
@ -105,6 +141,7 @@ export const AnalysisSimulationContainer = props => {
useEffect(() => {
playCount = 0;
playCounts = 0;
if (log) {
setInfo({ ...log[playCount], playCount: 0 });
}
@ -238,6 +275,8 @@ export const AnalysisSimulationContainer = props => {
setSliderCount={setSliderCount}
handlerDetailClose={handlerDetailClose}
setOpenReportList={handlerOpenReportList}
dronLength={dronLength}
countArray={countArray}
/>
<NMapPolyline
data={log}

4
src/modules/analysis/simulation/sagas/analysisSimulatorSaga.ts

@ -29,7 +29,7 @@ function* detailSaga(action: ActionType<typeof Actions.detail.request>) {
try {
const id = action.payload;
const res = yield call(Apis.analysisSimulator.detail, id);
yield put(Actions.log.request(id));
// yield put(Actions.log.request(id));
const { data } = res;
yield put(
Actions.detail.success({
@ -45,7 +45,7 @@ function* stcsSaga(action: ActionType<typeof Actions.stcs.request>) {
try {
const id = action.payload;
const res = yield call(Apis.analysisSimulator.stcsList, id);
yield put(Actions.log.request(id));
// yield put(Actions.log.request(id));
const { data, count } = res;
yield put(
Actions.stcs.success({

Loading…
Cancel
Save