From f543e4df8d0eb5144cf13f16ee21dc923cdf8b68 Mon Sep 17 00:00:00 2001
From: Junjie <DELL@qq.com>
Date: 星期二, 02 十二月 2025 12:47:40 +0800
Subject: [PATCH] #

---
 src/main/webapp/views/watch/console2.html |   49 ++++++++++++++++++++++++++++++++-----------------
 1 files changed, 32 insertions(+), 17 deletions(-)

diff --git a/src/main/webapp/views/watch/console2.html b/src/main/webapp/views/watch/console2.html
index ead3743..1d4560d 100644
--- a/src/main/webapp/views/watch/console2.html
+++ b/src/main/webapp/views/watch/console2.html
@@ -85,6 +85,7 @@
     let pixiStaMap = new Map();
     let pixiCrnMap = new Map();
     let pixiShelfMap = new Map();
+    let pixiTrackMap = new Map();
     let objectsContainer;
     let objectsContainer2;
     let graphicsShelf;
@@ -334,38 +335,42 @@
           pixiStaMap = new Map();//閲嶇疆
           objectsContainer.removeChildren()
 
-          let bayWidthList = this.initWidth(map)
-          map.forEach((item, index) => {
-            for(let idx = 0;idx < item.length;idx++){
-              let val = item[idx];
-              if(val.cellWidth == undefined || val.cellWidth === ''){
-                val.cellWidth = bayWidthList[idx];
-              }
-            }
-          })
-
           let bayHeightList = this.initHeight(map);
+          let bayWidthList = this.initWidth(map)
           map.forEach((item, index) => {
             for(let idx = 0;idx < item.length;idx++){
               let val = item[idx];
               if(val.cellHeight == undefined || val.cellHeight === ''){
                 val.cellHeight = bayHeightList[index];
               }
+              if(val.cellWidth == undefined || val.cellWidth === ''){
+                val.cellWidth = bayWidthList[idx];
+              }
             }
           })
 
-          map.forEach((item, index) => {
-            for(let idx = 0;idx < item.length;idx++){
-              let val = item[idx];
-              // 璁$畻鍚堝苟鍗曞厓鏍肩殑瀹為檯瀹介珮
+          const rowHeightScaled = bayHeightList.map(h => (h != null && h !== -1) ? (h / 8) : (height));
+          let yOffsets = [];
+          let yCursor = 0;
+          for (let r = 0; r < map.length; r++) {
+            yOffsets[r] = yCursor;
+            yCursor += (rowHeightScaled[r] || 0);
+          }
+
+          map.forEach((row, rowIndex) => {
+            let xCursor = 0;
+            for (let colIndex = 0; colIndex < row.length; colIndex++) {
+              let val = row[colIndex];
               let cellWidth = val.cellWidth / 40;
               let cellHeight = val.cellHeight / 8;
 
               val.width = cellWidth;
               val.height = cellHeight;
 
-              val.posX = idx * cellWidth;
-              val.posY = index * cellHeight;
+              val.posX = xCursor;
+              val.posY = yOffsets[rowIndex];
+
+              xCursor += cellWidth;
             }
           })
 
@@ -663,6 +668,16 @@
       return new PIXI.Sprite(texture);
     }
 
+    function createTrackSprite(width, height) {
+      let idx = width + "-" + height;
+      let texture = pixiTrackMap.get(idx);
+      if (texture == undefined) {
+        texture = createTrackTexture(width, height);
+        pixiTrackMap.set(idx, texture);
+      }
+      return new PIXI.Sprite(texture);
+    }
+
     function getContainer(type, width, height) {
       let graphics = new PIXI.Graphics();
       let drawBorder = true;
@@ -782,7 +797,7 @@
         }
       } else if (item.type == 'crn') {
         if (getDeviceNo(value) == -1) {
-          sprite = new PIXI.Sprite(graphicsCrnTrack);
+          sprite = createTrackSprite(item.width, item.height);
           sprite.zIndex = 0;
         } else {
           sprite = new PIXI.Sprite(graphicsCrn);

--
Gitblit v1.9.1