Browse Source

일물 일출 데이터 계산 기능 완료(링크 정의 필요)

pull/2/head
sanguu516(박상현) 11 months ago
parent
commit
4daede30e0
  1. 2
      src/modules/laanc/actions/laancActions.ts
  2. 7
      src/modules/laanc/apis/laancApi.ts
  3. 14
      src/modules/laanc/models/laancModels.ts
  4. 2
      src/modules/laanc/sagas/laancSagas.ts
  5. 1
      src/views/laanc/LaacnStep3.js
  6. 20
      src/views/laanc/LaancPdf.js
  7. 87
      src/views/laanc/LaancStep1.js

2
src/modules/laanc/actions/laancActions.ts

@ -60,7 +60,7 @@ export const LAANC_SUN_DATA = createAsyncAction(
LAANC_FLIGHT_CREATE_REQUEST,
LAANC_FLIGHT_CREATE_SUCCESS,
LAANC_FLIGHT_CREATE_FAILURE
)<LaancSunRq, LaancSunData, AxiosError>();
)<LaancSunRq, LaancSunData[], AxiosError>();
const actions = {
laancPdfAction,

7
src/modules/laanc/apis/laancApi.ts

@ -3,7 +3,8 @@ import {
LaancFlightData,
FlightPlanAreaData,
FlightPlanData,
LaancSunData
LaancSunData,
LaancSunRq
} from '../models/laancModels';
// laanc 승인
@ -17,8 +18,8 @@ export const laancApi = {
return res;
},
// 일물 일출 데이터 api get 호출
getSunData: async (data: LaancSunData) => {
const res = await axios.get(`api/bas/laanc/plan/sun`, {
getSunData: async (data: LaancSunRq) => {
const res = await axios.get(`api/comn/sunriseset/coord/list`, {
params: data
});
return res.data;

14
src/modules/laanc/models/laancModels.ts

@ -4,7 +4,7 @@ export interface laancState {
detail: FlightPlanData | undefined;
laancApply: LaancApproval | undefined;
laancPdf: LaancPdf | undefined;
laancSun: LaancSunData | undefined;
laancSun: LaancSunData[] | undefined;
}
// laanc계획서 초기값
@ -599,9 +599,15 @@ export const initFlightBas = {
export interface LaancSunRq {
lat: string;
lon: string;
locEndDate: string;
locStDate: string;
}
// laanc 일물 일출 reducer data
export interface LaancSunData {}
export interface LaancSunData {
locDate: string; // 일자
location: string; // 지역
sunrise: string; // 일출
sunset: string; // 일몰
civilm: string; // 일출 계산한 값
civile: string; // 일물 계산한 값
}
[];

2
src/modules/laanc/sagas/laancSagas.ts

@ -49,7 +49,7 @@ function* getSunDataSaga(
try {
const detail = action.payload;
const res = yield call(Apis.laancApi.getSunData, detail);
yield put(Actions.LAANC_SUN_DATA.success(res.data));
yield put(Actions.LAANC_SUN_DATA.success(res));
} catch (error) {
yield put(
MessageActions.IS_ERROR({

1
src/views/laanc/LaacnStep3.js

@ -19,7 +19,6 @@ import {
} from 'reactstrap';
import { useHistory } from 'react-router-dom';
import FlightArea from './FlightArea';
import LaancPdf from './LaancPdf';
import { AlertCircle, CheckCircle, Download } from 'react-feather';
pdfjs.GlobalWorkerOptions.workerSrc = `//cdnjs.cloudflare.com/ajax/libs/pdf.js/${pdfjs.version}/pdf.worker.js`;

20
src/views/laanc/LaancPdf.js

@ -1,20 +0,0 @@
export default function LaancPdf() {
return (
<>
<p className='ti'>fff</p>
<div className='layer-content'>
<div className='layer-weather-box'>
<div className='layer-weather-info'>
<div className='layer-weather-table'>
<div className='layer-weather-address'>
pdf
<span>sdffsdfsd</span>
</div>
sdfsdfsfd
</div>
</div>
</div>
</div>
</>
);
}

87
src/views/laanc/LaancStep1.js

@ -6,7 +6,7 @@ import { CgTrees } from 'react-icons/cg';
import { VscRadioTower } from 'react-icons/vsc';
import { useDispatch, useSelector, shallowEqual } from 'react-redux';
import Flatpickr from 'react-flatpickr';
import * as LaancAction from '../../modules/laanc/actions/laancActions';
import '@styles/react/libs/flatpickr/flatpickr.scss';
import {
AlertCircle,
@ -38,6 +38,7 @@ import {
} from 'reactstrap';
import FlightArea from './FlightArea';
import laanc from '../../navigation/laanc';
export default function LaancStep1({
handleChange,
@ -52,9 +53,11 @@ export default function LaancStep1({
handlerLaancClose,
handlerBufferApply
}) {
const { user } = useSelector(state => state.authState);
const dispatch = useDispatch();
const history = useHistory();
const { user } = useSelector(state => state.authState);
const { areaCoordList } = useSelector(state => state.flightState);
const { laancSun } = useSelector(state => state.laancState);
const fltElevRef = useRef(null);
const bufferZoneRef = useRef(null);
const schFltStDtRef = useRef(null);
@ -88,6 +91,23 @@ export default function LaancStep1({
if (!currentParm) setCenteredModal(mapParam != 'true' ? false : true);
}, [location]);
useEffect(() => {
if (areaCoordList) {
if (areaCoordList[0].coordList[0].lat !== 0) {
dispatch(
LaancAction.LAANC_SUN_DATA.request({
lat: areaCoordList[0].coordList[0].lat,
lon: areaCoordList[0].coordList[0].lon
})
);
}
}
}, [areaCoordList]);
useEffect(() => {
if (laancSun) {
}
}, [laancSun]);
useEffect(() => {
if (
data.commercial === 'COMMERCIAL' ||
@ -145,6 +165,8 @@ export default function LaancStep1({
}
};
// 일물 일출 날짜 핸들러
const handleBlurpickr = () => {};
// 고도 150 미만 핸들러
const handleBlur = (value, type) => {
switch (type) {
@ -330,7 +352,7 @@ export default function LaancStep1({
value={data.schFltStDt}
ref={schFltStDtRef}
onFocus={handleOpenFlatpickr}
// onOpen={handleOpenFlatpickr}
onBlur={handleBlurpickr}
options={{
minDate: moment().format('YYYY-MM-DD'),
maxDate: moment().add(90, 'day').format('YYYY-MM-DD')
@ -342,6 +364,34 @@ export default function LaancStep1({
name: 'schFltStDt',
value
});
const filteredData = laancSun.filter(data => {
const dataDateTime = moment(data.locDate, 'YYYYMMDD');
return dataDateTime.isSame(moment(value, 'YYYYMMDD'));
});
filteredData.forEach(data => {
if (
data.civile === moment(value).format('HHmmss') ||
data.civilm === moment(value).format('HHmmss')
) {
setIsLaancModal({
isOpen: true,
title: '특별 비행 신청',
desc: (
<>
야간 비행 신청의 경우 특별 비행 신청을
진행하셔야 합니다.
<br />
드론원스톱을 통해서 신청해 주시기 바랍니다.
</>
),
type: 'date'
});
handleChange({
name: 'schFltStDt',
value: ''
});
}
});
}}
placeholder='비행 시작일자 선택(클릭)'
/>
@ -379,6 +429,7 @@ export default function LaancStep1({
data-enable-time
defaultValue={data.schFltEndDt}
value={data.schFltEndDt}
onBlur={handleBlurpickr}
ref={schFltEndDtRef}
onFocus={handleOpenFlatpickr}
options={{
@ -392,6 +443,34 @@ export default function LaancStep1({
name: 'schFltEndDt',
value
});
const filteredData = laancSun.filter(data => {
const dataDateTime = moment(data.locDate, 'YYYYMMDD');
return dataDateTime.isSame(moment(value, 'YYYYMMDD'));
});
filteredData.forEach(data => {
if (
data.civile === moment(value).format('HHmmss') ||
data.civilm === moment(value).format('HHmmss')
) {
setIsLaancModal({
isOpen: true,
title: '특별 비행 신청',
desc: (
<>
야간 비행 신청의 경우 특별 비행 신청을
진행하셔야 합니다.
<br />
드론원스톱을 통해서 신청해 주시기 바랍니다.
</>
),
type: 'date'
});
handleChange({
name: 'schFltEndDt',
value: ''
});
}
});
}}
placeholder='비행 종료일자 선택(클릭)'
/>

Loading…
Cancel
Save