import React, { useState, useRef, useEffect, useMemo, useCallback } from "react";
|
import { useNavigate } from 'react-router-dom';
|
import {
|
ListBase,
|
TopToolbar,
|
FilterButton,
|
useListContext,
|
TextInput,
|
ReferenceInput,
|
AutocompleteInput,
|
ListToolbar,
|
Title,
|
} from 'react-admin';
|
import { matchPath, useLocation } from 'react-router';
|
import { Box, Typography, Card, Stack, LinearProgress } from '@mui/material';
|
import { styled } from '@mui/material/styles';
|
import * as Common from '@/utils/common';
|
import MissionShow from "./MissionShow";
|
import { MissionListContent } from "./MissionListContent";
|
import EmptyDataLoader from "../components/EmptyDataLoader";
|
import MissionResend from "./MissionResend";
|
|
const MissionList = () => {
|
|
return (
|
<>
|
<ListBase
|
perPage={100}
|
filter={{
|
}}
|
>
|
<MissionLayout />
|
</ListBase>
|
</>
|
)
|
}
|
|
const filters = [
|
<ReferenceInput source="agvId" label="table.field.segment.agvId" reference="agv" alwaysOn>
|
<AutocompleteInput label="table.field.segment.agvId" optionText="uuid" filterToQuery={(val) => ({ uuid: val })} />
|
</ReferenceInput>,
|
<TextInput source="groupNo" label="table.field.segment.groupId" />,
|
];
|
|
const MissionLayout = () => {
|
const location = useLocation();
|
const matchShow = matchPath('/mission/:id/show', location.pathname);
|
const matchResend = matchPath('/mission/:id/resend', location.pathname);
|
|
const { data, isPending, filterValues } = useListContext();
|
const hasFilters = filterValues && Object.keys(filterValues).length > 0;
|
|
if (isPending) return <LinearProgress />;
|
if (!data?.length && !hasFilters) {
|
return (
|
<>
|
<EmptyDataLoader>
|
<MissionShow open={!!matchShow} groupNo={matchShow?.params.id} />
|
</EmptyDataLoader>
|
</>
|
);
|
}
|
|
return (
|
<Stack component="div" sx={{ width: '100%' }}>
|
<Title title={'menu.mission'} />
|
<ListToolbar filters={filters} actions={(
|
<TopToolbar>
|
<FilterButton />
|
</TopToolbar>
|
)} />
|
<Card>
|
<MissionListContent />
|
</Card>
|
<MissionShow open={!!matchShow} id={matchShow?.params.id} />
|
<MissionResend open={!!matchResend} id={matchResend?.params.id} />
|
</Stack>
|
);
|
}
|
|
export default MissionList;
|