From b744aa62df05ac542cd065295a674bcb84530818 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期四, 14 三月 2024 13:18:16 +0800
Subject: [PATCH] #

---
 zy-asrs-flow/src/pages/map/index.jsx |   95 +++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 82 insertions(+), 13 deletions(-)

diff --git a/zy-asrs-flow/src/pages/map/index.jsx b/zy-asrs-flow/src/pages/map/index.jsx
index 0a16c21..1b80e20 100644
--- a/zy-asrs-flow/src/pages/map/index.jsx
+++ b/zy-asrs-flow/src/pages/map/index.jsx
@@ -1,7 +1,7 @@
 import * as React from 'react'
 import * as PIXI from 'pixi.js';
 import { FormattedMessage, useIntl, useModel } from '@umijs/max';
-import { Layout, Button, Flex, Row, Col, FloatButton, Select } from 'antd';
+import { Layout, Button, Flex, Row, Col, FloatButton, Select, Spin, AutoComplete } from 'antd';
 const { Header, Content } = Layout;
 import {
     AppstoreAddOutlined,
@@ -15,6 +15,7 @@
 import Settings from './components/settings'
 import * as Utils from './utils'
 import Player from './player';
+import MapDrawer from './drawer';
 
 const useStyles = createStyles(({ token }) => {
     let dark = token.colorBgBase === '#000';
@@ -41,6 +42,9 @@
         select: {
             color: 'red',
             fontWeight: 'bold',
+        },
+        headerCol: {
+            paddingLeft: '50px'
         }
     };
 });
@@ -71,6 +75,7 @@
     const [mapContainer, setMapContainer] = React.useState(null);
     const [didClickSprite, setDidClickSprite] = React.useState(false);
     const [spriteBySettings, setSpriteBySettings] = React.useState(null);
+    const prevSpriteBySettingsRef = React.useRef();
 
     // init func
     React.useEffect(() => {
@@ -97,6 +102,10 @@
         const width = contentRef.current.offsetWidth;
         const height = contentRef.current.offsetHeight;
         app.renderer.resize(width, height);
+        if (model !== MapModel.OBSERVER_MODEL) {
+            player.hideGridlines();
+            player.showGridlines();
+        }
     }, [app, mapContainer, windowSize])
 
     // model
@@ -131,6 +140,7 @@
                 player.activateMapEvent(Utils.MapEvent.SELECTION_BOX);
 
                 Utils.removeSelectedEffect();
+                setSpriteBySettings(null);
                 setSettingsVisible(false);
 
                 mapContainer.children.forEach(child => {
@@ -156,12 +166,12 @@
     }, [model]);
 
     // Add New Device
-    const onDrop = (sprite, x, y) => {
+    const onDrop = (sprite, type, x, y) => {
         const { mapX, mapY } = Utils.getRealPosition(x, y, mapContainer);
         sprite.x = mapX;
         sprite.y = mapY;
 
-        Utils.initSprite(sprite);
+        Utils.initSprite(sprite, type);
         mapContainer.addChild(sprite);
         Utils.beMovable(sprite, setDidClickSprite);
     };
@@ -171,9 +181,14 @@
         player.updateDidClickSprite(didClickSprite);
     }, [didClickSprite])
 
+    // watch spriteBySettings
     React.useEffect(() => {
         if (!mapContainer) {
             return;
+        }
+        prevSpriteBySettingsRef.current = spriteBySettings;
+        if (spriteBySettings && prevSpriteBySettings !== spriteBySettings) {
+            Utils.removeSelectedEffect();
         }
         if (spriteBySettings) {
             Utils.showSelectedEffect(spriteBySettings)
@@ -182,9 +197,12 @@
             Utils.removeSelectedEffect();
         }
     }, [spriteBySettings])
+    const prevSpriteBySettings = prevSpriteBySettingsRef.current;
 
-    const settingsFinish = () => {
-        setSpriteBySettings(null);
+    const settingsFinish = (values, fn) => {
+        fn();
+        // setSettingsVisible(false);
+        // setSpriteBySettings(null);
     }
 
     return (
@@ -192,8 +210,51 @@
             <Layout className={styles.layout}>
                 <Header className={styles.header}>
                     <Row style={{ height: '100%' }}>
-                        <Col span={8} style={{ backgroundColor: '#3C40C6' }}></Col>
-                        <Col span={16} style={{ backgroundColor: '#3C40C6' }}>
+                        <Col className={styles.headerCol} span={12} style={{}}>
+
+                            <Select
+                                className='map-header-select'
+                                variant='filled'
+                                defaultValue="agv"
+                                style={{
+                                    width: 160,
+                                }}
+                                size={'large'}
+                                onChange={(value, option) => {
+                                    console.log(value, option);
+                                }}
+                                options={[
+                                    {
+                                        value: 'agv',
+                                        label: 'agv',
+                                    },
+                                    {
+                                        value: 'crn',
+                                        label: 'crn',
+                                    },
+                                ]}
+                            />
+                            <AutoComplete
+                                className='map-header-select'
+                                variant='filled'
+                                style={{
+                                    width: 360,
+                                }}
+                                size={'large'}
+                                placeholder="Email"
+                                options={[
+                                    {
+                                        value: 'text 1',
+                                    },
+                                    {
+                                        value: 'text 2',
+                                    },
+                                ]}
+                            />
+
+                        </Col>
+                        {/* 3C40C6 */}
+                        <Col span={12} style={{ backgroundColor: '#4a69bd' }}>
                             <Flex className={styles.flex} gap={'large'} justify={'flex-end'} align={'center'}>
                                 <Select
                                     className={styles.select}
@@ -235,19 +296,24 @@
 
                         <FloatButton.Group
                             hidden={model === MapModel.OBSERVER_MODEL}
-                            // trigger="hover"
                             style={{
-                                right: 35,
-                                bottom: 35
+                                left: 35,
+                                bottom: window.innerHeight / 2
                             }}
                             icon={<AppstoreAddOutlined />}
                         >
                             <FloatButton
                                 hidden={model === MapModel.OBSERVER_MODEL}
+                                type={deviceVisible ? 'primary' : 'default'}
                                 tooltip={<div><FormattedMessage id='map.device.add' defaultMessage='娣诲姞璁惧' /></div>}
                                 icon={<FileAddOutlined />}
                                 onClick={() => {
-                                    setDeviceVisible(true);
+                                    if (deviceVisible) {
+                                        setDeviceVisible(false);
+                                    } else {
+                                        setDeviceVisible(true);
+                                        setModel(MapModel.MOVABLE_MODEL);
+                                    }
                                 }}
                             />
                             <FloatButton
@@ -262,7 +328,7 @@
                         </FloatButton.Group>
                     </div>
                 </Content>
-            </Layout>
+            </Layout >
 
             <Edit
                 open={deviceVisible}
@@ -275,12 +341,15 @@
 
             <Settings
                 open={settingsVisible}
+                curSprite={spriteBySettings}
                 onCancel={() => {
                     setSettingsVisible(false);
                     setSpriteBySettings(null);
                 }}
+                setSpriteBySettings={setSpriteBySettings}
+                setDidClickSprite={setDidClickSprite}
                 refCurr={mapRef.current}
-                onDrop={settingsFinish}
+                onSubmit={settingsFinish}
             />
         </>
     )

--
Gitblit v1.9.1