|  |  |  | 
|---|
|  |  |  | import React, { useState, useRef, useEffect } from 'react'; | 
|---|
|  |  |  | import { useTranslate } from "react-admin"; | 
|---|
|  |  |  | import { Box, Typography, Tabs, Tab, Stack, useTheme, Divider } from '@mui/material'; | 
|---|
|  |  |  | // import AgvMain from './AgvMain'; | 
|---|
|  |  |  | import { CUSTOM_PAGES_DATA_INTERVAL } from '@/config/setting'; | 
|---|
|  |  |  | import AgvMain from './AgvMain'; | 
|---|
|  |  |  | import AgvControl from './AgvControl'; | 
|---|
|  |  |  | import JsonShow from '../../JsonShow'; | 
|---|
|  |  |  | import { getAgvInfo } from '../../http'; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const AgvInsight = (props) => { | 
|---|
|  |  |  | const { sprite } = props; | 
|---|
|  |  |  | const theme = useTheme(); | 
|---|
|  |  |  | const themeMode = theme.palette.mode; | 
|---|
|  |  |  | const { sprite, setTitle } = props; | 
|---|
|  |  |  | const translate = useTranslate(); | 
|---|
|  |  |  | const theme = useTheme(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const [activeTab, setActiveTab] = useState(0); | 
|---|
|  |  |  | const [curAgvNo, setCurAgvNo] = useState(null); | 
|---|
|  |  |  | const [curAgvInfo, setCurAgvInfo] = useState(null); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const fetchAgvInfo = (agvNo) => { | 
|---|
|  |  |  | setTitle(translate('page.map.devices.agv') + ' - ' + agvNo); | 
|---|
|  |  |  | setCurAgvNo(agvNo); | 
|---|
|  |  |  | getAgvInfo(agvNo, (response) => { | 
|---|
|  |  |  | setCurAgvInfo(response); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | useEffect(() => { | 
|---|
|  |  |  | let intervalId; | 
|---|
|  |  |  | if (sprite) { | 
|---|
|  |  |  | const agvNo = sprite.data.no; | 
|---|
|  |  |  | if (agvNo) { | 
|---|
|  |  |  | fetchAgvInfo(agvNo); | 
|---|
|  |  |  | intervalId = setInterval(() => { | 
|---|
|  |  |  | fetchAgvInfo(agvNo); | 
|---|
|  |  |  | }, CUSTOM_PAGES_DATA_INTERVAL); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return () => { | 
|---|
|  |  |  | setTitle(null); | 
|---|
|  |  |  | setCurAgvInfo(null); | 
|---|
|  |  |  | if (intervalId) { | 
|---|
|  |  |  | clearInterval(intervalId) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, [sprite]) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const handleTabChange = (event, newValue) => { | 
|---|
|  |  |  | setActiveTab(newValue); | 
|---|
|  |  |  | 
|---|
|  |  |  | sx={{ mb: 0 }} | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <Tab label={translate('page.map.insight.title')} /> | 
|---|
|  |  |  | <Tab label={translate('page.map.insight.tabs.control')} /> | 
|---|
|  |  |  | <Tab label={'JSON'} /> | 
|---|
|  |  |  | </Tabs> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <Box flex={1} pt={2}> | 
|---|
|  |  |  | {activeTab === 0 && ( | 
|---|
|  |  |  | <> | 
|---|
|  |  |  | </> | 
|---|
|  |  |  | // <AgvMain | 
|---|
|  |  |  | //     data={sprite?.data} | 
|---|
|  |  |  | //     curAgvNo={curAgvNo} | 
|---|
|  |  |  | //     setCurAgvNo={setCurAgvNo} | 
|---|
|  |  |  | // /> | 
|---|
|  |  |  | <AgvMain | 
|---|
|  |  |  | curAgvNo={curAgvNo} | 
|---|
|  |  |  | curAgvInfo={curAgvInfo} | 
|---|
|  |  |  | fetchAgvInfo={fetchAgvInfo} | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | )} | 
|---|
|  |  |  | {activeTab === 1 && ( | 
|---|
|  |  |  | <AgvControl | 
|---|
|  |  |  | curAgvNo={curAgvNo} | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | )} | 
|---|
|  |  |  | {activeTab === 2 && ( | 
|---|
|  |  |  | <JsonShow | 
|---|
|  |  |  | data={sprite?.data} | 
|---|
|  |  |  | data={curAgvInfo || sprite?.data} | 
|---|
|  |  |  | height={550} | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | )} | 
|---|