Browse Source

대시보드(드론 별 비행운항 목록) api 작업 및 error 처리

pull/2/head
김장현 10 months ago
parent
commit
88158d8e1a
  1. 46
      src/components/dashboard/DroneFlightSchedule.js
  2. 13
      src/containers/main/dash/MainDashContainer.js
  3. 7
      src/modules/main/dash/apis/mainDashApi.ts
  4. 13
      src/modules/main/dash/models/mainDashModel.ts
  5. 66
      src/modules/main/dash/sagas/mainDashSaga.ts

46
src/components/dashboard/DroneFlightSchedule.js

@ -4,75 +4,63 @@ import { GridDatabase } from '../../components/crud/grid/GridDatatable';
const columns = [ const columns = [
{ {
id: 'a', id: 'groupNm',
name: '그룹 몇', name: '그룹 몇',
minWidth: '50px', minWidth: '50px',
center: true, center: true,
cell: (row, i) => <div>{row.a}</div> cell: (row, i) => <div>{row.groupNm}</div>
}, },
{ {
id: 'b', id: 'memberName',
name: '조종자', name: '조종자',
minWidth: '50px', minWidth: '50px',
center: true, center: true,
cell: (row, i) => <div>{row.b}</div> cell: (row, i) => <div>{row.memberName}</div>
}, },
{ {
id: 'c', id: 'idntfNum',
name: '기체 신고 번호', name: '기체 신고 번호',
minWidth: '50px', minWidth: '50px',
center: true, center: true,
cell: row => { cell: row => {
return <div>{row.c}</div>; return <div>{row.idntfNum}</div>;
} }
}, },
{ {
id: 'd', id: 'cntrlStDt',
name: '비행 시작 시간', name: '비행 시작 시간',
minWidth: '50px', minWidth: '50px',
center: true, center: true,
cell: row => { cell: row => {
return <div>{row.d}</div>; return <div>{row.cntrlStDt}</div>;
} }
}, },
{ {
id: 'e', id: 'cntrlEndDt',
name: '비행 종료 시간', name: '비행 종료 시간',
left: true, left: true,
cell: row => { cell: row => {
return <div>{row.e}</div>; return <div>{row.cntrlEndDt}</div>;
} }
}, },
{ {
id: 'e', id: 'totalFlightTime',
name: '총 예상 비행시간', name: '총 예상 비행시간',
left: true, left: true,
cell: row => { cell: row => {
return <div>{row.f}</div>; return <div>{row.totalFlightTime}</div>;
} }
}, },
{ {
id: 'e', id: 'status',
name: '상태', name: '상태',
left: true, left: true,
cell: row => { cell: row => {
return <div>{row.g}</div>; return <div>{row.status}</div>;
} }
} }
]; ];
const dummyData = [
{
a: '공항공사',
b: '홍길동',
c: 'PA123456',
d: '2023-11-11 10:00',
e: '2023-11-11 11:00',
f: '01:00',
g: '비행완료'
}
];
export default function DroneFlightSchedule({ pageMove, data }) { export default function DroneFlightSchedule({ pageMove, data }) {
return ( return (
<Card> <Card>
@ -90,11 +78,7 @@ export default function DroneFlightSchedule({ pageMove, data }) {
</div> </div>
</CardHeader> </CardHeader>
<CardBody> <CardBody>
<GridDatabase <GridDatabase data={data} count={data.length} columns={columns} />
data={dummyData}
count={dummyData.length}
columns={columns}
/>
</CardBody> </CardBody>
</Card> </Card>
); );

13
src/containers/main/dash/MainDashContainer.js

@ -8,6 +8,7 @@ import { DashboardGroupList } from '../../../components/dashboard/DashboardGroup
import { DashboardStcsArea } from '../../../components/dashboard/DashboardStcsArea'; import { DashboardStcsArea } from '../../../components/dashboard/DashboardStcsArea';
import { DashboardStcsDay } from '../../../components/dashboard/DashboardStcsDay'; import { DashboardStcsDay } from '../../../components/dashboard/DashboardStcsDay';
import * as Actions from '../../../modules/main/dash/actions/mainDashAction'; import * as Actions from '../../../modules/main/dash/actions/mainDashAction';
import { MessageErrorModal } from '../../../components/message/MessageErrorModal';
import '@styles/react/libs/flatpickr/flatpickr.scss'; import '@styles/react/libs/flatpickr/flatpickr.scss';
import '@styles/react/libs/tables/react-dataTable-component.scss'; import '@styles/react/libs/tables/react-dataTable-component.scss';
import '../../../assets/css/custom.css'; import '../../../assets/css/custom.css';
@ -85,7 +86,11 @@ export const MainDashContainer = () => {
history.push(url); history.push(url);
}; };
useEffect(() => { useEffect(() => {
dispatch(Actions.DASHBOARD_DATA.request()); dispatch(
Actions.DASHBOARD_DATA.request({
serviceType: 'all'
})
);
handlerStcsDaySearch(dayStartDate); handlerStcsDaySearch(dayStartDate);
handlerStcsAreaSearch(areaStartDate); handlerStcsAreaSearch(areaStartDate);
// handlerGroupSearch(); // handlerGroupSearch();
@ -122,7 +127,10 @@ export const MainDashContainer = () => {
<div className='dashboard-section'> <div className='dashboard-section'>
<Row> <Row>
<Col lg={8} md={12} className='dashboard-chart'> <Col lg={8} md={12} className='dashboard-chart'>
<DroneFlightSchedule pageMove={handlerGroupDetail} data={[]} /> <DroneFlightSchedule
pageMove={handlerGroupDetail}
data={dashboardData?.dronOperationList || []}
/>
</Col> </Col>
<Col lg={4} md={12} className='dashboard-chart'> <Col lg={4} md={12} className='dashboard-chart'>
@ -173,6 +181,7 @@ export const MainDashContainer = () => {
</Col> </Col>
</Row> </Row>
</div> */} </div> */}
<MessageErrorModal />
</div> </div>
); );
}; };

7
src/modules/main/dash/apis/mainDashApi.ts

@ -44,6 +44,11 @@ export const mainDashAPI = {
return await axios.get('api/main/dash/stcs/dailyflight'); return await axios.get('api/main/dash/stcs/dailyflight');
}, },
dronSituation: async () => { dronSituation: async () => {
return await axios.get('api/main/dash/stcs/dron-flight/'); return await axios.get('api/main/dash/stcs/dron-flight');
},
dronOperationList: async (serviceType: string) => {
return await axios.get(
`api/main/dash/dron-flight/list?serviceType=${serviceType}`
);
} }
}; };

13
src/modules/main/dash/models/mainDashModel.ts

@ -18,6 +18,16 @@ export enum EDronStatus {
flightWaiting = '비행 대기 중 ' flightWaiting = '비행 대기 중 '
} }
export interface IDronOperationList {
groupNm: string;
memberName: string;
idntfNum: string;
cntrlStDt: string;
cntrlEndDt: string;
totalFlightTime: string;
status: string;
}
export interface IDronSituation { export interface IDronSituation {
typeCd: string; typeCd: string;
count: number; count: number;
@ -76,10 +86,11 @@ export interface IDashBoardData {
dailyFlightCount: IDailyFlightCount[]; dailyFlightCount: IDailyFlightCount[];
dailyFlightPlan: IDailyFlightPlan[]; dailyFlightPlan: IDailyFlightPlan[];
dronSituation: IDronSituation[]; dronSituation: IDronSituation[];
dronOperationList: IDronOperationList[];
} }
export interface IDashBoardRq { export interface IDashBoardRq {
stcsDay: string; serviceType: string;
} }
export const initMainDash = { export const initMainDash = {

66
src/modules/main/dash/sagas/mainDashSaga.ts

@ -122,50 +122,54 @@ function* dashboardData(
action: ActionType<typeof Actions.DASHBOARD_DATA.request> action: ActionType<typeof Actions.DASHBOARD_DATA.request>
) { ) {
try { try {
const { serviceType } = action.payload;
/* /*
dailyFlightWarn: 일일
dailyFlightPlan: 일일 dailyFlightPlan: 일일
dailyFlightCount: 일일 dailyFlightCount: 일일
dailyFlighWarn: 일일 dronSituation: 드론
dronOperationList: 드론
*/ */
const { dailyFlighWarn, dailyFlightPlan, dailyFlightCount, dronSituation } = const res = yield all([
yield all({ call(Apis.mainDashAPI.dailyFlightWarn),
dailyFlighWarn: call(Apis.mainDashAPI.dailyFlightWarn), call(Apis.mainDashAPI.dailyFlightPlan),
dailyFlightPlan: call(Apis.mainDashAPI.dailyFlightPlan), call(Apis.mainDashAPI.dailyFlightCount),
dailyFlightCount: call(Apis.mainDashAPI.dailyFlightCount), call(Apis.mainDashAPI.dronSituation),
dronSituation: call(Apis.mainDashAPI.dronSituation) call(Apis.mainDashAPI.dronOperationList, serviceType)
}); ]);
// if (errorCode) { let errorCheck = res.filter(i => i.hasOwnProperty('errorCode'));
// // 오류메시지 호출 if (errorCheck.length > 0) {
// yield put( // 오류메시지 호출
// MessageActions.IS_ERROR({ yield put(
// errorCode: errorCode, MessageActions.IS_ERROR({
// errorMessage: '처리중 오류가 발생하였습니다', errorCode: errorCheck[0].errorCode,
// isHistoryBack: false, errorMessage: '처리중 오류가 발생하였습니다',
// isRefresh: false isHistoryBack: false,
// }) isRefresh: false
// ); })
);
// return; return;
// } }
let dronSituationArr: { typeCd: string; count: number }[] = []; let dronSituationArr: { typeCd: string; count: number }[] = [];
if (res[3].data) {
Object.keys(dronSituation.data).forEach(i => { Object.keys(res[3].data).forEach(i => {
dronSituationArr.push({ dronSituationArr.push({
typeCd: EDronStatus[`${i}`], typeCd: EDronStatus[`${i}`],
count: Number(dronSituation.data[i]) count: Number(res[3].data[i])
}); });
}); });
}
console.log(res);
yield put( yield put(
Actions.DASHBOARD_DATA.success({ Actions.DASHBOARD_DATA.success({
dailyFlightWarn: dailyFlighWarn.data.slice( dailyFlightWarn: res[0].data.slice(0, res[0].data.length - 1),
0, dailyFlightPlan: res[1].data,
dailyFlightPlan.data.length - 1 dailyFlightCount: res[2].data,
), dronSituation: dronSituationArr,
dailyFlightCount: dailyFlightCount.data, dronOperationList: res[4].data
dailyFlightPlan: dailyFlightPlan.data,
dronSituation: dronSituationArr
}) })
); );
} catch (error) { } catch (error) {

Loading…
Cancel
Save