Browse Source

moment -> dayjs 변경

master
junh_eee(이준희) 8 months ago
parent
commit
8a1adc1307
  1. 70
      src/components/analysis/history/AnalysisHistorySearch.js
  2. 13
      src/components/analysis/simulation/AnalysisSimuationInfo.js
  3. 34
      src/components/analysis/simulation/AnalysisSimulationDetail.js
  4. 1
      src/components/analysis/simulation/AnalysisSimulationReport.js
  5. 26
      src/components/basis/dron/BasisDronSearch.js
  6. 9
      src/components/basis/dron/BasisIdntform.js
  7. 17
      src/components/basis/group/BasisGroupDetailJoinSearch.js
  8. 29
      src/components/basis/group/BasisGroupSearch.js
  9. 69
      src/components/basis/group/BasisGroupUsersSearch.js
  10. 92
      src/containers/analysis/history/AnalysisHistoryContainer.js
  11. 25
      src/containers/analysis/history/AnalysisHistoryDetailContainer.js
  12. 28
      src/containers/analysis/simulator/AnalysisSimulationContainer.js
  13. 1
      src/containers/basis/dron/BasisDronContainer.js

70
src/components/analysis/history/AnalysisHistorySearch.js

@ -1,4 +1,4 @@
import moment from 'moment';
import dayjs from 'dayjs';
import { useState } from 'react';
import { Calendar, Search } from 'react-feather';
import Flatpickr from 'react-flatpickr';
@ -24,14 +24,10 @@ export const AnalysisHistorySearch = props => {
// }
// }, [props.dateType, props.isClick]);
const [diffDay, setDiffDay] = useState(
moment(props.searchData.endDate).diff(
moment(props.searchData.stDate),
'days'
)
dayjs(props.searchData.endDate).diff(dayjs(props.searchData.stDate), 'day')
);
return (
// <div className='pal-card-box'>
<div>
<Row>
<Col>
@ -138,52 +134,6 @@ export const AnalysisHistorySearch = props => {
</div>
</div>
</dt>
{/* <dt>
<div className='search-box'>
<div className='search-list-ti'>중량</div>
<div className='search-list'>
<div className='search-list-cont'>
<CustomInput
inline
type='checkbox'
id='exampleCustomCheckbox'
label='전체'
defaultChecked
/>
<CustomInput
inline
type='checkbox'
id='exampleCustomCheckbox2'
label='250g 이하'
/>
<CustomInput
inline
type='checkbox'
id='exampleCustomCheckbox3'
label='250g 초과~2kg이하'
/>
<CustomInput
inline
type='checkbox'
id='exampleCustomCheckbox4'
label='2kg초과~7kg이하'
/>
<CustomInput
inline
type='checkbox'
id='exampleCustomCheckbox5'
label='7kg초과~25kg이하'
/>
<CustomInput
inline
type='checkbox'
id='exampleCustomCheckbox6'
label='25kg초과~150kg이하'
/>
</div>
</div>
</div>
</dt> */}
<dt>
<div className='search-box'>
<div className='search-list-ti'>식별번호</div>
@ -203,22 +153,6 @@ export const AnalysisHistorySearch = props => {
placeholder='식별번호를 입력하세요'
/>
</Col>
{/* <Col className='list-input' xl='4' md='4' sm='12'>
<Input
type='email'
id='basicInput'
size='sm'
placeholder='input이 2개'
/>
</Col>
<Col className='list-input' xl='4' md='4' sm='12'>
<Input
type='email'
id='basicInput'
size='sm'
placeholder='input이 3개'
/>
</Col> */}
</Row>
</div>
</div>

13
src/components/analysis/simulation/AnalysisSimuationInfo.js

@ -1,4 +1,4 @@
import moment from 'moment';
import dayjs from 'dayjs';
import { useEffect, useState, useRef, useCallback } from 'react';
import { useSelector } from 'react-redux';
import { Spinner } from 'reactstrap';
@ -57,11 +57,6 @@ export const AnalysisSimulationInfo = props => {
{props.data
?.filter(i => i !== undefined)
.map(item => {
// item.idntfNum,
// ':::',
// item.idntfNum.indexOf(props.filterId)
// );
if (item.idntfNum) {
return (
<div
@ -81,7 +76,7 @@ export const AnalysisSimulationInfo = props => {
<dt>
<div className='list-left-txt'>일자</div>
<div className='list-right-txt'>
{moment(item.cntrlStDt).format('YYYY년MM월DD일')}
{dayjs(item.cntrlStDt).format('YYYY년 MM월 DD일')}
</div>
</dt>
<dt>
@ -91,9 +86,9 @@ export const AnalysisSimulationInfo = props => {
<dt>
<div className='list-left-txt'>시작/종료 시간</div>
<div className='list-right-txt'>
{moment(item.cntrlStDt).format('HH:mm')}
{dayjs(item.cntrlStDt).format('HH:mm')}
{' '}/{' '}
{moment(item.cntrlEndDt).format('HH:mm')}
{dayjs(item.cntrlEndDt).format('HH:mm')}
</div>
</dt>
{/* <dt>

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

@ -1,7 +1,7 @@
import '@styles/react/libs/noui-slider/noui-slider.scss';
import { useRef, useEffect } from 'react';
import { useRTL } from '@hooks/useRTL';
import '@styles/react/libs/noui-slider/noui-slider.scss';
import moment from 'moment';
import dayjs from 'dayjs';
import { X } from 'react-feather';
import { AiFillCaretRight, AiOutlinePause } from 'react-icons/ai';
import { IoSettings } from 'react-icons/io5';
@ -60,7 +60,7 @@ export const AnalysisSimulationDetail = props => {
</Button>
<div>
{props.data?.cntrlStDt
? moment(props.data?.cntrlStDt).format('YYYY년 MM월 DD일')
? dayjs(props.data?.cntrlStDt).format('YYYY년 MM월 DD일')
: '-'}{' '}
{props.data?.idntfNum ? props.data?.idntfNum : '-'} 비행 Simulation
</div>
@ -70,23 +70,11 @@ export const AnalysisSimulationDetail = props => {
<div className='simulation-cont'>
<div className='simulation-cont-box drone-info'>
<div className='drone-info-flex'>
{/* <Badge color='primary'>
비행거리<span className='txt'>85.2m</span>
</Badge>
<Badge color='secondary'>
비행시간<span className='txt'>47분24초</span>
</Badge>
<Badge color='primary'>
그룹 <span className='txt'>팔네트웍스</span>
</Badge>
<Badge color='secondary'>
운영자 <span className='txt'>홍길동</span>
</Badge> */}
<Badge color='primary'>
시작일시
<span className='txt'>
{props.data?.cntrlStDt
? moment(props.data?.cntrlStDt).format(
? dayjs(props.data?.cntrlStDt).format(
'MM월 DD일 HH:mm:ss'
)
: '-'}
@ -96,25 +84,13 @@ export const AnalysisSimulationDetail = props => {
종료일시
<span className='txt'>
{props.data?.cntrlEndDt
? moment(props.data?.cntrlEndDt).format(
? dayjs(props.data?.cntrlEndDt).format(
'MM월 DD일 HH:mm:ss'
)
: '-'}
</span>
</Badge>
</div>
{/* <div>
<span className='ti'> 비행시간</span>
<span className='ttxti'>47분24초</span>
</div>
<div>
<span className='ti'>그룹명</span>
<span className='txt'> 네트웍스</span>
</div>
<div>
<span className='ti'>운영자 </span>
<span className='txt'>홍길동</span>
</div> */}
</div>
<div className='simulation-cont-box drone-location'>
<div className='simulation-cont-box-row'>

1
src/components/analysis/simulation/AnalysisSimulationReport.js

@ -1,4 +1,3 @@
import moment from 'moment';
import { useState } from 'react';
import { Calendar, X } from 'react-feather';
import Flatpickr from 'react-flatpickr';

26
src/components/basis/dron/BasisDronSearch.js

@ -1,28 +1,4 @@
import {
Row,
Col,
Table,
Badge,
UncontrolledDropdown,
DropdownMenu,
DropdownItem,
DropdownToggle,
Card,
CardHeader,
CardBody,
CardTitle,
CardSubtitle,
ButtonGroup,
Button,
Input,
CustomInput,
FormGroup
} from 'reactstrap';
import Flatpickr from 'react-flatpickr';
import { MoreVertical, Edit, Trash, Search, File } from 'react-feather';
import { Calendar } from 'react-feather';
import { useEffect, useState } from 'react';
import moment from 'moment';
import { Row, Col, Card, CardBody, Button, Input } from 'reactstrap';
export const BasisDronSearch = props => {
return (

9
src/components/basis/dron/BasisIdntform.js

@ -1,5 +1,4 @@
import React, { useEffect, useState } from 'react';
import moment from 'moment';
import dayjs from 'dayjs';
import {
Row,
@ -111,9 +110,9 @@ export const BasisIdntfForm = props => {
<Input
type='text'
readOnly
value={moment(
props.data[i].updateDt
).format('YY년 MM월DD일 HH:mm')}
value={dayjs(props.data[i].updateDt).format(
'YY년 MM월 DD일 HH:mm'
)}
bsSize='sm'
></Input>
</FormGroup>

17
src/components/basis/group/BasisGroupDetailJoinSearch.js

@ -1,29 +1,14 @@
import {
Row,
Col,
Table,
Badge,
UncontrolledDropdown,
DropdownMenu,
DropdownItem,
DropdownToggle,
Card,
CardHeader,
CardBody,
CardTitle,
CardSubtitle,
ButtonGroup,
Button,
Input,
CustomInput,
Label,
FormGroup
} from 'reactstrap';
import Flatpickr from 'react-flatpickr';
import { MoreVertical, Edit, Trash, Search, File } from 'react-feather';
import { Calendar } from 'react-feather';
import { useEffect, useState } from 'react';
import moment from 'moment';
import { Search } from 'react-feather';
export const BasisGroupDetailJoinSearch = props => {
return (

29
src/components/basis/group/BasisGroupSearch.js

@ -1,28 +1,7 @@
import {
Row,
Col,
Table,
Badge,
UncontrolledDropdown,
DropdownMenu,
DropdownItem,
DropdownToggle,
Card,
CardHeader,
CardBody,
CardTitle,
CardSubtitle,
ButtonGroup,
Button,
Input,
CustomInput,
FormGroup
} from 'reactstrap';
import Flatpickr from 'react-flatpickr';
import { MoreVertical, Edit, Trash, Search, File } from 'react-feather';
import { Calendar } from 'react-feather';
import { Row, Col, Card, CardBody, Button, Input } from 'reactstrap';
import { Search } from 'react-feather';
import { useEffect, useState } from 'react';
import moment from 'moment';
import dayjs from 'dayjs';
export const BasisGroupSearch = props => {
const [isClick, setIsClick] = useState(1);
@ -31,7 +10,7 @@ export const BasisGroupSearch = props => {
useEffect(() => {
props.setParams({
...props.params,
stDate: moment().subtract(dateType, 'day').format('YYYY-MM-DD')
stDate: dayjs().subtract(dateType, 'day').format('YYYY-MM-DD')
});
}, [dateType]);

69
src/components/basis/group/BasisGroupUsersSearch.js

@ -1,33 +1,17 @@
import {
Row,
Col,
Table,
Badge,
UncontrolledDropdown,
DropdownMenu,
DropdownItem,
DropdownToggle,
Card,
CardHeader,
CardBody,
CardTitle,
CardSubtitle,
ButtonGroup,
Button,
Input,
CustomInput,
Label,
FormGroup
} from 'reactstrap';
import Flatpickr from 'react-flatpickr';
import { MoreVertical, Edit, Trash, Search, File } from 'react-feather';
import { Calendar } from 'react-feather';
import { useEffect, useState } from 'react';
import moment from 'moment';
import { Search } from 'react-feather';
export const BasisGroupUsersSearch = props => {
return (
// <div className='pal-card-box'>
<div>
<Row>
<Col>
@ -50,32 +34,6 @@ export const BasisGroupUsersSearch = props => {
<CardBody className='pal-card-body'>
<div className='search-cont'>
<dl>
{/* <dt>
<div className='search-box'>
<div className='search-list-ti'>그룹명</div>
<div className='search-list'>
<div className='search-list-cont'>
<Row>
<Col className='list-input' xl='4' md='4' sm='12'>
<FormGroup className='form-label-group'>
<Input
type='text'
id='groupNm'
name='groupNm'
value={props.params.groupNm || ''}
onChange={props.handlerInput}
onKeyPress={props.onKeyPress}
bsSize='sm'
placeholder='그룹명을 입력하세요'
/>
<Label for='test'>그룹명</Label>
</FormGroup>
</Col>
</Row>
</div>
</div>
</div>
</dt> */}
<dt>
<div className='search-box'>
<div className='search-list-ti'>사용자 </div>
@ -102,31 +60,6 @@ export const BasisGroupUsersSearch = props => {
</div>
</div>
</dt>
{/* <dt>
<div className='search-box'>
<div className='search-list-ti'>권한 </div>
<div className='search-list'>
<div className='search-list-cont'>
<Row>
<Col className='list-input' xl='4' md='4' sm='12'>
<FormGroup className='form-label-group'>
<Input
type='select'
name='select'
size='sm'
id='test'
>
<option>관리자</option>
<option>일반회원</option>
</Input>
<Label for='test'>권한 </Label>
</FormGroup>
</Col>
</Row>
</div>
</div>
</div>
</dt> */}
</dl>
</div>
</CardBody>

92
src/containers/analysis/history/AnalysisHistoryContainer.js

@ -1,5 +1,5 @@
import moment from 'moment';
import { useEffect, useState, useCallback } from 'react';
import dayjs from 'dayjs';
import { useEffect, useState } from 'react';
import { useDispatch, useSelector, shallowEqual } from 'react-redux';
import { Link } from 'react-router-dom';
import { AnalysisHistoryGrid } from '../../../components/analysis/history/AnalysisHistoryGrid';
@ -58,9 +58,6 @@ export const AnalysisHistoryContainer = props => {
// user: 로그인한 user 정보
const { user } = useSelector(state => state.authState, shallowEqual);
// const [isClick, setIsClick] = useState(-1);
// const [dateType, setDateType] = useState(1);
/**
* Modal 초기값 state
*/
@ -76,11 +73,11 @@ export const AnalysisHistoryContainer = props => {
*/
const [params, setParams] = useState({
stDate: selectGroup.stDate
? moment(selectGroup.stDate).format('YYYY-MM-DD')
: moment().subtract(7, 'day').format('YYYY-MM-DD'),
? dayjs(selectGroup.stDate).format('YYYY-MM-DD')
: dayjs().subtract(7, 'day').format('YYYY-MM-DD'),
endDate: selectGroup.endDate
? moment(selectGroup.endDate).format('YYYY-MM-DD')
: moment().subtract(0, 'day').format('YYYY-MM-DD'),
? dayjs(selectGroup.endDate).format('YYYY-MM-DD')
: dayjs().subtract(0, 'day').format('YYYY-MM-DD'),
search1: selectGroup.search1 ? selectGroup.search1 : '',
groupId: selectGroup.groupId ? selectGroup.groupId : ''
});
@ -109,17 +106,12 @@ export const AnalysisHistoryContainer = props => {
const handleGroupSelect = ({ groupId }) => {
// 권한 상관 없이 모두 조회 가능
// const param = params;
// param.groupId = groupId;
dispatch(FlightAction.FLIGHT_PLAN_GROUP_SELECT({ groupId: groupId }));
// groupId sessionStorage에 보관 (1 브라우저 1 tab에만 유효)
sessionStorage.setItem('groupId', groupId);
sessionStorage.setItem('cstmrSno', user.cstmrSno);
// setIsClick(7);
setParams(prevState => ({ ...prevState, groupId }));
dispatch(Actions.LIST_INITAL());
dispatch(
@ -139,7 +131,6 @@ export const AnalysisHistoryContainer = props => {
search1: ''
})
);
// setIsClick(0);
};
const titleName = '비행이력 현황';
@ -159,7 +150,7 @@ export const AnalysisHistoryContainer = props => {
minWidth: '102px',
// sortable: true,
cell: row => {
return <div>{moment(row?.cntrlStDt).format('YYYY년 MM월DD일')}</div>;
return <div>{dayjs(row?.cntrlStDt).format('YYYY년 MM월 DD일')}</div>;
}
},
@ -187,57 +178,18 @@ export const AnalysisHistoryContainer = props => {
minWidth: '102px',
sortable: true,
cell: row => {
return <div>{moment(row?.cntrlStDt).format('DD일 HH:mm:ss')}</div>;
return <div>{dayjs(row?.cntrlStDt).format('DD일 HH:mm:ss')}</div>;
}
},
// {
// name: '종료위치',
// selector: 'cntrlStDate',
// minWidth: '102px',
// sortable: true,
// cell: row => {
// return <div>{row.endArea}</div>;
// }
// },
{
name: '종료시간',
selector: row => row.cntrlEndDt,
minWidth: '102px',
sortable: true,
cell: row => {
return <div>{moment(row?.cntrlEndDt).format('DD일 HH:mm:ss')}</div>;
return <div>{dayjs(row?.cntrlEndDt).format('DD일 HH:mm:ss')}</div>;
}
},
// ,
// {
// name: '거리',
// selector: 'cntrlStDate',
// minWidth: '102px',
// sortable: true,
// cell: row => {
// return (
// <div>
// {' '}
// {row.ttlDstnc}
// {row.ttlDstncType}
// </div>
// );
// }
// },
// {
// name: '시간',
// selector: 'cntrlStDate',
// minWidth: '102px',
// sortable: true,
// cell: row => {
// return (
// <div>
// {row.ttlTime} {row.ttlTimeType}
// </div>
// );
// }
// },
{
name: '이력보기',
selector: row => row.cntrlStDate,
@ -268,7 +220,6 @@ export const AnalysisHistoryContainer = props => {
color: 'modal-danger'
});
} else {
// dispatch(Actions.LIST_INITAL());
dispatch(FlightAction.FLIGHT_PLAN_GROUP_SELECT({ ...params }));
dispatch(Actions.list.request({ searchParams: params, page: 1 }));
}
@ -283,22 +234,19 @@ export const AnalysisHistoryContainer = props => {
if (val.length == 2) {
setParams({
...params,
stDate: moment(val[0]).format('YYYY-MM-DD'),
endDate: moment(val[1]).format('YYYY-MM-DD')
stDate: dayjs(val[0]).format('YYYY-MM-DD'),
endDate: dayjs(val[1]).format('YYYY-MM-DD')
});
// setIsClick(-1);
}
}
};
// 최근 1일, 최근 7일... 탭 click handler
const handlerClickDate = val => {
// setDateType(val);
// setIsClick(val);
setParams(prev => ({
...prev,
stDate: moment().subtract(val, 'day').format('YYYY-MM-DD'),
endDate: moment().subtract(0, 'day').format('YYYY-MM-DD')
stDate: dayjs().subtract(val, 'day').format('YYYY-MM-DD'),
endDate: dayjs().subtract(0, 'day').format('YYYY-MM-DD')
}));
};
@ -309,19 +257,8 @@ export const AnalysisHistoryContainer = props => {
return (
<CustomMainLayout title={titleName}>
{/* <div className='pal-card-box'> */}
<div className='pal-card-box'>
<Row>
{/* <Col sm='4'>
<FlightPlanGroupGrid
data={joinList}
count={joinListCount}
selectGroup={selectGroup}
handleGroupSelect={handleGroupSelect}
handlerGroupCancel={handlerGroupCancel}
/>
</Col> */}
{/* <Col sm='4'> */}
{/* 그룹목록 */}
<Col sm='12' lg='12'>
{user ? (
@ -355,14 +292,11 @@ export const AnalysisHistoryContainer = props => {
params={params}
onKeyPress={onKeyPress}
setParams={setParams}
// isClick={isClick}
// dateType={dateType}
handlerClickDate={handlerClickDate}
searchData={params}
/>
</>
) : (
// <div className='no-dataTable'>
<div className='mt-2 no-dataTable'>
그룹 목록에서 상세보기를 클릭하세요.
</div>

25
src/containers/analysis/history/AnalysisHistoryDetailContainer.js

@ -1,4 +1,4 @@
import moment from 'moment';
import dayjs from 'dayjs';
import { useEffect } from 'react';
import { useDispatch, useSelector } from 'react-redux';
import { useParams } from 'react-router-dom';
@ -25,21 +25,6 @@ export const AnalysisHistoryDetailContainer = () => {
dispatch(Actions.detail.request(id));
};
const handlerInput = (type, val) => {
if (type === 'search1') {
setParams({ ...params, search1: val });
}
if (type === 'searchDate') {
if (val.length == 2) {
setParams({
...params,
stDate: moment(val[0]).format('YYYY-MM-DD'),
endDate: moment(val[1]).format('YYYY-MM-DD')
});
}
}
};
const excelHeaders = [
{ label: '시간', key: 'srvrRcvDt' },
{ label: '위도', key: 'lat' },
@ -57,7 +42,7 @@ export const AnalysisHistoryDetailContainer = () => {
selector: row => row.cntrlStDate,
cell: row => {
return <div>{moment(row?.srvrRcvDt).format('DD일 HH:mm:ss')}</div>;
return <div>{dayjs(row?.srvrRcvDt).format('DD일 HH:mm:ss')}</div>;
}
},
@ -139,12 +124,6 @@ export const AnalysisHistoryDetailContainer = () => {
return (
<CustomDetailLayout title={titleName}>
{/* <AnalysisHistoryDetailSearch
handlerInput={handlerInput}
handlerSearch={handlerSearch}
// params={params}
// setDateType={setDateType}
/> */}
{/* 비행이력 로그 Chart */}
<AnalysisHistoryDetailStatic data={log} />

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

@ -1,4 +1,4 @@
import moment from 'moment';
import dayjs from 'dayjs';
import { useEffect, useState, useCallback, useRef } from 'react';
import { useDispatch, useSelector } from 'react-redux';
import { AnalysisSimulationDetail } from '../../../components/analysis/simulation/AnalysisSimulationDetail';
@ -77,8 +77,8 @@ export const AnalysisSimulationContainer = props => {
const [countArray, setCountArray] = useState([]);
// 검색 데이터
const [params, setParams] = useState({
stDate: moment().subtract(1, 'day').format('YYYY-MM-DD'),
endDate: moment().subtract(0, 'day').format('YYYY-MM-DD'),
stDate: dayjs().subtract(1, 'day').format('YYYY-MM-DD'),
endDate: dayjs().subtract(0, 'day').format('YYYY-MM-DD'),
search1: ''
});
@ -86,7 +86,7 @@ export const AnalysisSimulationContainer = props => {
useEffect(() => {
if (isPlay) {
const countCheck = log.map(item =>
moment(item?.srvrRcvDt).diff(moment(log[0]?.srvrRcvDt), 'seconds')
dayjs(item?.srvrRcvDt).diff(dayjs(log[0]?.srvrRcvDt), 'second')
);
setCountArray(countCheck);
@ -110,18 +110,18 @@ export const AnalysisSimulationContainer = props => {
}
setInfo({ ...log[playCount], playCount, playCounts });
if (log[playCount]?.srvrRcvDt) {
setTimeCd(moment(log[playCount]?.srvrRcvDt).format('HH:mm'));
setTimeCd(dayjs(log[playCount]?.srvrRcvDt).format('HH:mm'));
}
playCounts = moment(log[playCount]?.srvrRcvDt).diff(
moment(log[0]?.srvrRcvDt),
'seconds'
playCounts = dayjs(log[playCount]?.srvrRcvDt).diff(
dayjs(log[0]?.srvrRcvDt),
'second'
);
setDronLength(
moment(log[log.length - 1]?.srvrRcvDt).diff(
moment(log[0]?.srvrRcvDt),
'seconds'
dayjs(log[log.length - 1]?.srvrRcvDt).diff(
dayjs(log[0]?.srvrRcvDt),
'second'
)
);
playCount++;
@ -172,7 +172,7 @@ export const AnalysisSimulationContainer = props => {
playCount = index;
setInfo({ ...log[playCount], playCount, playCounts });
if (log[playCount]?.srvrRcvDt) {
setTimeCd(moment(log[playCount]?.srvrRcvDt).format('HH:mm'));
setTimeCd(dayjs(log[playCount]?.srvrRcvDt).format('HH:mm'));
}
}
}, [sliderCount]);
@ -216,8 +216,8 @@ export const AnalysisSimulationContainer = props => {
if (val.length == 2) {
setParams({
...params,
stDate: moment(val[0]).format('YYYY-MM-DD'),
endDate: moment(val[1]).format('YYYY-MM-DD')
stDate: dayjs(val[0]).format('YYYY-MM-DD'),
endDate: dayjs(val[1]).format('YYYY-MM-DD')
});
}
}

1
src/containers/basis/dron/BasisDronContainer.js

@ -1,4 +1,3 @@
import moment from 'moment';
import { useEffect, useState } from 'react';
import { shallowEqual, useDispatch, useSelector } from 'react-redux';
import { useHistory, Link } from 'react-router-dom';

Loading…
Cancel
Save