From dbae30592869af25a928102a320c6608940fe487 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?kimjh=28=EA=B9=80=EC=9E=A5=ED=98=84=29?= Date: Tue, 4 Oct 2022 16:58:29 +0900 Subject: [PATCH] =?UTF-8?q?=EB=B9=84=ED=96=89=EC=9A=B4=ED=95=AD=20?= =?UTF-8?q?=EC=8A=A4=EC=BC=80=EC=A4=84=20=EC=9E=91=EC=97=85=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 28 +- package.json | 2 +- .../flight/schedule/FlightScheduleGrid.js | 203 ++++++ .../flight/schedule/FlightScheduleRealTime.js | 22 + .../flight/schedule/FlightScheduleSearch.js | 18 +- src/components/crud/grid/GridDatatable.js | 6 +- .../schedule/FlightScheduleContainer.js | 2 + .../basis/group/BasisGroupUsersContainer.js | 3 - .../basis/flight/actions/basisFlightAction.ts | 147 +++-- .../basis/flight/apis/basisFlightApi.ts | 15 +- .../basis/flight/models/basisFlightModel.ts | 607 ++++++++++-------- .../flight/reducers/basisFlightReducer.ts | 7 + .../basis/flight/sagas/basisFlightSaga.ts | 173 ++--- src/utility/hooks/useInterval.js | 21 + src/views/weather/WeatherView.js | 1 - 15 files changed, 810 insertions(+), 445 deletions(-) create mode 100644 src/components/basis/flight/schedule/FlightScheduleGrid.js create mode 100644 src/components/basis/flight/schedule/FlightScheduleRealTime.js create mode 100644 src/utility/hooks/useInterval.js diff --git a/package-lock.json b/package-lock.json index 5cbca850..e2a747de 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12896,11 +12896,6 @@ "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=" }, - "lodash.orderby": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.orderby/-/lodash.orderby-4.6.0.tgz", - "integrity": "sha1-5pfwTOXXhSL1TZM4syuBozk+TrM=" - }, "lodash.template": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", @@ -13495,11 +13490,6 @@ "resolved": "https://registry.npmjs.org/nanoclone/-/nanoclone-0.2.1.tgz", "integrity": "sha512-wynEP02LmIbLpcYw8uBKpcfF6dmg2vcpKqxeH5UcoKEYdExslsdUA4ugFauuaeYdTB76ez6gJW8XAZ6CgkXYxA==" }, - "nanoid": { - "version": "2.1.11", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-2.1.11.tgz", - "integrity": "sha512-s/snB+WGm6uwi0WjsZdaVcuf3KJXlfGl2LcxgwkEwJF0D/BWzVWAZW/XY4bFaiR7s0Jk3FPvlnepg1H1b1UwlA==" - }, "nanomatch": { "version": "1.2.13", "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", @@ -20676,13 +20666,11 @@ "integrity": "sha512-exyAdFLAxtuM4wNwLYrlKyPYLiJ7e0mv9tqPAd3kq+k1CiJFtznevR3yP0icv5q/y200w+lzNgi7TQn1Wrhu0w==" }, "react-data-table-component": { - "version": "6.11.2", - "resolved": "https://registry.npmjs.org/react-data-table-component/-/react-data-table-component-6.11.2.tgz", - "integrity": "sha512-xoaTVTX4svgY3norL707GSUZJ5Q0FRZ1g2QY5oI5soiNtGMor9yGTXjnMq6mDmL9A4a7lmA+4xntoEEMJMcIvA==", + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/react-data-table-component/-/react-data-table-component-7.5.3.tgz", + "integrity": "sha512-JhatRTgThAAa1HobPaPmkNPsjLT6+fnMIdtcXRCy+0bSYN7XJnTgob9Qyi4bjHh/8tMPTHtxZCV/TKiPwRvFMA==", "requires": { - "deepmerge": "^4.2.2", - "lodash.orderby": "^4.6.0", - "shortid": "^2.2.15" + "deepmerge": "^4.2.2" } }, "react-datepicker": { @@ -23441,14 +23429,6 @@ "smoothscroll-polyfill": "^0.4.4" } }, - "shortid": { - "version": "2.2.16", - "resolved": "https://registry.npmjs.org/shortid/-/shortid-2.2.16.tgz", - "integrity": "sha512-Ugt+GIZqvGXCIItnsL+lvFJOiN7RYqlGy7QE41O3YC1xbNSeDGIRO7xg2JJXIAj1cAGnOeC1r7/T9pgrtQbv4g==", - "requires": { - "nanoid": "^2.1.0" - } - }, "side-channel": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", diff --git a/package.json b/package.json index 9321eab6..b04381f6 100644 --- a/package.json +++ b/package.json @@ -69,7 +69,7 @@ "react-copy-to-clipboard": "5.0.2", "react-country-flag": "2.0.1", "react-csv": "^2.0.3", - "react-data-table-component": "6.11.2", + "react-data-table-component": "^7.5.3", "react-datepicker": "^4.2.1", "react-dom": "17.0.1", "react-draft-wysiwyg": "1.14.5", diff --git a/src/components/basis/flight/schedule/FlightScheduleGrid.js b/src/components/basis/flight/schedule/FlightScheduleGrid.js new file mode 100644 index 00000000..37db6ab5 --- /dev/null +++ b/src/components/basis/flight/schedule/FlightScheduleGrid.js @@ -0,0 +1,203 @@ +import { useRef } from 'react'; +import { GridDatabase } from '@src/components/crud/grid/GridDatatable'; +import { Row, Col, Card } from 'reactstrap'; +import FlightScheduleRealTime from './FlightScheduleRealTime'; +import { useSelector } from 'react-redux'; +import moment from 'moment'; +import DataTable from 'react-data-table-component'; + +const KR_TIME_DIFF = 9 * 60 * 60 * 1000; + +/** + * 비행 전 : B + * 비행 중 : F + * 비행 완료 : S + */ +function FlightScheduleGrid() { + const timeRef = useRef(null); + + const { scheduleList } = useSelector(state => state.flightState); + // const [list, setList] = useState( + // new Array(10).fill({ groupNm: 'test', groupNm: 'test' }) + // ); + + const fillZero = (width, str) => { + return str.length >= width + ? str + : new Array(width - str.length + 1).join('0') + str; //남는 길이만큼 0으로 채움 + }; + + const columns = [ + { + name: '그룹 명', + selector: 'groupNm', + minWidth: '150px', + sortable: true, + cell: row => { + return row.groupNm; + } + // conditionalCellStyles: [ + // { + // when: row => { + // return true; + // }, + // style: row => { + // let color; + // if (row.statusCd === 's') { + // color = '#82868B'; + // } + + // return { + // backgroundColor: '#82868B', + // color: 'white' + // }; + // } + // } + // ] + }, + { + name: '기체 소유자', + selector: 'ownerNm', + minWidth: '150px', + sortable: true, + cell: row => { + return row.ownerNm; + } + }, + { + name: '기체 식별번호', + selector: 'idntfNum', + minWidth: '150px', + sortable: true, + cell: row => { + return row.idntfNum; + } + }, + { + name: '출발지', + selector: 'startAddress', + minWidth: '150px', + sortable: true, + cell: row => { + return row.startAddress; + } + }, + { + name: '비행 시작 시간', + selector: 'schFltStDt ', + minWidth: '150px', + sortable: true, + cell: row => { + return moment(row.schFltStDt).format('HH:mm'); + } + }, + { + name: '도착지', + selector: 'endAddress', + minWidth: '150px', + sortable: true, + cell: row => { + return row.endAddress; + } + }, + { + name: '비행 종료 시간', + selector: 'schFltEndDt', + minWidth: '150px', + sortable: true, + cell: row => { + return moment(row.schFltEndDt).format('HH:mm'); + } + }, + { + name: '총 예상 비행시간', + selector: 'groupNm', + minWidth: '150px', + sortable: true, + cell: row => { + const endDate = new Date(row.schFltEndDt); + const startDate = new Date(row.schFltStDt); + + const a = endDate - startDate; + let time = fillZero( + 2, + String(Math.floor((a % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60))) + ); + let hore = fillZero( + 2, + String(Math.floor((a % (1000 * 60 * 60)) / (1000 * 60))) + ); + + return `${time}:${hore}`; + } + }, + { + name: '상태', + selector: 'statusCd', + minWidth: '150px', + sortable: true, + cell: row => { + switch (row.statusCd) { + case 'B': + return '비행전'; + case 'F': + return '비행중'; + default: + return '비행완료'; + } + } + } + ]; + + const conditionalRowStyles = [ + { + when: row => true, + style: { + backgroundColor: 'red' + } + } + ]; + + return ( +
+ + +
+
+
+

비행운항 스케줄 목록

+ + 검색결과 총 {scheduleList.length}건 + +
+ +
+
+
+ +
+ +
+
+
+ +
+
+ ); +} + +export default FlightScheduleGrid; diff --git a/src/components/basis/flight/schedule/FlightScheduleRealTime.js b/src/components/basis/flight/schedule/FlightScheduleRealTime.js new file mode 100644 index 00000000..0833d659 --- /dev/null +++ b/src/components/basis/flight/schedule/FlightScheduleRealTime.js @@ -0,0 +1,22 @@ +import { useState, forwardRef } from 'react'; +import moment from 'moment'; +import useInterval from '@src/utility/hooks/useInterval'; + +const KR_TIME_DIFF = 9 * 60 * 60 * 1000; + +const FlightScheduleRealTime = forwardRef(({}, ref) => { + const [currTime, setCurrTime] = useState(new Date()); + const utc = currTime.getTime() + currTime.getTimezoneOffset() * 60 * 1000; + const kr_curr = new Date(utc + KR_TIME_DIFF); + + useInterval(() => { + setCurrTime(new Date()); + setTime(moment(new Date()).format('HH:mm:ss')); + }, [1000]); + + const [time, setTime] = useState(moment(kr_curr).format('HH:mm:ss')); + + return
현재시간 UTC : {time.toString()}
; +}); + +export default FlightScheduleRealTime; diff --git a/src/components/basis/flight/schedule/FlightScheduleSearch.js b/src/components/basis/flight/schedule/FlightScheduleSearch.js index 6ffe6507..a0a66378 100644 --- a/src/components/basis/flight/schedule/FlightScheduleSearch.js +++ b/src/components/basis/flight/schedule/FlightScheduleSearch.js @@ -3,16 +3,32 @@ import { Row, Col, Button, Card, CardBody } from 'reactstrap'; import { Search, Calendar } from 'react-feather'; import moment from 'moment'; import Flatpickr from 'react-flatpickr'; +import { FLIGHT_SCHEDULE_LIST } from '@src/modules/basis/flight/actions/basisFlightAction'; +import { useDispatch } from 'react-redux'; +import useInterval from '@src/utility/hooks/useInterval'; function FlightScheduleSearch() { + const dispatch = useDispatch(); const [date, setDate] = useState( moment().subtract('day').format('YYYY-MM-DD') ); + const [isSearch, setIsSearch] = useState(false); + + useInterval(() => { + if (isSearch) { + dispatch(FLIGHT_SCHEDULE_LIST.request(date)); + } + }, [10000]); const handlerChangeDate = val => { setDate(moment(val[0]).format('YYYY-MM-DD')); }; + const handlerSearch = () => { + setIsSearch(true); + dispatch(FLIGHT_SCHEDULE_LIST.request(date)); + }; + return (
@@ -22,7 +38,7 @@ function FlightScheduleSearch() {

검색조건

- {}}> + 검색 diff --git a/src/components/crud/grid/GridDatatable.js b/src/components/crud/grid/GridDatatable.js index e3e364a8..eae65639 100644 --- a/src/components/crud/grid/GridDatatable.js +++ b/src/components/crud/grid/GridDatatable.js @@ -38,9 +38,9 @@ export const GridDatabase = props => { }} selectableRows={props.selectableRows} selectableRowsComponent={props.selectableRowsComponent} - onSelectedRowsChange={ - props.onSelectedRowsChange ? props.onSelectedRowsChange : null - } + {...(props.onSelectedRowsChange + ? { onSelectedRowsChange: props.onSelectedRowsChange } + : {})} />
diff --git a/src/containers/basis/flight/schedule/FlightScheduleContainer.js b/src/containers/basis/flight/schedule/FlightScheduleContainer.js index 46fb0c74..6f378340 100644 --- a/src/containers/basis/flight/schedule/FlightScheduleContainer.js +++ b/src/containers/basis/flight/schedule/FlightScheduleContainer.js @@ -1,10 +1,12 @@ import { CustomMainLayout } from '@src/components/layout/CustomMainLayout'; import FlightScheduleSearch from '@src/components/basis/flight/schedule/FlightScheduleSearch'; +import FlightScheduleGrid from '@src/components/basis/flight/schedule/FlightScheduleGrid'; function FlightScheduleContainer() { return ( + ); } diff --git a/src/containers/basis/group/BasisGroupUsersContainer.js b/src/containers/basis/group/BasisGroupUsersContainer.js index 4156fc24..3e5acaac 100644 --- a/src/containers/basis/group/BasisGroupUsersContainer.js +++ b/src/containers/basis/group/BasisGroupUsersContainer.js @@ -285,10 +285,7 @@ export const BasisGroupUsersContainer = props => { searchParams: param }) ); - - console.log('볼 수 있음'); } else { - console.log('볼 수 없다'); setInfoModal({ isOpen: true, title: '권한 확인', diff --git a/src/modules/basis/flight/actions/basisFlightAction.ts b/src/modules/basis/flight/actions/basisFlightAction.ts index 1d4d4063..a17c4aaf 100644 --- a/src/modules/basis/flight/actions/basisFlightAction.ts +++ b/src/modules/basis/flight/actions/basisFlightAction.ts @@ -6,10 +6,14 @@ import { FlightPlanArcrftDataList, FlightPlanAreaDataList, FlightPlanData, - FlightPlanListRqData, FlightPlanPilotDataList, PilotSelectData, SelectGroupData, BasFlightAprovData + FlightPlanListRqData, + FlightPlanPilotDataList, + PilotSelectData, + SelectGroupData, + BasFlightAprovData, + BasFlightScheduleList } from '../models/basisFlightModel'; - // 공역 조회 const PUBLIC_AREA_LIST_REQUEST = 'basis/flight/public_area/LIST_REQUEST'; const PUBLIC_AREA_LIST_SUCCESS = 'basis/flight/public_area/LIST_SUCCESS'; @@ -42,17 +46,23 @@ const FLIGHT_PLAN_DELETE_SUCCESS = 'basis/flight/plan/delete/DELETE_SUCCESS'; const FLIGHT_PLAN_DELETE_FAILURE = 'basis/flight/plan/delete/DELETE_FAILURE'; // 조종사 조회 -const FLIGHT_PLAN_PILOT_LIST_REQUEST = 'basis/flight/plan/pilot_list/PILOT_LIST_REQUEST'; -const FLIGHT_PLAN_PILOT_LIST_SUCCESS = 'basis/flight/plan/pilot_list/PILOT_LIST_SUCCESS'; -const FLIGHT_PLAN_PILOT_LIST_FAILURE = 'basis/flight/plan/pilot_list/PILOT_LIST_FAILURE'; +const FLIGHT_PLAN_PILOT_LIST_REQUEST = + 'basis/flight/plan/pilot_list/PILOT_LIST_REQUEST'; +const FLIGHT_PLAN_PILOT_LIST_SUCCESS = + 'basis/flight/plan/pilot_list/PILOT_LIST_SUCCESS'; +const FLIGHT_PLAN_PILOT_LIST_FAILURE = + 'basis/flight/plan/pilot_list/PILOT_LIST_FAILURE'; // 조종사 선택 const FLIGHT_PLAN_PILOT_SELECT = 'basis/flight/plan/pilot_list/PILOT_SELECT'; // 기체 조회 -const FLIGHT_PLAN_ARCRFT_LIST_REQUEST = 'basis/flight/plan/arcrft_list/ARCRFT_LIST_REQUEST'; -const FLIGHT_PLAN_ARCRFT_LIST_SUCCESS = 'basis/flight/plan/arcrft_list/ARCRFT_LIST_SUCCESS'; -const FLIGHT_PLAN_ARCRFT_LIST_FAILURE = 'basis/flight/plan/arcrft_list/ARCRFT_LIST_FAILURE'; +const FLIGHT_PLAN_ARCRFT_LIST_REQUEST = + 'basis/flight/plan/arcrft_list/ARCRFT_LIST_REQUEST'; +const FLIGHT_PLAN_ARCRFT_LIST_SUCCESS = + 'basis/flight/plan/arcrft_list/ARCRFT_LIST_SUCCESS'; +const FLIGHT_PLAN_ARCRFT_LIST_FAILURE = + 'basis/flight/plan/arcrft_list/ARCRFT_LIST_FAILURE'; // 기체 선택 const FLIGHT_PLAN_ARCRFT_SELECT = 'basis/flight/plan/arcrft_list/ARCRFT_SELECT'; @@ -78,29 +88,47 @@ const AREA_BUFFER_LIST_SUCCESS = 'basis/flight/plan/area/BUFFER_LIST_SUCCESS'; const AREA_BUFFER_LIST_FAILURE = 'basis/flight/plan/area/BUFFER_LIST_FAILURE'; // 비행계획서 조회(승인) -const FLIGHT_APRV_LIST_REQUEST = 'basis/flight/aprv/list/FLIGHT_APRV_LIST_REQUEST'; -const FLIGHT_APRV_LIST_SUCCESS = 'basis/flight/aprv/list/FLIGHT_APRV_LIST_SUCCESS'; -const FLIGHT_APRV_LIST_FAILURE = 'basis/flight/aprv/list/FLIGHT_APRV_LIST_FAILURE'; +const FLIGHT_APRV_LIST_REQUEST = + 'basis/flight/aprv/list/FLIGHT_APRV_LIST_REQUEST'; +const FLIGHT_APRV_LIST_SUCCESS = + 'basis/flight/aprv/list/FLIGHT_APRV_LIST_SUCCESS'; +const FLIGHT_APRV_LIST_FAILURE = + 'basis/flight/aprv/list/FLIGHT_APRV_LIST_FAILURE'; // 비행계획서 승인/미승인 처리 -const FLIGHT_APRV_PROC_REQUEST = 'basis/flight/aprv/proc/FLIGHT_APRV_PROC_REQUEST'; -const FLIGHT_APRV_PROC_SUCCESS = 'basis/flight/aprv/proc/FLIGHT_APRV_PROC_SUCCESS'; -const FLIGHT_APRV_PROC_FAILURE = 'basis/flight/aprv/proc/FLIGHT_APRV_PROC_FAILURE'; +const FLIGHT_APRV_PROC_REQUEST = + 'basis/flight/aprv/proc/FLIGHT_APRV_PROC_REQUEST'; +const FLIGHT_APRV_PROC_SUCCESS = + 'basis/flight/aprv/proc/FLIGHT_APRV_PROC_SUCCESS'; +const FLIGHT_APRV_PROC_FAILURE = + 'basis/flight/aprv/proc/FLIGHT_APRV_PROC_FAILURE'; //지도 검색 -const FLIGHT_SEARCH_AREA_REQUEST = 'basis/flight/search/area/FLIGHT_SEARCH_AREA_REQUEST'; -const FLIGHT_SEARCH_AREA_SUCCESS = 'basis/flight/search/area/FLIGHT_SEARCH_AREA_SUCCESS'; -const FLIGHT_SEARCH_AREA_FAILURE = 'basis/flight/search/area/FLIGHT_SEARCH_AREA_FAILURE'; +const FLIGHT_SEARCH_AREA_REQUEST = + 'basis/flight/search/area/FLIGHT_SEARCH_AREA_REQUEST'; +const FLIGHT_SEARCH_AREA_SUCCESS = + 'basis/flight/search/area/FLIGHT_SEARCH_AREA_SUCCESS'; +const FLIGHT_SEARCH_AREA_FAILURE = + 'basis/flight/search/area/FLIGHT_SEARCH_AREA_FAILURE'; + +// 비행운항 스케줄 +const FLIGHT_SCHEDULE_REQUEST = + 'basis/flight/schedule/list/FLIGHT_SCHEDULE_REQUEST'; +const FLIGHT_SCHEDULE_SUCCESS = + 'basis/flight/schedule/list/FLIGHT_SCHEDULE_SUCCESS'; +const FLIGHT_SCHEDULE_FAILURE = + 'basis/flight/schedule/list/FLIGHT_SCHEDULE_FAILURE'; + export const SEARCH_AREA = createAsyncAction( FLIGHT_SEARCH_AREA_REQUEST, FLIGHT_SEARCH_AREA_SUCCESS, FLIGHT_SEARCH_AREA_FAILURE -)<{query: string}, string, AxiosError>(); +)<{ query: string }, string, AxiosError>(); export const PUBLIC_AREA_LIST = createAsyncAction( - PUBLIC_AREA_LIST_REQUEST, - PUBLIC_AREA_LIST_SUCCESS, - PUBLIC_AREA_LIST_FAILURE + PUBLIC_AREA_LIST_REQUEST, + PUBLIC_AREA_LIST_SUCCESS, + PUBLIC_AREA_LIST_FAILURE )(); // 목록 @@ -117,12 +145,14 @@ export const FLIGHT_PLAN_DETAIL = createAsyncAction( FLIGHT_PLAN_DETAIL_FAILURE )(); // 상세 초기화 -export const FLIGHT_PLAN_DETAIL_INIT = createAction(FLIGHT_PLAN_DETAIL_INITIAL)(); +export const FLIGHT_PLAN_DETAIL_INIT = createAction( + FLIGHT_PLAN_DETAIL_INITIAL +)(); // 생성 export const FLIGHT_PLAN_CREATE = createAsyncAction( - FLIGHT_PLAN_CREATE_REQUEST, - FLIGHT_PLAN_CREATE_SUCCESS, - FLIGHT_PLAN_CREATE_FAILURE + FLIGHT_PLAN_CREATE_REQUEST, + FLIGHT_PLAN_CREATE_SUCCESS, + FLIGHT_PLAN_CREATE_FAILURE )(); // 수정 @@ -147,7 +177,9 @@ export const FLIGHT_PLAN_PILOT_LIST = createAsyncAction( )(); // 조종사 선택 -export const PILOT_SELECT = createAction(FLIGHT_PLAN_PILOT_SELECT)(); +export const PILOT_SELECT = createAction( + FLIGHT_PLAN_PILOT_SELECT +)(); // 기체 목록 export const FLIGHT_PLAN_ARCRFT_LIST = createAsyncAction( @@ -157,19 +189,26 @@ export const FLIGHT_PLAN_ARCRFT_LIST = createAsyncAction( )(); // 조종사 선택 -export const ARCRFT_SELECT = createAction(FLIGHT_PLAN_ARCRFT_SELECT)(); +export const ARCRFT_SELECT = createAction( + FLIGHT_PLAN_ARCRFT_SELECT +)(); // 조종사, 기체 선택 초기화 -export const PILOT_ARCRFT_SELECT_INIT = createAction(PILOT_ARCRFT_SELECT_INITIAL)(); +export const PILOT_ARCRFT_SELECT_INIT = createAction( + PILOT_ARCRFT_SELECT_INITIAL +)(); // 비행 구역 좌표 저장 (스텝2 데이터 공유) -export const AREA_COORDINATE_LIST_SAVE = createAction(AREA_COORDINATE_LIST)(); +export const AREA_COORDINATE_LIST_SAVE = + createAction(AREA_COORDINATE_LIST)(); // 비행 구역 상세 저장 -export const AREA_DETAIL_LIST_SAVE = createAction(AREA_DETAIL_LIST)(); +export const AREA_DETAIL_LIST_SAVE = + createAction(AREA_DETAIL_LIST)(); // 비행 계획서 그룹 선택 -export const FLIGHT_PLAN_GROUP_SELECT = createAction(ROUP_SELECT)(); +export const FLIGHT_PLAN_GROUP_SELECT = + createAction(ROUP_SELECT)(); // 비행 구역 상세 값 초기화 export const AREA_DETAIL_INIT = createAction(AREA_DETAIL_INITIAL)(); @@ -194,29 +233,35 @@ export const FLIGHT_APRV_PROC = createAsyncAction( FLIGHT_APRV_PROC_FAILURE )(); +export const FLIGHT_SCHEDULE_LIST = createAsyncAction( + FLIGHT_SCHEDULE_REQUEST, + FLIGHT_SCHEDULE_SUCCESS, + FLIGHT_SCHEDULE_FAILURE +)(); const actions = { PUBLIC_AREA_LIST, - // FLIGHT_PLAN_AREA, - FLIGHT_PLAN_LIST, - FLIGHT_PLAN_DETAIL, - FLIGHT_PLAN_DETAIL_INIT, - FLIGHT_PLAN_CREATE, - FLIGHT_PLAN_UPDATE, - FLIGHT_PLAN_DELETE, - FLIGHT_PLAN_PILOT_LIST, - FLIGHT_PLAN_ARCRFT_LIST, - PILOT_SELECT, - ARCRFT_SELECT, - PILOT_ARCRFT_SELECT_INIT, - AREA_COORDINATE_LIST_SAVE, - AREA_DETAIL_LIST_SAVE, - FLIGHT_PLAN_GROUP_SELECT, - FLIGHT_PLAN_AREA_BUFFER_LIST, - AREA_DETAIL_INIT, - FLIGHT_APRV_LIST, - FLIGHT_APRV_PROC, - SEARCH_AREA + // FLIGHT_PLAN_AREA, + FLIGHT_PLAN_LIST, + FLIGHT_PLAN_DETAIL, + FLIGHT_PLAN_DETAIL_INIT, + FLIGHT_PLAN_CREATE, + FLIGHT_PLAN_UPDATE, + FLIGHT_PLAN_DELETE, + FLIGHT_PLAN_PILOT_LIST, + FLIGHT_PLAN_ARCRFT_LIST, + PILOT_SELECT, + ARCRFT_SELECT, + PILOT_ARCRFT_SELECT_INIT, + AREA_COORDINATE_LIST_SAVE, + AREA_DETAIL_LIST_SAVE, + FLIGHT_PLAN_GROUP_SELECT, + FLIGHT_PLAN_AREA_BUFFER_LIST, + AREA_DETAIL_INIT, + FLIGHT_APRV_LIST, + FLIGHT_APRV_PROC, + SEARCH_AREA, + FLIGHT_SCHEDULE_LIST }; export type FlightAction = ActionType; diff --git a/src/modules/basis/flight/apis/basisFlightApi.ts b/src/modules/basis/flight/apis/basisFlightApi.ts index 7a97abca..edb43ce7 100644 --- a/src/modules/basis/flight/apis/basisFlightApi.ts +++ b/src/modules/basis/flight/apis/basisFlightApi.ts @@ -8,7 +8,6 @@ import { FlightPlanListRqData } from '../models/basisFlightModel'; - export const flightPlanAPI = { area: async () => { const res = await axios.get(`api/bas/flight/area`); @@ -54,7 +53,7 @@ export const flightPlanAPI = { const res = await axios.post(`api/bas/flight/plan/area/buffer`, data); return res; }, - aprvList: async (data: FlightPlanListRqData) => { + aprvList: async (data: FlightPlanListRqData) => { const queryString = qs.stringify(data, { addQueryPrefix: true, arrayFormat: 'repeat' @@ -67,8 +66,12 @@ export const flightPlanAPI = { return res; }, - searchArea: async(param) => { - return await axios.get(`api/bas/flight/plan/area/search?query=${param.query}`); + searchArea: async param => { + return await axios.get( + `api/bas/flight/plan/area/search?query=${param.query}` + ); + }, + scheduleList: async (date: string) => { + return await axios.get(`api/bas/flight/schedule?searchDate=${date}`); } -} - +}; diff --git a/src/modules/basis/flight/models/basisFlightModel.ts b/src/modules/basis/flight/models/basisFlightModel.ts index 4d8809f4..38fc316a 100644 --- a/src/modules/basis/flight/models/basisFlightModel.ts +++ b/src/modules/basis/flight/models/basisFlightModel.ts @@ -1,178 +1,195 @@ -import moment from "moment"; +import moment from 'moment'; export interface FlightState { - publicAreaList: PublicAreaData | undefined - flightPlanArea: FlightPlanArea | undefined - list: [FlightPlanData] | undefined - detail: FlightPlanData | undefined - pilotList: FlightPlanPilotDataList | undefined - arcrftList: FlightPlanArcrftDataList | undefined - pilotSelect: PilotSelectData | undefined - arcrftSelect: FlightPlanArcrftData | undefined - areaCoordList: FlightPlanAreaData[] | undefined - areaList: FlightPlanAreaData[] | undefined - selectGroup: SelectGroupData | undefined - aprvList: [FlightPlanData] | undefined - aprvProc: any | undefined + publicAreaList: PublicAreaData | undefined; + flightPlanArea: FlightPlanArea | undefined; + list: [FlightPlanData] | undefined; + detail: FlightPlanData | undefined; + pilotList: FlightPlanPilotDataList | undefined; + arcrftList: FlightPlanArcrftDataList | undefined; + pilotSelect: PilotSelectData | undefined; + arcrftSelect: FlightPlanArcrftData | undefined; + areaCoordList: FlightPlanAreaData[] | undefined; + areaList: FlightPlanAreaData[] | undefined; + selectGroup: SelectGroupData | undefined; + aprvList: [FlightPlanData] | undefined; + aprvProc: any | undefined; + scheduleList: BasFlightScheduleList[] | []; } export interface SelectGroupData { - cstmrSno: number, - groupId: string, - groupNm: string, + cstmrSno: number; + groupId: string; + groupNm: string; } export interface PublicAreaData { - publicAreaList: [] + publicAreaList: []; } export interface FlightPlanArea { - address: string, - coordinates: string, - redius: string, - altitude_m: string, - altitude_ft: string, + address: string; + coordinates: string; + redius: string; + altitude_m: string; + altitude_ft: string; } export interface FlightPlanData { - planSno?: number, - groupId: string, - cstmrSno: number, - memberName: string, - email: string, - hpno: string, - clncd: string, - addr: string, - addrDtlCn: string, - zip: string, - schFltStDt: string, - schFltEndDt: string, - fltPurpose: string, - aprvlYn: string, - delYn: string, - createUserId: string, - createDt: string, - updateUserId: string, - updateDt: string, - areaList?: FlightPlanAreaDataList | undefined, - pilotList?: FlightPlanPilotDataList | undefined, - arcrftList?: FlightPlanArcrftDataList | undefined + planSno?: number; + groupId: string; + cstmrSno: number; + memberName: string; + email: string; + hpno: string; + clncd: string; + addr: string; + addrDtlCn: string; + zip: string; + schFltStDt: string; + schFltEndDt: string; + fltPurpose: string; + aprvlYn: string; + delYn: string; + createUserId: string; + createDt: string; + updateUserId: string; + updateDt: string; + areaList?: FlightPlanAreaDataList | undefined; + pilotList?: FlightPlanPilotDataList | undefined; + arcrftList?: FlightPlanArcrftDataList | undefined; // docState: string } export interface FlightPlanAreaData { - planAreaSno?: number, - planSno: number, - areaType: string, - fltMethod: string, - bufferZone: number, - fltElev: string, - createUserId?: string, - createDt?: string, - updateUserId?: string, - updateDt?: string, - coordList?: FlightPlanAreaCoordDataList | undefined - bufferCoordList?: FlightPlanAreaCoordDataList | undefined + planAreaSno?: number; + planSno: number; + areaType: string; + fltMethod: string; + bufferZone: number; + fltElev: string; + createUserId?: string; + createDt?: string; + updateUserId?: string; + updateDt?: string; + coordList?: FlightPlanAreaCoordDataList | undefined; + bufferCoordList?: FlightPlanAreaCoordDataList | undefined; // docState: string, } -export interface FlightPlanAreaDataList extends Array {}; +export interface FlightPlanAreaDataList extends Array {} export interface FlightPlanAreaCoordData { - planAreaCoordSno?: number, - planAreaSno?: number, - lat: number, - lon: number, - createUserId?: string, - createDt?: string + planAreaCoordSno?: number; + planAreaSno?: number; + lat: number; + lon: number; + createUserId?: string; + createDt?: string; // docState: string } -export interface FlightPlanAreaCoordDataList extends Array {}; +export interface FlightPlanAreaCoordDataList + extends Array {} export interface FlightPlanPilotData { - planPilotSno?: number, - planSno?: number, - cstmrSno?: number, - groupNm: string, - memberName: string, - email: string, - hpno: string, - clncd: string, - addr: string, - addrDtlCn: string, - zip: string, - qlfcNo: string, - carrer: string, - createUserId: string, - createDt: string, - updateUserId: string, - updateDt: string + planPilotSno?: number; + planSno?: number; + cstmrSno?: number; + groupNm: string; + memberName: string; + email: string; + hpno: string; + clncd: string; + addr: string; + addrDtlCn: string; + zip: string; + qlfcNo: string; + carrer: string; + createUserId: string; + createDt: string; + updateUserId: string; + updateDt: string; // docState: string } -export interface FlightPlanPilotDataList extends Array {}; +export interface FlightPlanPilotDataList extends Array {} export interface FlightPlanArcrftData { - planArcrftSno: number, - planSno: number, - arcrftSno: number, - idntfNum: string, - groupNm: string, - prdctNum: string, - arcrftTypeCd: string, - arcrftModelNm: string, - prdctCmpnNm: string, - prdctDate: string, - arcrftLngth: number, - arcrftWdth: number, - arcrftHght: number, - arcrftWght: number, - wghtTypeCd: string, - imageUrl: string, - takeoffWght: number, - useYn: string, - cameraYn: string, - insrncYn: string, - ownerNm: string, - createUserId: string, - createDt: string, - updateUserId: string, - updateDt: string + planArcrftSno: number; + planSno: number; + arcrftSno: number; + idntfNum: string; + groupNm: string; + prdctNum: string; + arcrftTypeCd: string; + arcrftModelNm: string; + prdctCmpnNm: string; + prdctDate: string; + arcrftLngth: number; + arcrftWdth: number; + arcrftHght: number; + arcrftWght: number; + wghtTypeCd: string; + imageUrl: string; + takeoffWght: number; + useYn: string; + cameraYn: string; + insrncYn: string; + ownerNm: string; + createUserId: string; + createDt: string; + updateUserId: string; + updateDt: string; // docState: string } -export interface FlightPlanArcrftDataList extends Array {}; +export interface FlightPlanArcrftDataList extends Array {} // rq export interface FlightPlanListRqData { - groupId: string, - cstmrSno: number, - schFltStDt: string, - schFltEndDt: string, - aprvlYn: string + groupId: string; + cstmrSno: number; + schFltStDt: string; + schFltEndDt: string; + aprvlYn: string; } export interface FlightPlanAprovRqData { - planSnoList: [number], - aprvlYn: string + planSnoList: [number]; + aprvlYn: string; } export interface PilotSelectData { - groupNm: string, - cstmrSno: string, - memberName: string, - email: string, - hpno: string, - clncd: string, - addr: string, - addrDtlCn: string, - zip: string + groupNm: string; + cstmrSno: string; + memberName: string; + email: string; + hpno: string; + clncd: string; + addr: string; + addrDtlCn: string; + zip: string; } export interface BasFlightAprovData { - planSnoList: [number] - aprvlYn: string + planSnoList: [number]; + aprvlYn: string; +} + +export interface BasFlightScheduleList { + groupId: string; + groupNm: string; + memberName: string; + ownerNm: string; + idntfNum: string; + schFltStDt: string; + schFltEndDt: string; +} + +export interface BasFlightScheduleData { + count: number; + list: [BasFlightScheduleList]; } export const initFlight = { @@ -195,8 +212,12 @@ export const initFlight = { addr: '', addrDtlCn: '', zip: '', - schFltStDt: moment().set({'h': 0, 'm': 0, 's': 0}).format('YYYY-MM-DD HH:mm:ss'), - schFltEndDt: moment().set({'h': 0, 'm': 0, 's': 0}).format('YYYY-MM-DD HH:mm:ss'), + schFltStDt: moment() + .set({ h: 0, m: 0, s: 0 }) + .format('YYYY-MM-DD HH:mm:ss'), + schFltEndDt: moment() + .set({ h: 0, m: 0, s: 0 }) + .format('YYYY-MM-DD HH:mm:ss'), fltPurpose: '', aprvlYn: '', delYn: '', @@ -204,80 +225,90 @@ export const initFlight = { createDt: '', updateUserId: '', updateDt: '', - areaList: [{ - planAreaSno: 0, - planSno: 0, - areaType: '', - fltMethod: '', - bufferZone: 0, - fltElev: '', - createUserId: '', - createDt: '', - updateUserId: '', - updateDt: '', - coordList: [{ - planAreaCoordSno: 0, + areaList: [ + { planAreaSno: 0, - lat: 0, - lon: 0, + planSno: 0, + areaType: '', + fltMethod: '', + bufferZone: 0, + fltElev: '', createUserId: '', - createDt: '' - }], - bufferCoordList: [{ - planAreaCoordSno: 0, - planAreaSno: 0, - lat: 0, - lon: 0, + createDt: '', + updateUserId: '', + updateDt: '', + coordList: [ + { + planAreaCoordSno: 0, + planAreaSno: 0, + lat: 0, + lon: 0, + createUserId: '', + createDt: '' + } + ], + bufferCoordList: [ + { + planAreaCoordSno: 0, + planAreaSno: 0, + lat: 0, + lon: 0, + createUserId: '', + createDt: '' + } + ] + } + ], + pilotList: [ + { + planPilotSno: 0, + planSno: 0, + cstmrSno: 0, + groupNm: '', + memberName: '', + email: '', + hpno: '', + clncd: '+82', + addr: '', + addrDtlCn: '', + zip: '', + qlfcNo: '', + carrer: '', + createUserId: '', + createDt: '', + updateUserId: '', + updateDt: '' + } + ], + arcrftList: [ + { + planArcrftSno: 0, + planSno: 0, + arcrftSno: 0, + idntfNum: '', + groupNm: '', + prdctNum: '', + arcrftTypeCd: '', + arcrftModelNm: '', + prdctCmpnNm: '', + prdctDate: '', + arcrftLngth: 0, + arcrftWdth: 0, + arcrftHght: 0, + arcrftWght: 0, + wghtTypeCd: '', + imageUrl: '', + takeoffWght: 0, + useYn: '', + cameraYn: '', + insrncYn: '', + ownerNm: '', createUserId: '', - createDt: '' - }], - }], - pilotList: [{ - planPilotSno: 0, - planSno: 0, - cstmrSno: 0, - groupNm: '', - memberName: '', - email: '', - hpno: '', - clncd: '+82', - addr: '', - addrDtlCn: '', - zip: '', - qlfcNo: '', - carrer: '', - createUserId: '', - createDt: '', - updateUserId: '', - updateDt: '' - }], - arcrftList: [{ - planArcrftSno: 0, - planSno: 0, - arcrftSno: 0, - idntfNum: '', - groupNm: '', - prdctNum: '', - arcrftTypeCd: '', - arcrftModelNm: '', - prdctCmpnNm: '', - prdctDate: '', - arcrftLngth: 0, - arcrftWdth: 0, - arcrftHght: 0, - arcrftWght: 0, - wghtTypeCd: '', - imageUrl: '', - takeoffWght: 0, - useYn: '', - cameraYn: '', - insrncYn: '', - ownerNm: '', - createUserId: '', - createDt: '', - updateUserId: '', - updateDt: '' - }] + createDt: '', + updateUserId: '', + updateDt: '' + } + ] }, pilotList: undefined, arcrftList: undefined, @@ -286,10 +317,10 @@ export const initFlight = { areaCoordList: undefined, areaList: undefined, aprvList: undefined, - aprvProc: undefined + aprvProc: undefined, + scheduleList: [] }; - export const initFlightBas = { plan: { planSno: 0, @@ -302,8 +333,12 @@ export const initFlightBas = { addr: '', addrDtlCn: '', zip: '', - schFltStDt: moment().set({'h': 0, 'm': 0, 's': 0}).format('YYYY-MM-DD HH:mm:ss'), - schFltEndDt: moment().set({'h': 0, 'm': 0, 's': 0}).format('YYYY-MM-DD HH:mm:ss'), + schFltStDt: moment() + .set({ h: 0, m: 0, s: 0 }) + .format('YYYY-MM-DD HH:mm:ss'), + schFltEndDt: moment() + .set({ h: 0, m: 0, s: 0 }) + .format('YYYY-MM-DD HH:mm:ss'), fltPurpose: '', aprvlYn: '', delYn: '', @@ -313,7 +348,7 @@ export const initFlightBas = { updateDt: '', areaList: undefined, pilotList: undefined, - arcrftList: undefined, + arcrftList: undefined }, pilot: { planPilotSno: 0, @@ -393,8 +428,12 @@ export const initFlightBas = { addr: '', addrDtlCn: '', zip: '', - schFltStDt: moment().set({'h': 0, 'm': 0, 's': 0}).format('YYYY-MM-DD HH:mm:ss'), - schFltEndDt: moment().set({'h': 0, 'm': 0, 's': 0}).format('YYYY-MM-DD HH:mm:ss'), + schFltStDt: moment() + .set({ h: 0, m: 0, s: 0 }) + .format('YYYY-MM-DD HH:mm:ss'), + schFltEndDt: moment() + .set({ h: 0, m: 0, s: 0 }) + .format('YYYY-MM-DD HH:mm:ss'), fltPurpose: '', aprvlYn: '', delYn: '', @@ -402,79 +441,89 @@ export const initFlightBas = { createDt: '', updateUserId: '', updateDt: '', - areaList: [{ - planAreaSno: 0, - planSno: 0, - areaType: '', - fltMethod: '', - bufferZone: 0, - fltElev: '', - createUserId: '', - createDt: '', - updateUserId: '', - updateDt: '', - coordList: [{ - planAreaCoordSno: 0, + areaList: [ + { planAreaSno: 0, - lat: 0, - lon: 0, + planSno: 0, + areaType: '', + fltMethod: '', + bufferZone: 0, + fltElev: '', createUserId: '', - createDt: '' - }], - bufferCoordList: [{ - planAreaCoordSno: 0, - planAreaSno: 0, - lat: 0, - lon: 0, + createDt: '', + updateUserId: '', + updateDt: '', + coordList: [ + { + planAreaCoordSno: 0, + planAreaSno: 0, + lat: 0, + lon: 0, + createUserId: '', + createDt: '' + } + ], + bufferCoordList: [ + { + planAreaCoordSno: 0, + planAreaSno: 0, + lat: 0, + lon: 0, + createUserId: '', + createDt: '' + } + ] + } + ], + pilotList: [ + { + planPilotSno: 0, + planSno: 0, + cstmrSno: 0, + groupNm: '', + memberName: '', + email: '', + hpno: '', + clncd: '+82', + addr: '', + addrDtlCn: '', + zip: '', + qlfcNo: '', + carrer: '', + createUserId: '', + createDt: '', + updateUserId: '', + updateDt: '' + } + ], + arcrftList: [ + { + planArcrftSno: 0, + planSno: 0, + arcrftSno: 0, + idntfNum: '', + groupNm: '', + prdctNum: '', + arcrftTypeCd: '', + arcrftModelNm: '', + prdctCmpnNm: '', + prdctDate: '', + arcrftLngth: 0, + arcrftWdth: 0, + arcrftHght: 0, + arcrftWght: 0, + wghtTypeCd: '', + imageUrl: '', + takeoffWght: 0, + useYn: '', + cameraYn: '', + insrncYn: '', + ownerNm: '', createUserId: '', - createDt: '' - }], - }], - pilotList: [{ - planPilotSno: 0, - planSno: 0, - cstmrSno: 0, - groupNm: '', - memberName: '', - email: '', - hpno: '', - clncd: '+82', - addr: '', - addrDtlCn: '', - zip: '', - qlfcNo: '', - carrer: '', - createUserId: '', - createDt: '', - updateUserId: '', - updateDt: '' - }], - arcrftList: [{ - planArcrftSno: 0, - planSno: 0, - arcrftSno: 0, - idntfNum: '', - groupNm: '', - prdctNum: '', - arcrftTypeCd: '', - arcrftModelNm: '', - prdctCmpnNm: '', - prdctDate: '', - arcrftLngth: 0, - arcrftWdth: 0, - arcrftHght: 0, - arcrftWght: 0, - wghtTypeCd: '', - imageUrl: '', - takeoffWght: 0, - useYn: '', - cameraYn: '', - insrncYn: '', - ownerNm: '', - createUserId: '', - createDt: '', - updateUserId: '', - updateDt: '' - }] + createDt: '', + updateUserId: '', + updateDt: '' + } + ] } -} +}; diff --git a/src/modules/basis/flight/reducers/basisFlightReducer.ts b/src/modules/basis/flight/reducers/basisFlightReducer.ts index fb164523..d048aa8f 100644 --- a/src/modules/basis/flight/reducers/basisFlightReducer.ts +++ b/src/modules/basis/flight/reducers/basisFlightReducer.ts @@ -129,4 +129,11 @@ export const flightReducer = createReducer( const data = action.payload; draft.aprvProc = data; }) + ) + // 비행운항 스케줄 + .handleAction(Actions.FLIGHT_SCHEDULE_LIST.success, (state, action) => + produce(state, draft => { + const data = action.payload; + draft.scheduleList = data; + }) ); diff --git a/src/modules/basis/flight/sagas/basisFlightSaga.ts b/src/modules/basis/flight/sagas/basisFlightSaga.ts index 658573f2..b5ba4b4d 100644 --- a/src/modules/basis/flight/sagas/basisFlightSaga.ts +++ b/src/modules/basis/flight/sagas/basisFlightSaga.ts @@ -9,15 +9,19 @@ import { import * as MessageActions from '../../../comn/message/actions/comnMessageAction'; import * as Actions from '../actions/basisFlightAction'; import * as Apis from '../apis/basisFlightApi'; -import { FlightPlanData } from "../models/basisFlightModel"; +import { FlightPlanData } from '../models/basisFlightModel'; import { FLIGHT_PLAN_ARCRFT_LIST, - FLIGHT_PLAN_CREATE, FLIGHT_PLAN_DELETE, + FLIGHT_PLAN_CREATE, + FLIGHT_PLAN_DELETE, FLIGHT_PLAN_DETAIL, - FLIGHT_PLAN_PILOT_LIST, FLIGHT_PLAN_UPDATE -} from "../actions/basisFlightAction"; + FLIGHT_PLAN_PILOT_LIST, + FLIGHT_PLAN_UPDATE +} from '../actions/basisFlightAction'; -function* listAreaSaga(action: ActionType) { +function* listAreaSaga( + action: ActionType +) { try { const response = yield call(Apis.flightPlanAPI.area); @@ -39,9 +43,7 @@ function* listAreaSaga(action: ActionType) { +function* listPlanSaga( + action: ActionType +) { try { const data = action.payload; const response = yield call(Apis.flightPlanAPI.list, data); @@ -79,18 +83,16 @@ function* listPlanSaga(action: ActionType) { +function* detailPlanSaga( + action: ActionType +) { try { const data = action.payload; const response = yield call(Apis.flightPlanAPI.detail, data); @@ -106,24 +108,22 @@ function* detailPlanSaga(action: ActionType) { +function* createPlanSaga( + action: ActionType +) { try { const detail = action.payload; const res = yield call(Apis.flightPlanAPI.create, detail); - const {data} = res; + const { data } = res; if (data.result) { yield put( @@ -144,7 +144,7 @@ function* createPlanSaga(action: ActionType) { +function* updatePlanSaga( + action: ActionType +) { try { const detail = action.payload; const res = yield call(Apis.flightPlanAPI.update, detail); - const {data} = res; + const { data } = res; if (data.result) { yield put( @@ -216,12 +218,14 @@ function* updatePlanSaga(action: ActionType) { +function* deletePlanSaga( + action: ActionType +) { try { const id = action.payload; const res = yield call(Apis.flightPlanAPI.delete, id); - const {data} = res; + const { data } = res; if (data.result) { yield put( @@ -249,7 +253,9 @@ function* deletePlanSaga(action: ActionType) { +function* listPilotSaga( + action: ActionType +) { try { const data = action.payload; const response = yield call(Apis.flightPlanAPI.listPilot, data); @@ -265,18 +271,16 @@ function* listPilotSaga(action: ActionType) { +function* listArcrftSaga( + action: ActionType +) { try { const data = action.payload; const response = yield call(Apis.flightPlanAPI.listArcrft, data); @@ -292,18 +296,16 @@ function* listArcrftSaga(action: ActionType) { +function* listBuffer( + action: ActionType +) { try { const data = action.payload; const response = yield call(Apis.flightPlanAPI.listBuffer, data); @@ -319,19 +321,16 @@ function* listBuffer(action: ActionType) { +function* listAprvSaga( + action: ActionType +) { try { const data = action.payload; const response = yield call(Apis.flightPlanAPI.aprvList, data); @@ -347,25 +346,22 @@ function* listAprvSaga(action: ActionType) { +function* aprvProcSaga( + action: ActionType +) { try { - const sendData = action.payload; const res = yield call(Apis.flightPlanAPI.aprvProc, sendData); - const {data} = res; + const { data } = res; if (data.result) { yield put( @@ -376,9 +372,7 @@ function* aprvProcSaga(action: ActionType +) { + try { + const data = action.payload; + const response = yield call(Apis.flightPlanAPI.scheduleList, data); + + if (response.errorCode) { + yield put( + MessageActions.IS_ERROR({ + errorCode: response.errorCode, + errorMessage: response.errorMessage, + isHistoryBack: false, + isRefresh: false + }) + ); + return; + } + + yield put(Actions.FLIGHT_SCHEDULE_LIST.success(response.data || [])); + } catch (error: any) { + yield put(Actions.FLIGHT_SCHEDULE_LIST.failure(error)); + } +} + function* searchAreaSaga( action: ActionType ) { - try{ + try { const { query } = action.payload; const res = yield call(Apis.flightPlanAPI.searchArea, { query }); @@ -422,15 +442,16 @@ function* searchAreaSaga( export function* flightSaga() { yield takeEvery(Actions.PUBLIC_AREA_LIST.request, listAreaSaga); // yield takeEvery(Actions.FLIGHT_PLAN_AREA.request, createFlightPlanArea); - yield takeEvery(Actions.FLIGHT_PLAN_LIST.request, listPlanSaga) - yield takeEvery(Actions.FLIGHT_PLAN_DETAIL.request, detailPlanSaga) - yield takeEvery(Actions.FLIGHT_PLAN_CREATE.request, createPlanSaga) - yield takeEvery(Actions.FLIGHT_PLAN_UPDATE.request, updatePlanSaga) - yield takeEvery(Actions.FLIGHT_PLAN_DELETE.request, deletePlanSaga) - yield takeEvery(Actions.FLIGHT_PLAN_PILOT_LIST.request, listPilotSaga) - yield takeEvery(Actions.FLIGHT_PLAN_ARCRFT_LIST.request, listArcrftSaga) - yield takeEvery(Actions.FLIGHT_PLAN_AREA_BUFFER_LIST.request, listBuffer) - yield takeEvery(Actions.FLIGHT_APRV_LIST.request, listAprvSaga) - yield takeEvery(Actions.FLIGHT_APRV_PROC.request, aprvProcSaga) - yield takeEvery(Actions.SEARCH_AREA.request, searchAreaSaga) + yield takeEvery(Actions.FLIGHT_PLAN_LIST.request, listPlanSaga); + yield takeEvery(Actions.FLIGHT_PLAN_DETAIL.request, detailPlanSaga); + yield takeEvery(Actions.FLIGHT_PLAN_CREATE.request, createPlanSaga); + yield takeEvery(Actions.FLIGHT_PLAN_UPDATE.request, updatePlanSaga); + yield takeEvery(Actions.FLIGHT_PLAN_DELETE.request, deletePlanSaga); + yield takeEvery(Actions.FLIGHT_PLAN_PILOT_LIST.request, listPilotSaga); + yield takeEvery(Actions.FLIGHT_PLAN_ARCRFT_LIST.request, listArcrftSaga); + yield takeEvery(Actions.FLIGHT_PLAN_AREA_BUFFER_LIST.request, listBuffer); + yield takeEvery(Actions.FLIGHT_APRV_LIST.request, listAprvSaga); + yield takeEvery(Actions.FLIGHT_APRV_PROC.request, aprvProcSaga); + yield takeEvery(Actions.SEARCH_AREA.request, searchAreaSaga); + yield takeEvery(Actions.FLIGHT_SCHEDULE_LIST.request, scheduleListSaga); } diff --git a/src/utility/hooks/useInterval.js b/src/utility/hooks/useInterval.js new file mode 100644 index 00000000..4b072220 --- /dev/null +++ b/src/utility/hooks/useInterval.js @@ -0,0 +1,21 @@ +import { useEffect, useRef } from 'react'; + +const useInterval = (callback, delay) => { + const savedCallback = useRef(null); + + useEffect(() => { + savedCallback.current = callback; + }, [callback]); + + useEffect(() => { + const executeCallback = () => { + savedCallback.current(); + }; + + const timerId = setInterval(executeCallback, delay); + + return () => clearInterval(timerId); + }, []); +}; + +export default useInterval; diff --git a/src/views/weather/WeatherView.js b/src/views/weather/WeatherView.js index 72d2a1d8..5f456d12 100644 --- a/src/views/weather/WeatherView.js +++ b/src/views/weather/WeatherView.js @@ -48,7 +48,6 @@ const WeatherView = () => { easing: 'easeOutCubic' }; // map.morph(latlng, 16, options) - console.log(map); }; const handleEnter = e => { if (e.key == 'Enter') {