| | |
| | | const AgvShowContent = (props) => { |
| | | const { record, isPending } = useShowContext(); |
| | | const theme = useTheme(); |
| | | const [online, setOnline] = useState(false); |
| | | |
| | | useEffect(() => { |
| | | if (record) { |
| | | setOnline(record.online) |
| | | } |
| | | }, [record]) |
| | | |
| | | if (isPending || !record) return null; |
| | | |
| | | return ( |
| | |
| | | <Stack direction='row'> |
| | | <Box mt={.8} mr={2}> |
| | | <PulseSignal |
| | | flag={record.online} |
| | | flag={online} |
| | | width={10} |
| | | negative={!record.online} |
| | | /> |
| | | </Box> |
| | | <Typography |
| | |
| | | }} |
| | | > |
| | | <TabbedShowLayout.Tab label="page.agv.show.tabs.detail"> |
| | | <AgvShowDetail agvId={record.id} /> |
| | | <AgvShowDetail agvId={record.id} setOnline={setOnline} /> |
| | | </TabbedShowLayout.Tab> |
| | | <TabbedShowLayout.Tab label="page.agv.show.tabs.task" path="tasks"> |
| | | <AgvShowTask agvId={record.id} /> |
| | |
| | | const GRID_CONTAINER_MAX_WIDTH = '100%'; |
| | | |
| | | export const AgvShowDetail = (props) => { |
| | | const { agvId } = props; |
| | | const { agvId, setOnline } = props; |
| | | const [record, setRecord] = useState(null); |
| | | const resource = useResourceContext(); |
| | | |
| | | useEffect(() => { |
| | | const http = async (agvId) => { |
| | | if (agvId) { |
| | | const res = await request.get(resource + '/' + agvId); |
| | | const { code, msg, data } = res.data; |
| | | if (code === 200) { |
| | | setOnline(data.online); |
| | | setRecord(data); |
| | | } else { |
| | | setRecord(null); |
| | | } |
| | | } |
| | | if (agvId) { |
| | | http(agvId); |
| | | } |
| | | const intervalId = setInterval(() => { |
| | | http(agvId); |
| | | }, 1000); |
| | | http(agvId); |
| | | return () => clearInterval(intervalId); |
| | | }, [agvId]); |
| | | |
| | | if (!record) { |