| | |
| | | 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 ( |
| | | <> |
| | | <h1>Fuck</h1> |
| | | <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; |