| | |
| | | // MapSearch.js |
| | | import React, { useState, useEffect } from 'react'; |
| | | import { |
| | | Select, |
| | |
| | | { key: DEVICE_TYPE.AGV, id: 'page.map.devices.agv' }, |
| | | { key: DEVICE_TYPE.STATION, id: 'page.map.devices.station' }, |
| | | { key: DEVICE_TYPE.POINT, id: 'page.map.devices.point' }, |
| | | // 添加其他设备类型 |
| | | // ... other devices |
| | | ]; |
| | | |
| | | return deviceTypes.map(({ key, id }) => ({ |
| | |
| | | setMode, |
| | | dataFetched, |
| | | curZone, |
| | | curSprite, |
| | | setCurSprite, |
| | | setSpriteSettings, |
| | | } = props; |
| | | |
| | | const theme = useTheme(); |
| | |
| | | }, [curDeviceType, dataFetched, curZone]); |
| | | |
| | | useEffect(() => { |
| | | if (!curSprite) { |
| | | resetSearch(); |
| | | } |
| | | }, [curSprite]); |
| | | |
| | | useEffect(() => { |
| | | if (!Tool.getMapContainer()) return; |
| | | if (inputValue !== '' && deviceList.length > 0) { |
| | | setFilterDeviceList( |
| | |
| | | Tool.focusSprite(selectSprite); |
| | | } |
| | | switch (mode) { |
| | | case MAP_MODE.OBSERVER_MODE: |
| | | setCurSprite(selectSprite); |
| | | break; |
| | | // case MAP_MODE.OBSERVER_MODE: |
| | | // case MAP_MODE.SETTINGS_MODE: |
| | | // break; |
| | | case MAP_MODE.MOVABLE_MODE: |
| | | setMode(MAP_MODE.SETTINGS_MODE); |
| | | setTimeout(() => { |
| | | setSpriteSettings(selectSprite); |
| | | setCurSprite(selectSprite); |
| | | }, 200); |
| | | break; |
| | | case MAP_MODE.SETTINGS_MODE: |
| | | setSpriteSettings(selectSprite); |
| | | break; |
| | | default: |
| | | setCurSprite(selectSprite); |
| | | break; |
| | | } |
| | | }; |
| | |
| | | size="small" |
| | | options={filterDeviceList} |
| | | getOptionLabel={(option) => option.value} |
| | | renderOption={(props, option) => { |
| | | const { key, ...otherProps } = props; |
| | | renderOption={(optionProps, option) => { |
| | | const { key, ...otherProps } = optionProps; |
| | | return ( |
| | | <li key={Number(key)} {...otherProps}> |
| | | <li key={option.uuid} {...otherProps}> |
| | | <Stack direction="row" justifyContent="space-between" width="100%"> |
| | | <Typography variant="body1" fontWeight="bold"> |
| | | {option.label} |
| | |
| | | onClick={() => { |
| | | setInputValue(''); |
| | | setSelectedOption(null); |
| | | setCurSprite(null); |
| | | }} |
| | | > |
| | | <CloseIcon fontSize="small" /> |